diff -Nrcpad gcc-5.4.0/ChangeLog gcc-5.5.0/ChangeLog
*** gcc-5.4.0/ChangeLog	Fri Jun  3 08:41:59 2016
--- gcc-5.5.0/ChangeLog	Tue Oct 10 08:11:01 2017
***************
*** 1,3 ****
--- 1,19 ----
+ 2017-10-10  Release Manager
+ 
+ 	* GCC 5.5.0 released.
+ 
+ 2017-01-09  Andreas Tobler  <andreast@gcc.gnu.org>
+ 
+ 	Backport from mainline
+ 	2016-10-10  Andreas Tobler <andreast@gcc.gnu.org>
+ 
+ 	* configure.ac: Add aarch64-*-freebsd*.
+ 	* configure: Regenerate.
+ 
+ 2016-08-31  Jakub Sejdak  <jakub.sejdak@phoesys.com>
+ 
+ 	* config.sub: Add support for Phoenix-RTOS targets.
+ 
  2016-06-03  Release Manager
  
  	* GCC 5.4.0 released.
diff -Nrcpad gcc-5.4.0/INSTALL/binaries.html gcc-5.5.0/INSTALL/binaries.html
*** gcc-5.4.0/INSTALL/binaries.html	Fri Jun  3 08:45:08 2016
--- gcc-5.5.0/INSTALL/binaries.html	Tue Oct 10 08:13:25 2017
***************
*** 1,111 ****
! <html lang="en">
! <head>
! <title>Installing GCC: Binaries</title>
! <meta http-equiv="Content-Type" content="text/html">
! <meta name="description" content="Installing GCC: Binaries">
! <meta name="generator" content="makeinfo 4.12">
! <link title="Top" rel="top" href="#Top">
! <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
! <!--
! Copyright (C) 1988-2015 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
  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 "GNU Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
!      A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
!      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.-->
! <meta http-equiv="Content-Style-Type" content="text/css">
! <style type="text/css"><!--
!   pre.display { font-family:inherit }
!   pre.format  { font-family:inherit }
!   pre.smalldisplay { font-family:inherit; font-size:smaller }
!   pre.smallformat  { font-family:inherit; font-size:smaller }
!   pre.smallexample { font-size:smaller }
!   pre.smalllisp    { font-size:smaller }
!   span.sc    { font-variant:small-caps }
!   span.roman { font-family:serif; font-weight:normal; } 
!   span.sansserif { font-family:sans-serif; font-weight:normal; } 
! --></style>
  </head>
! <body>
! <h1 class="settitle">Installing GCC: Binaries</h1>
! <a name="index-Binaries-1"></a><a name="index-Installing-GCC_003a-Binaries-2"></a>
! We are often asked about pre-compiled versions of GCC.  While we cannot
! provide these for all platforms, below you'll find links to binaries for
  various platforms where creating them by yourself is not easy due to various
  reasons.
! 
!    <p>Please note that we did not create these binaries, nor do we
  support them.  If you have any problems installing them, please
  contact their makers.
  
!      <ul>
! <li>AIX:
!           <ul>
! <li><a href="http://www.bullfreeware.com">Bull's Freeware and Shareware Archive for AIX</a>;
! 
!           <li><a href="http://pware.hvcc.edu">Hudson Valley Community College Open Source Software for IBM System p</a>;
  
!           <li><a href="http://www.perzl.org/aix/">AIX 5L and 6 Open Source Packages</a>. 
! </ul>
  
!      <li>DOS&mdash;<a href="http://www.delorie.com/djgpp/">DJGPP</a>.
  
!      <li>Renesas H8/300[HS]&mdash;<a href="http://h8300-hms.sourceforge.net/">GNU Development Tools for the Renesas H8/300[HS] Series</a>.
  
!      <li>HP-UX:
!           <ul>
! <li><a href="http://hpux.connect.org.uk/">HP-UX Porting Center</a>;
  
!           <li><a href="ftp://sunsite.informatik.rwth-aachen.de/pub/packages/gcc_hpux/">Binaries for HP-UX 11.00 at Aachen University of Technology</a>. 
! </ul>
  
!      <li><a href="http://www.sco.com/skunkware/devtools/index.html#gcc">SCO OpenServer/Unixware</a>.
  
!      <li>Solaris 2 (SPARC, Intel):
!           <ul>
! <li><a href="http://www.opencsw.org/">OpenCSW</a>
  
!           <li><a href="http://jupiterrise.com/tgcware/">TGCware</a>
! </ul>
  
!      <li>Microsoft Windows:
!           <ul>
! <li>The <a href="http://sourceware.org/cygwin/">Cygwin</a> project;
! <li>The <a href="http://www.mingw.org/">MinGW</a> project. 
! </ul>
  
!      <li><a href="ftp://ftp.thewrittenword.com/packages/by-name/">The Written Word</a> offers binaries for
  AIX 4.3.3, 5.1 and 5.2,
  GNU/Linux (i386),
  HP-UX 10.20, 11.00, and 11.11, and
  Solaris/SPARC 2.5.1, 2.6, 7, 8, 9 and 10.
  
!      <li><a href="http://www.openpkg.org/">OpenPKG</a> offers binaries for quite a
  number of platforms.
  
!      <li>The <a href="http://gcc.gnu.org/wiki/GFortranBinaries">GFortran Wiki</a> has
! links to GNU Fortran binaries for several platforms. 
! </ul>
  
!    <p><hr />
  <p><a href="./index.html">Return to the GCC Installation page</a>
  
- <!-- ***Specific**************************************************************** -->
- <!-- ***Old documentation****************************************************** -->
- <!-- ***GFDL******************************************************************** -->
- <!-- *************************************************************************** -->
- <!-- Part 6 The End of the Document -->
- </body></html>
  
--- 1,164 ----
! <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
! <html>
! <!-- Copyright (C) 1988-2015 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
  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 "GNU
! Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
! A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
! 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.1, http://www.gnu.org/software/texinfo/ -->
! <head>
! <title>Installing GCC</title>
! 
! <meta name="description" content="Installing GCC">
! <meta name="keywords" content="Installing GCC">
! <meta name="resource-type" content="document">
! <meta name="distribution" content="global">
! <meta name="Generator" content="makeinfo">
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <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>
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! <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
  various platforms where creating them by yourself is not easy due to various
  reasons.
! </p>
! <p>Please note that we did not create these binaries, nor do we
  support them.  If you have any problems installing them, please
  contact their makers.
+ </p>
+ <ul>
+ <li> AIX:
+ <ul>
+ <li> <a href="http://www.bullfreeware.com">Bull&rsquo;s Freeware and Shareware Archive for AIX</a>;
  
! </li><li> <a href="http://pware.hvcc.edu">Hudson Valley Community College Open Source Software for IBM System p</a>;
  
! </li><li> <a href="http://www.perzl.org/aix/">AIX 5L and 6 Open Source Packages</a>.
! </li></ul>
  
! </li><li> DOS&mdash;<a href="http://www.delorie.com/djgpp/">DJGPP</a>.
  
! </li><li> Renesas H8/300[HS]&mdash;<a href="http://h8300-hms.sourceforge.net/">GNU
! Development Tools for the Renesas H8/300[HS] Series</a>.
  
! </li><li> HP-UX:
! <ul>
! <li> <a href="http://hpux.connect.org.uk/">HP-UX Porting Center</a>;
  
! </li><li> <a href="ftp://sunsite.informatik.rwth-aachen.de/pub/packages/gcc_hpux/">Binaries for HP-UX 11.00 at Aachen University of Technology</a>.
! </li></ul>
  
! </li><li> <a href="http://www.sco.com/skunkware/devtools/index.html#gcc">SCO
! OpenServer/Unixware</a>.
  
! </li><li> Solaris 2 (SPARC, Intel):
! <ul>
! <li> <a href="http://www.opencsw.org/">OpenCSW</a>
  
! </li><li> <a href="http://jupiterrise.com/tgcware/">TGCware</a>
! </li></ul>
  
! </li><li> Microsoft Windows:
! <ul>
! <li> The <a href="http://sourceware.org/cygwin/">Cygwin</a> project;
! </li><li> The <a href="http://www.mingw.org/">MinGW</a> project.
! </li></ul>
  
! </li><li> <a href="ftp://ftp.thewrittenword.com/packages/by-name/">The
! Written Word</a> offers binaries for
  AIX 4.3.3, 5.1 and 5.2,
  GNU/Linux (i386),
  HP-UX 10.20, 11.00, and 11.11, and
  Solaris/SPARC 2.5.1, 2.6, 7, 8, 9 and 10.
  
! </li><li> <a href="http://www.openpkg.org/">OpenPKG</a> offers binaries for quite a
  number of platforms.
  
! </li><li> The <a href="http://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>
+ 
  
  
+ 
+ 
+ 
+ 
+ </body>
+ </html>
diff -Nrcpad gcc-5.4.0/INSTALL/build.html gcc-5.5.0/INSTALL/build.html
*** gcc-5.4.0/INSTALL/build.html	Fri Jun  3 08:45:08 2016
--- gcc-5.5.0/INSTALL/build.html	Tue Oct 10 08:13:24 2017
***************
*** 1,385 ****
! <html lang="en">
! <head>
! <title>Installing GCC: Building</title>
! <meta http-equiv="Content-Type" content="text/html">
! <meta name="description" content="Installing GCC: Building">
! <meta name="generator" content="makeinfo 4.12">
! <link title="Top" rel="top" href="#Top">
! <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
! <!--
! Copyright (C) 1988-2015 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
  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 "GNU Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
!      A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
!      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.-->
! <meta http-equiv="Content-Style-Type" content="text/css">
! <style type="text/css"><!--
!   pre.display { font-family:inherit }
!   pre.format  { font-family:inherit }
!   pre.smalldisplay { font-family:inherit; font-size:smaller }
!   pre.smallformat  { font-family:inherit; font-size:smaller }
!   pre.smallexample { font-size:smaller }
!   pre.smalllisp    { font-size:smaller }
!   span.sc    { font-variant:small-caps }
!   span.roman { font-family:serif; font-weight:normal; } 
!   span.sansserif { font-family:sans-serif; font-weight:normal; } 
! --></style>
  </head>
- <body>
- <h1 class="settitle">Installing GCC: Building</h1>
- <a name="index-Installing-GCC_003a-Building-1"></a>
- Now that GCC is configured, you are ready to build the compiler and
- runtime libraries.
  
!    <p>Some commands executed when making the compiler may fail (return a
! nonzero status) and be ignored by <samp><span class="command">make</span></samp>.  These failures, which
  are often due to files that were not found, are expected, and can safely
  be ignored.
! 
!    <p>It is normal to have compiler warnings when compiling certain files. 
  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
! <samp><span class="option">--disable-werror</span></samp>.
! 
!    <p>On certain old systems, defining certain environment variables such as
! <samp><span class="env">CC</span></samp> can interfere with the functioning of <samp><span class="command">make</span></samp>.
! 
!    <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 the compiler in the source
  directory.  Make sure you have done all the necessary preparations.
! 
!    <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 <samp><span class="command">fixincludes</span></samp> if the
! System V file system doesn't support symbolic links.  These problems
  result in a failure to fix the declaration of <code>size_t</code> in
! <samp><span class="file">sys/types.h</span></samp>.  If you find that <code>size_t</code> is a signed type and
  that type mismatches occur, this could be the cause.
! 
!    <p>The solution is not to use such a directory for building GCC.
! 
!    <p>Similarly, when building from SVN or snapshots, or if you modify
! <samp><span class="file">*.l</span></samp> files, you need the Flex lexical analyzer generator
! installed.  If you do not modify <samp><span class="file">*.l</span></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
  build the C front end.
! 
!    <p>When building from SVN or snapshots, or if you modify Texinfo
  documentation, you need version 4.7 or later of Texinfo installed if you
  want Info documentation to be regenerated.  Releases contain Info
  documentation pre-built for the unmodified documentation in the release.
! 
! <h3 class="section"><a name="TOC0"></a>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><span class="samp">make</span></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><span class="option">--disable-bootstrap</span></samp>
! parameter to &lsquo;<samp><span class="samp">configure</span></samp>&rsquo;, but bootstrapping is suggested because
  the compiler will be tested more completely and could also have
  better performance.
  
!    <p>The bootstrapping process will complete the following steps:
! 
!      <ul>
! <li>Build tools necessary to build the compiler.
! 
!      <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>Perform a comparison test of the stage2 and stage3 compilers.
  
!      <li>Build runtime libraries using the stage3 compiler from the previous step.
  
!    </ul>
  
!    <p>If you are short on disk space you might consider &lsquo;<samp><span class="samp">make
! bootstrap-lean</span></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>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><span class="samp">make</span></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.)
  
! <pre class="smallexample">     make BOOT_CFLAGS='-O' bootstrap
! </pre>
!    <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><span class="samp">-g -O2</span></samp>&rsquo;, but should
  still work.  In a few cases, you may find that you need to specify special
! flags such as <samp><span class="option">-msoft-float</span></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><span class="samp">make
! bootstrap4</span></samp>&rsquo; to increase the number of stages of bootstrap.
! 
!    <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>If you used the flag <samp><span class="option">--enable-languages=...</span></samp> 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 <samp><span class="env">LANGUAGES</span></samp> when calling &lsquo;<samp><span class="samp">make</span></samp>&rsquo;
  <strong>does not</strong> work anymore!
! 
!    <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><span class="file">Makefile</span></samp>.)
! 
!    <p>If you do not want to bootstrap your compiler, you can configure with
! <samp><span class="option">--disable-bootstrap</span></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><span class="option">--enable-bootstrap</span></samp> to the configure script.
! 
!    <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><span class="file">config/</span><code>NAME</code><span class="file">.mk</span></samp> will
! be included by the top-level <samp><span class="file">Makefile</span></samp>, bringing in any settings
  it contains.  The default <code>BUILD_CONFIG</code> can be set using the
! configure option <samp><span class="option">--with-build-config=</span><code>NAME</code><span class="option">...</span></samp>.  Some
  examples of supported build configurations are:
! 
!      <dl>
! <dt>&lsquo;<samp><span class="samp">bootstrap-O1</span></samp>&rsquo;<dd>Removes any <samp><span class="option">-O</span></samp>-started option from <code>BOOT_CFLAGS</code>, and adds
! <samp><span class="option">-O1</span></samp> to it.  &lsquo;<samp><span class="samp">BUILD_CONFIG=bootstrap-O1</span></samp>&rsquo; is equivalent to
! &lsquo;<samp><span class="samp">BOOT_CFLAGS='-g -O1'</span></samp>&rsquo;.
! 
!      <br><dt>&lsquo;<samp><span class="samp">bootstrap-O3</span></samp>&rsquo;<dd>Analogous to <code>bootstrap-O1</code>.
! 
!      <br><dt>&lsquo;<samp><span class="samp">bootstrap-lto</span></samp>&rsquo;<dd>Enables Link-Time Optimization for host tools during bootstrapping. 
! &lsquo;<samp><span class="samp">BUILD_CONFIG=bootstrap-lto</span></samp>&rsquo; is equivalent to adding
! <samp><span class="option">-flto</span></samp> to &lsquo;<samp><span class="samp">BOOT_CFLAGS</span></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).
! 
!      <br><dt>&lsquo;<samp><span class="samp">bootstrap-lto-noplugin</span></samp>&rsquo;<dd>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><span class="file">libbackend.a</span></samp> this means
  that only the front end is actually LTO optimized.
! 
!      <br><dt>&lsquo;<samp><span class="samp">bootstrap-debug</span></samp>&rsquo;<dd>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><span class="file">contrib/compare-debug</span></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'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.
! 
!      <br><dt>&lsquo;<samp><span class="samp">bootstrap-debug-big</span></samp>&rsquo;<dd>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><span class="samp">bootstrap-debug</span></samp>&rsquo;.
! 
!      <br><dt>&lsquo;<samp><span class="samp">bootstrap-debug-lean</span></samp>&rsquo;<dd>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><span class="option">-fcompare-debug</span></samp> to generate, compare and remove the dumps
  during stage3, repeating the compilation that already took place in
  stage2, whose dumps were not saved.
! 
!      <br><dt>&lsquo;<samp><span class="samp">bootstrap-debug-lib</span></samp>&rsquo;<dd>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><span class="option">-fcompare-debug</span></samp>, and it can be used along with any of the
  <code>bootstrap-debug</code> options above.
! 
!      <p>There aren'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't want to
  compile stage2 libraries with different options for comparison purposes.
! 
!      <br><dt>&lsquo;<samp><span class="samp">bootstrap-debug-ckovw</span></samp>&rsquo;<dd>Arranges for error messages to be issued if the compiler built on any
! stage is run without the option <samp><span class="option">-fcompare-debug</span></samp>.  This is
! useful to verify the full <samp><span class="option">-fcompare-debug</span></samp> testing coverage.  It
  must be used along with <code>bootstrap-debug-lean</code> and
  <code>bootstrap-debug-lib</code>.
! 
!      <br><dt>&lsquo;<samp><span class="samp">bootstrap-time</span></samp>&rsquo;<dd>Arranges for the run time of each program started by the GCC driver,
! built in any stage, to be logged to <samp><span class="file">time.log</span></samp>, in the top level of
  the build tree.
  
!    </dl>
! 
! <h3 class="section"><a name="TOC1"></a>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
  as parts of GCC can only be built with GCC.
! 
!    <p>To build a cross compiler, we recommend first building and installing a
  native compiler.  You can then use the native GCC compiler to build the
  cross compiler.  The installed native compiler needs to be GCC version
  2.95 or later.
! 
!    <p>If the cross compiler is to be built with support for the Java
  programming language and the ability to compile .java source files is
  desired, the installed native compiler used to build the cross
  compiler needs to be the same GCC version as the cross compiler.  In
  addition the cross compiler needs to be configured with
! <samp><span class="option">--with-ecj-jar=...</span></samp>.
! 
!    <p>Assuming you have already installed a native copy of GCC and configured
! your cross compiler, issue the command <samp><span class="command">make</span></samp>, which performs the
  following steps:
  
!      <ul>
! <li>Build host tools necessary to build the compiler.
! 
!      <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>Build the compiler (single stage only).
! 
!      <li>Build runtime libraries using the compiler from the previous step. 
! </ul>
  
!    <p>Note that if an error occurs in any step the make process will exit.
  
!    <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><span class="file">/</span><var>target</var><span class="file">/bin</span></samp>.  Here is a table of the tools
  you should put in this directory:
! 
!      <dl>
! <dt><samp><span class="file">as</span></samp><dd>This should be the cross-assembler.
! 
!      <br><dt><samp><span class="file">ld</span></samp><dd>This should be the cross-linker.
! 
!      <br><dt><samp><span class="file">ar</span></samp><dd>This should be the cross-archiver: a program which can manipulate
! archive files (linker libraries) in the target machine's format.
! 
!      <br><dt><samp><span class="file">ranlib</span></samp><dd>This should be a program to construct a symbol table in an archive file. 
  </dl>
  
!    <p>The installation of GCC will find these programs in that directory,
  and copy or link them to the proper place to for the cross-compiler to
  find them when run later.
! 
!    <p>The easiest way to provide these files is to build the Binutils package. 
! Configure it with the same <samp><span class="option">--host</span></samp> and <samp><span class="option">--target</span></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.
! 
!    <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><span class="option">--with-sysroot</span></samp> or <samp><span class="option">--with-headers</span></samp> and
! <samp><span class="option">--with-libs</span></samp>.  Many targets also require &ldquo;start files&rdquo; such
! as <samp><span class="file">crt0.o</span></samp> and
! <samp><span class="file">crtn.o</span></samp> which are linked into each executable.  There may be several
! alternatives for <samp><span class="file">crt0.o</span></samp>, for use with profiling or other
! compilation options.  Check your target's definition of
  <code>STARTFILE_SPEC</code> to find out what start files it uses.
! 
! <h3 class="section"><a name="TOC2"></a>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><span class="samp">make -j 2</span></samp>&rsquo;
! instead of &lsquo;<samp><span class="samp">make</span></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.
! 
! <h3 class="section"><a name="TOC3"></a>Building the Ada compiler</h3>
  
  <p>In order to build GNAT, the Ada compiler, you need a working GNAT
! compiler (GCC version 4.0 or later). 
! This includes GNAT tools such as <samp><span class="command">gnatmake</span></samp> and
! <samp><span class="command">gnatlink</span></samp>, since the Ada front end is written in Ada and
  uses some GNAT-specific extensions.
! 
!    <p>In order to build a cross compiler, it is suggested to install
  the new compiler as native first, and then use it to build the cross
  compiler.
! 
!    <p><samp><span class="command">configure</span></samp> does not test whether the GNAT installation works
  and has a sufficiently recent version; if too old a GNAT version is
! installed, the build will fail unless <samp><span class="option">--enable-languages</span></samp> is
  used to disable building the Ada front end.
! 
!    <p><samp><span class="env">ADA_INCLUDE_PATH</span></samp> and <samp><span class="env">ADA_OBJECT_PATH</span></samp> 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><span class="samp">gnatls -v</span></samp>&rsquo; lists only one explicit path in each
  section.
! 
! <h3 class="section"><a name="TOC4"></a>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>When &lsquo;<samp><span class="samp">make profiledbootstrap</span></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.  Then runtime libraries are compiled with profile collected. 
  Finally a <code>stagefeedback</code> compiler is built using the information collected.
! 
!    <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><hr />
  <p><a href="./index.html">Return to the GCC Installation page</a>
  
- <!-- ***Testing***************************************************************** -->
- <!-- ***Final install*********************************************************** -->
- <!-- ***Binaries**************************************************************** -->
- <!-- ***Specific**************************************************************** -->
- <!-- ***Old documentation****************************************************** -->
- <!-- ***GFDL******************************************************************** -->
- <!-- *************************************************************************** -->
- <!-- Part 6 The End of the Document -->
- </body></html>
  
--- 1,467 ----
! <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
! <html>
! <!-- Copyright (C) 1988-2015 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
  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 "GNU
! Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
! A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
! 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.1, http://www.gnu.org/software/texinfo/ -->
! <head>
! <title>Installing GCC</title>
! 
! <meta name="description" content="Installing GCC">
! <meta name="keywords" content="Installing GCC">
! <meta name="resource-type" content="document">
! <meta name="distribution" content="global">
! <meta name="Generator" content="makeinfo">
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <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>
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! <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>
! <p>It is normal to have compiler warnings when compiling certain files.
  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
! <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
  because you have previously configured the compiler in the source
  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 SVN 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
  build the C front end.
! </p>
! <p>When building from SVN or snapshots, or if you modify Texinfo
  documentation, you need version 4.7 or later of Texinfo installed if you
  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>
! <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-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-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>
+ </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
  as parts of GCC can only be built with GCC.
! </p>
! <p>To build a cross compiler, we recommend first building and installing a
  native compiler.  You can then use the native GCC compiler to build the
  cross compiler.  The installed native compiler needs to be GCC version
  2.95 or later.
! </p>
! <p>If the cross compiler is to be built with support for the Java
  programming language and the ability to compile .java source files is
  desired, the installed native compiler used to build the cross
  compiler needs to be the same GCC version as the cross compiler.  In
  addition the cross compiler needs to be configured with
! <samp>--with-ecj-jar=&hellip;</samp>.
! </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.
! </p>
! <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>
  
! <p>The installation of GCC will find these programs in that directory,
  and copy or link them to the proper place to for the cross-compiler to
  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
  supports.
! </p>
! <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>In order to build GNAT, the Ada compiler, you need a working GNAT
! compiler (GCC version 4.0 or later).
! 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 suggested to install
  the new compiler as native first, and then use it to build the cross
  compiler.
! </p>
! <p><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, the build will fail unless <samp>--enable-languages</samp> is
  used to disable building the Ada front end.
! </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="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.  Then runtime libraries are compiled with profile collected.
  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>
! <hr />
! <p>
  <p><a href="./index.html">Return to the GCC Installation page</a>
+ </p>
+ 
+ 
+ 
  
  
+ 
+ 
+ <hr>
+ 
+ 
+ 
+ </body>
+ </html>
diff -Nrcpad gcc-5.4.0/INSTALL/configure.html gcc-5.5.0/INSTALL/configure.html
*** gcc-5.4.0/INSTALL/configure.html	Fri Jun  3 08:45:08 2016
--- gcc-5.5.0/INSTALL/configure.html	Tue Oct 10 08:13:24 2017
***************
*** 1,1501 ****
! <html lang="en">
! <head>
! <title>Installing GCC: Configuration</title>
! <meta http-equiv="Content-Type" content="text/html">
! <meta name="description" content="Installing GCC: Configuration">
! <meta name="generator" content="makeinfo 4.12">
! <link title="Top" rel="top" href="#Top">
! <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
! <!--
! Copyright (C) 1988-2015 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
  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 "GNU Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
!      A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
!      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.-->
! <meta http-equiv="Content-Style-Type" content="text/css">
! <style type="text/css"><!--
!   pre.display { font-family:inherit }
!   pre.format  { font-family:inherit }
!   pre.smalldisplay { font-family:inherit; font-size:smaller }
!   pre.smallformat  { font-family:inherit; font-size:smaller }
!   pre.smallexample { font-size:smaller }
!   pre.smalllisp    { font-size:smaller }
!   span.sc    { font-variant:small-caps }
!   span.roman { font-family:serif; font-weight:normal; } 
!   span.sansserif { font-family:sans-serif; font-weight:normal; } 
! --></style>
  </head>
- <body>
- <h1 class="settitle">Installing GCC: Configuration</h1>
- <a name="index-Configuration-1"></a><a name="index-Installing-GCC_003a-Configuration-2"></a>
- 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>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>If you obtained the sources via SVN, <var>srcdir</var> must refer to the top
- <samp><span class="file">gcc</span></samp> directory, the one where the <samp><span class="file">MAINTAINERS</span></samp> file can be
- found, and not its <samp><span class="file">gcc</span></samp> subdirectory, otherwise the build will fail.
  
!    <p>If either <var>srcdir</var> or <var>objdir</var> is located on an automounted NFS
! file system, the shell's built-in <samp><span class="command">pwd</span></samp> command will return
  temporary pathnames.  Using these can lead to various sorts of build
! problems.  To avoid this issue, set the <samp><span class="env">PWDCMD</span></samp> environment
! variable to an automounter-aware <samp><span class="command">pwd</span></samp> command, e.g.,
! <samp><span class="command">pawd</span></samp> or &lsquo;<samp><span class="samp">amq -w</span></samp>&rsquo;, during the configuration and build
  phases.
! 
!    <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>srcdir</var> == <var>objdir</var> should still work, but doesn't
  get extensive testing; building where <var>objdir</var> is a subdirectory
  of <var>srcdir</var> is unsupported.
! 
!    <p>If you have previously built GCC in the same directory for a
! different target machine, do &lsquo;<samp><span class="samp">make distclean</span></samp>&rsquo; to delete all files
! that might be invalid.  One of the files this deletes is <samp><span class="file">Makefile</span></samp>;
! if &lsquo;<samp><span class="samp">make distclean</span></samp>&rsquo; complains that <samp><span class="file">Makefile</span></samp> does not exist
! or issues a message like &ldquo;don'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>Second, when configuring a native system, either <samp><span class="command">cc</span></samp> or
! <samp><span class="command">gcc</span></samp> must be in your path or you must set <samp><span class="env">CC</span></samp> in
  your environment before running configure.  Otherwise the configuration
  scripts may fail.
  
!    <p>To configure GCC:
  
! <pre class="smallexample">     % mkdir <var>objdir</var>
!      % cd <var>objdir</var>
!      % <var>srcdir</var>/configure [<var>options</var>] [<var>target</var>]
! </pre>
!    <h3 class="heading"><a name="TOC0"></a>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.
! 
!      <dl>
! <dt><code>--with-pkgversion=</code><var>version</var><dd>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 <samp><span class="command">gcc --version</span></samp>.  This suffix does
! not replace the default version string, only the &lsquo;<samp><span class="samp">GCC</span></samp>&rsquo; part.
! 
!      <p>The default value is &lsquo;<samp><span class="samp">GCC</span></samp>&rsquo;.
! 
!      <br><dt><code>--with-bugurl=</code><var>url</var><dd>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.
  
!      <p>The default value refers to the FSF's GCC bug tracker.
! 
!    </dl>
! 
! <h3 class="heading"><a name="TOC1"></a>Target specification</h3>
! 
!      <ul>
! <li>GCC has code to correctly determine the correct value for <var>target</var>
  for nearly all native systems.  Therefore, we highly recommend you do
  not provide a configure target when configuring a native compiler.
  
!      <li><var>target</var> must be specified as <samp><span class="option">--target=</span><var>target</var></samp>
  when configuring a cross compiler; examples of valid targets would be
  m68k-elf, sh-elf, etc.
  
!      <li>Specifying just <var>target</var> instead of <samp><span class="option">--target=</span><var>target</var></samp>
! implies that the host defaults to <var>target</var>. 
! </ul>
  
! <h3 class="heading"><a name="TOC2"></a>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><span class="samp">configure
! --help</span></samp>&rsquo; may list other options, but those not listed below may not
  work and should not normally be used.
! 
!    <p>Note that each <samp><span class="option">--enable</span></samp> option has a corresponding
! <samp><span class="option">--disable</span></samp> option and that each <samp><span class="option">--with</span></samp> option has a
! corresponding <samp><span class="option">--without</span></samp> option.
! 
!      <dl>
! <dt><code>--prefix=</code><var>dirname</var><dd>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><span class="file">/usr/local</span></samp>.
! 
!      <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's home directory tree, some shells will not expand
! <var>dirname</var> correctly if it contains the &lsquo;<samp><span class="samp">~</span></samp>&rsquo; metacharacter; use
! <samp><span class="env">$HOME</span></samp> instead.
! 
!      <p>The following standard <samp><span class="command">autoconf</span></samp> options are supported.  Normally you
  should not need to use these options.
!           <dl>
! <dt><code>--exec-prefix=</code><var>dirname</var><dd>Specify the toplevel installation directory for architecture-dependent
  files.  The default is <samp><var>prefix</var></samp>.
! 
!           <br><dt><code>--bindir=</code><var>dirname</var><dd>Specify the installation directory for the executables called by users
! (such as <samp><span class="command">gcc</span></samp> and <samp><span class="command">g++</span></samp>).  The default is
! <samp><var>exec-prefix</var><span class="file">/bin</span></samp>.
! 
!           <br><dt><code>--libdir=</code><var>dirname</var><dd>Specify the installation directory for object code libraries and
! internal data files of GCC.  The default is <samp><var>exec-prefix</var><span class="file">/lib</span></samp>.
! 
!           <br><dt><code>--libexecdir=</code><var>dirname</var><dd>Specify the installation directory for internal executables of GCC. 
! The default is <samp><var>exec-prefix</var><span class="file">/libexec</span></samp>.
! 
!           <br><dt><code>--with-slibdir=</code><var>dirname</var><dd>Specify the installation directory for the shared libgcc library.  The
  default is <samp><var>libdir</var></samp>.
! 
!           <br><dt><code>--datarootdir=</code><var>dirname</var><dd>Specify the root of the directory tree for read-only architecture-independent
! data files referenced by GCC.  The default is <samp><var>prefix</var><span class="file">/share</span></samp>.
! 
!           <br><dt><code>--infodir=</code><var>dirname</var><dd>Specify the installation directory for documentation in info format. 
! The default is <samp><var>datarootdir</var><span class="file">/info</span></samp>.
! 
!           <br><dt><code>--datadir=</code><var>dirname</var><dd>Specify the installation directory for some architecture-independent
  data files referenced by GCC.  The default is <samp><var>datarootdir</var></samp>.
! 
!           <br><dt><code>--docdir=</code><var>dirname</var><dd>Specify the installation directory for documentation files (other
! than Info) for GCC.  The default is <samp><var>datarootdir</var><span class="file">/doc</span></samp>.
! 
!           <br><dt><code>--htmldir=</code><var>dirname</var><dd>Specify the installation directory for HTML documentation files. 
  The default is <samp><var>docdir</var></samp>.
! 
!           <br><dt><code>--pdfdir=</code><var>dirname</var><dd>Specify the installation directory for PDF documentation files. 
  The default is <samp><var>docdir</var></samp>.
! 
!           <br><dt><code>--mandir=</code><var>dirname</var><dd>Specify the installation directory for manual pages.  The default is
! <samp><var>datarootdir</var><span class="file">/man</span></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.)
! 
!           <br><dt><code>--with-gxx-include-dir=</code><var>dirname</var><dd>Specify
  the installation directory for G++ header files.  The default depends
  on other configuration options, and differs between cross and native
  configurations.
! 
!           <br><dt><code>--with-specs=</code><var>specs</var><dd>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
! <samp><span class="option">--with-specs=%{!fcommon:%{!fno-common:-fno-common}}</span></samp>. 
  See &ldquo;Spec Files&rdquo; in the main manual
  
!      </dl>
! 
!      <br><dt><code>--program-prefix=</code><var>prefix</var><dd>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><span class="option">--program-prefix=foo-</span></samp> would result in &lsquo;<samp><span class="samp">gcc</span></samp>&rsquo;
! being installed as <samp><span class="file">/usr/local/bin/foo-gcc</span></samp>.
! 
!      <br><dt><code>--program-suffix=</code><var>suffix</var><dd>Appends <var>suffix</var> to the names of programs to install in <var>bindir</var>
! (see above).  For example, specifying <samp><span class="option">--program-suffix=-3.1</span></samp>
! would result in &lsquo;<samp><span class="samp">gcc</span></samp>&rsquo; being installed as
! <samp><span class="file">/usr/local/bin/gcc-3.1</span></samp>.
! 
!      <br><dt><code>--program-transform-name=</code><var>pattern</var><dd>Applies the &lsquo;<samp><span class="samp">sed</span></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><span class="samp">sed</span></samp>&rsquo; editing commands, separated by
! semicolons.  For example, if you want the &lsquo;<samp><span class="samp">gcc</span></samp>&rsquo; program name to be
! transformed to the installed program <samp><span class="file">/usr/local/bin/myowngcc</span></samp> and
! the &lsquo;<samp><span class="samp">g++</span></samp>&rsquo; program name to be transformed to
! <samp><span class="file">/usr/local/bin/gspecial++</span></samp> without changing other program names,
  you could use the pattern
! <samp><span class="option">--program-transform-name='s/^gcc$/myowngcc/; s/^g++$/gspecial++/'</span></samp>
  to achieve this effect.
! 
!      <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>As currently implemented, this option only takes effect for native
! builds; cross compiler binaries' names are not transformed even when a
  transformation is explicitly asked for by one of these options.
! 
!      <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><span class="samp">i686-pc-linux-gnu-gcc</span></samp>&rsquo;.  All of the above transformations happen
  before the target alias is prepended to the name&mdash;so, specifying
! <samp><span class="option">--program-prefix=foo-</span></samp> and <samp><span class="option">program-suffix=-3.1</span></samp>, the
  resulting binary would be installed as
! <samp><span class="file">/usr/local/bin/i686-pc-linux-gnu-foo-gcc-3.1</span></samp>.
! 
!      <p>As a last shortcoming, none of the installed Ada programs are
  transformed yet, which will be fixed in some time.
! 
!      <br><dt><code>--with-local-prefix=</code><var>dirname</var><dd>Specify the
  installation directory for local include files.  The default is
! <samp><span class="file">/usr/local</span></samp>.  Specify this option if you want the compiler to
! search directory <samp><var>dirname</var><span class="file">/include</span></samp> for locally installed
! header files <em>instead</em> of <samp><span class="file">/usr/local/include</span></samp>.
! 
!      <p>You should specify <samp><span class="option">--with-local-prefix</span></samp> <strong>only</strong> if your
! site has a different convention (not <samp><span class="file">/usr/local</span></samp>) for where to put
  site-specific files.
! 
!      <p>The default value for <samp><span class="option">--with-local-prefix</span></samp> is <samp><span class="file">/usr/local</span></samp>
! regardless of the value of <samp><span class="option">--prefix</span></samp>.  Specifying
! <samp><span class="option">--prefix</span></samp> has no effect on which directory GCC searches for
  local header files.  This may seem counterintuitive, but actually it is
  logical.
! 
!      <p>The purpose of <samp><span class="option">--prefix</span></samp> is to specify where to <em>install
! GCC</em>.  The local header files in <samp><span class="file">/usr/local/include</span></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><span class="option">--prefix</span></samp> value.)
! 
!      <p>Both the local-prefix include directory and the GCC-prefix include
! directory are part of GCC's &ldquo;system include&rdquo; directories.  Although these
  two directories are not fixed, they need to be searched in the proper
  order for the correct processing of the include_next directive.  The
  local-prefix include directory is searched before the GCC-prefix
  include directory.  Another characteristic of system include directories
  is that pedantic warnings are turned off for headers in these directories.
! 
!      <p>Some autoconf macros add <samp><span class="option">-I </span><var>directory</var></samp> options to the
  compiler command line, to ensure that directories containing installed
! packages' headers are searched.  When <var>directory</var> is one of GCC'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>GCC automatically searches for ordinary libraries using
! <samp><span class="env">GCC_EXEC_PREFIX</span></samp>.  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><span class="file">/usr</span></samp>.
! 
!      <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><span class="option">--program-prefix</span></samp>, <samp><span class="option">--program-suffix</span></samp> and
! <samp><span class="option">--program-transform-name</span></samp> options to install multiple versions
  into a single directory, but it may be simpler to use different prefixes
! and the <samp><span class="option">--with-local-prefix</span></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 <samp><span class="env">LIBRARY_PATH</span></samp>).
! 
!      <p>The same value can be used for both <samp><span class="option">--with-local-prefix</span></samp> and
! <samp><span class="option">--prefix</span></samp> provided it is not <samp><span class="file">/usr</span></samp>.  This can be used
! to avoid the default search of <samp><span class="file">/usr/local/include</span></samp>.
! 
!      <p><strong>Do not</strong> specify <samp><span class="file">/usr</span></samp> as the <samp><span class="option">--with-local-prefix</span></samp>! 
! The directory you use for <samp><span class="option">--with-local-prefix</span></samp> <strong>must not</strong>
! 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 <samp><span class="command">fixincludes</span></samp> script.
! 
!      <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 this assumption because
  installing GCC creates the directory.
! 
!      <br><dt><code>--with-native-system-header-dir=</code><var>dirname</var><dd>Specifies that <var>dirname</var> is the directory that contains native system
! header files, rather than <samp><span class="file">/usr/include</span></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><span class="option">--with-sysroot</span></samp> option and will cause GCC to search
  <var>dirname</var> inside the system root specified by that option.
! 
!      <br><dt><code>--enable-shared[=</code><var>package</var><code>[,...]]</code><dd>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.
! 
!      <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><span class="samp">libgcc</span></samp>&rsquo; (also known as &lsquo;<samp><span class="samp">gcc</span></samp>&rsquo;), &lsquo;<samp><span class="samp">libstdc++</span></samp>&rsquo; (not
! &lsquo;<samp><span class="samp">libstdc++-v3</span></samp>&rsquo;), &lsquo;<samp><span class="samp">libffi</span></samp>&rsquo;, &lsquo;<samp><span class="samp">zlib</span></samp>&rsquo;, &lsquo;<samp><span class="samp">boehm-gc</span></samp>&rsquo;,
! &lsquo;<samp><span class="samp">ada</span></samp>&rsquo;, &lsquo;<samp><span class="samp">libada</span></samp>&rsquo;, &lsquo;<samp><span class="samp">libjava</span></samp>&rsquo;, &lsquo;<samp><span class="samp">libgo</span></samp>&rsquo;, and &lsquo;<samp><span class="samp">libobjc</span></samp>&rsquo;. 
! Note &lsquo;<samp><span class="samp">libiberty</span></samp>&rsquo; does not support shared libraries at all.
! 
!      <p>Use <samp><span class="option">--disable-shared</span></samp> to build only static libraries.  Note that
! <samp><span class="option">--disable-shared</span></samp> does not accept a list of package names as
! argument, only <samp><span class="option">--enable-shared</span></samp> does.
! 
!      <p>Contrast with <samp><span class="option">--enable-host-shared</span></samp>, which affects <em>host</em>
  code.
! 
!      <br><dt><code>--enable-host-shared</code><dd>Specify that the <em>host</em> 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.
! 
!      <p>This option is required when building the libgccjit.so library.
! 
!      <p>Contrast with <samp><span class="option">--enable-shared</span></samp>, which affects <em>target</em>
  libraries.
! 
!      <br><dt><code><a name="with_002dgnu_002das"></a>--with-gnu-as</code><dd>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><span class="option">--with-gnu-as</span></samp>.)  If you have more than one
  assembler installed on your system, you may want to use this option in
! connection with <samp><span class="option">--with-as=</span><var>pathname</var></samp> or
! <samp><span class="option">--with-build-time-tools=</span><var>pathname</var></samp>.
! 
!      <p>The following systems are the only ones where it makes a difference
  whether you use the GNU assembler.  On any other system,
! <samp><span class="option">--with-gnu-as</span></samp> has no effect.
! 
!           <ul>
! <li>&lsquo;<samp><span class="samp">hppa1.0-</span><var>any</var><span class="samp">-</span><var>any</var></samp>&rsquo;
! <li>&lsquo;<samp><span class="samp">hppa1.1-</span><var>any</var><span class="samp">-</span><var>any</var></samp>&rsquo;
! <li>&lsquo;<samp><span class="samp">sparc-sun-solaris2.</span><var>any</var></samp>&rsquo;
! <li>&lsquo;<samp><span class="samp">sparc64-</span><var>any</var><span class="samp">-solaris2.</span><var>any</var></samp>&rsquo;
! </ul>
  
!      <br><dt><code><a name="with_002das"></a>--with-as=</code><var>pathname</var><dd>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:
!           <ul>
! <li>Unless GCC is being built with a cross compiler, check the
! <samp><var>libexec</var><span class="file">/gcc/</span><var>target</var><span class="file">/</span><var>version</var></samp> directory. 
! <var>libexec</var> defaults to <samp><var>exec-prefix</var><span class="file">/libexec</span></samp>;
  <var>exec-prefix</var> defaults to <var>prefix</var>, which
! defaults to <samp><span class="file">/usr/local</span></samp> unless overridden by the
! <samp><span class="option">--prefix=</span><var>pathname</var></samp> switch described above.  <var>target</var>
! is the target system triple, such as &lsquo;<samp><span class="samp">sparc-sun-solaris2.7</span></samp>&rsquo;, and
  <var>version</var> denotes the GCC version, such as 3.0.
  
!           <li>If the target system is the same that you are building on, check
! operating system specific directories (e.g. <samp><span class="file">/usr/ccs/bin</span></samp> on
  Sun Solaris 2).
  
!           <li>Check in the <samp><span class="env">PATH</span></samp> for a tool whose name is prefixed by the
  target system triple.
  
!           <li>Check in the <samp><span class="env">PATH</span></samp> 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). 
! </ul>
  
!      <p>You may want to use <samp><span class="option">--with-as</span></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.
! 
!      <br><dt><code><a name="with_002dgnu_002dld"></a>--with-gnu-ld</code><dd>Same as <a href="#with-gnu-as"><samp><span class="option">--with-gnu-as</span></samp></a>
  but for the linker.
! 
!      <br><dt><code>--with-ld=</code><var>pathname</var><dd>Same as <a href="#with-as"><samp><span class="option">--with-as</span></samp></a>
  but for the linker.
! 
!      <br><dt><code>--with-stabs</code><dd>Specify that stabs debugging
  information should be used instead of whatever format the host normally
  uses.  Normally GCC uses the same debug format as the host system.
! 
!      <p>On MIPS based systems and on Alphas, you must specify whether you want
  GCC to create the normal ECOFF debugging format, or to use BSD-style
  stabs passed through the ECOFF symbol table.  The normal ECOFF debug
  format cannot fully handle languages other than C.  BSD stabs format can
  handle other languages, but it only works with the GNU debugger GDB.
! 
!      <p>Normally, GCC uses the ECOFF debugging format by default; if you
! prefer BSD stabs, specify <samp><span class="option">--with-stabs</span></samp> when you configure GCC.
! 
!      <p>No matter which default you choose when you configure GCC, the user
! can use the <samp><span class="option">-gcoff</span></samp> and <samp><span class="option">-gstabs+</span></samp> options to specify explicitly
  the debug format for a particular compilation.
! 
!      <p><samp><span class="option">--with-stabs</span></samp> is meaningful on the ISC system on the 386, also, if
! <samp><span class="option">--with-gas</span></samp> is used.  It selects use of stabs debugging
  information embedded in COFF output.  This kind of debugging information
  supports C++ well; ordinary COFF debugging information does not.
! 
!      <p><samp><span class="option">--with-stabs</span></samp> is also meaningful on 386 systems running SVR4.  It
  selects use of stabs debugging information embedded in ELF output.  The
  C++ compiler currently (2.6.0) does not support the DWARF debugging
  information normally used on 386 SVR4 platforms; stabs provide a
  workable alternative.  This requires gas and gdb, as the normal SVR4
  tools can not generate or interpret stabs.
! 
!      <br><dt><code>--with-tls=</code><var>dialect</var><dd>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.
! 
!      <br><dt><code>--enable-multiarch</code><dd>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><span class="option">--with-sysroot</span></samp>, and without
! <samp><span class="option">--with-native-system-header-dir</span></samp>. 
  More documentation about multiarch can be found at
  <a href="http://wiki.debian.org/Multiarch">http://wiki.debian.org/Multiarch</a>.
! 
!      <br><dt><code>--enable-vtable-verify</code><dd>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
  virtual call in libstdc++ will verify the vtable pointer through which the
  call will be made before actually making the call.  If not linked with libvtv,
! 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><span class="option">--disable-libvtv</span></samp> to turn off building libvtv). 
! <samp><span class="option">--disable-vtable-verify</span></samp> is the default.
! 
!      <br><dt><code>--disable-multilib</code><dd>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>Some targets provide finer-grained control over which multilibs are built
! (e.g., <samp><span class="option">--disable-softfloat</span></samp>):
!           <dl>
! <dt><code>arm-*-*</code><dd>fpu, 26bit, underscore, interwork, biendian, nofmult.
! 
!           <br><dt><code>m68*-*-*</code><dd>softfloat, m68881, m68000, m68020.
! 
!           <br><dt><code>mips*-*-*</code><dd>single-float, biendian, softfloat.
! 
!           <br><dt><code>powerpc*-*-*, rs6000*-*-*</code><dd>aix64, pthread, softfloat, powercpu, powerpccpu, powerpcos, biendian,
  sysv, aix.
  
!      </dl>
! 
!      <br><dt><code>--with-multilib-list=</code><var>list</var><dt><code>--without-multilib-list</code><dd>Specify what multilibs to build. 
  Currently only implemented for sh*-*-* and x86-64-*-linux*.
! 
!           <dl>
! <dt><code>sh*-*-*</code><dd><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><span class="option">--with-endian</span></samp>.
! 
!           <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>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><span class="samp">MULTILIB_EXCLUDES</span></samp>&rsquo;
  (once the leading <code>!</code> has been stripped).
! 
!           <p>If <samp><span class="option">--with-multilib-list</span></samp> is not given, then a default set of
! multilibs is selected based on the value of <samp><span class="option">--target</span></samp>.  This is
  usually the complete set of libraries, but some targets imply a more
  specialized subset.
! 
!           <p>Example 1: to configure a compiler for SH4A only, but supporting both
  endians, with little endian being the default:
!           <pre class="smallexample">               --with-cpu=sh4a --with-endian=little,big --with-multilib-list=
! </pre>
!           <p>Example 2: to configure a compiler for both SH4A and SH4AL-DSP, but with
  only little endian SH4AL:
!           <pre class="smallexample">               --with-cpu=sh4a --with-endian=little,big \
!                --with-multilib-list=sh4al,!mb/m4al
! </pre>
!           <br><dt><code>x86-64-*-linux*</code><dd><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>If <samp><span class="option">--with-multilib-list</span></samp> is not given, then only 32-bit and
! 64-bit run-time libraries will be enabled. 
  </dl>
  
!      <br><dt><code>--with-endian=</code><var>endians</var><dd>Specify what endians to use. 
  Currently only implemented for sh*-*-*.
! 
!      <p><var>endians</var> may be one of the following:
!           <dl>
! <dt><code>big</code><dd>Use big endian exclusively. 
! <br><dt><code>little</code><dd>Use little endian exclusively. 
! <br><dt><code>big,little</code><dd>Use big endian by default.  Provide a multilib for little endian. 
! <br><dt><code>little,big</code><dd>Use little endian by default.  Provide a multilib for big endian. 
  </dl>
  
!      <br><dt><code>--enable-threads</code><dd>Specify that the target
  supports threads.  This affects the Objective-C compiler and runtime
! library, and exception handling for other languages like C++ and Java. 
  On some systems, this is the default.
! 
!      <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><span class="option">--enable-threads</span></samp> is an
! alias for <samp><span class="option">--enable-threads=single</span></samp>.
! 
!      <br><dt><code>--disable-threads</code><dd>Specify that threading support should be disabled for the system. 
! This is an alias for <samp><span class="option">--enable-threads=single</span></samp>.
! 
!      <br><dt><code>--enable-threads=</code><var>lib</var><dd>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++ and Java.  The possibilities for <var>lib</var> are:
! 
!           <dl>
! <dt><code>aix</code><dd>AIX thread support. 
! <br><dt><code>dce</code><dd>DCE thread support. 
! <br><dt><code>lynx</code><dd>LynxOS thread support. 
! <br><dt><code>mipssde</code><dd>MIPS SDE thread support. 
! <br><dt><code>no</code><dd>This is an alias for &lsquo;<samp><span class="samp">single</span></samp>&rsquo;. 
! <br><dt><code>posix</code><dd>Generic POSIX/Unix98 thread support. 
! <br><dt><code>rtems</code><dd>RTEMS thread support. 
! <br><dt><code>single</code><dd>Disable thread support, should work for all platforms. 
! <br><dt><code>tpf</code><dd>TPF thread support. 
! <br><dt><code>vxworks</code><dd>VxWorks thread support. 
! <br><dt><code>win32</code><dd>Microsoft Win32 API thread support. 
  </dl>
  
!      <br><dt><code>--enable-tls</code><dd>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><span class="option">--enable-tls</span></samp> or <samp><span class="option">--disable-tls</span></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.
! 
!      <br><dt><code>--disable-tls</code><dd>Specify that the target does not support TLS. 
! This is an alias for <samp><span class="option">--enable-tls=no</span></samp>.
! 
!      <br><dt><code>--with-cpu=</code><var>cpu</var><dt><code>--with-cpu-32=</code><var>cpu</var><dt><code>--with-cpu-64=</code><var>cpu</var><dd>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><span class="option">-mcpu=</span></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><span class="option">--with-cpu-32</span></samp> and
! <samp><span class="option">--with-cpu-64</span></samp> options specify separate default CPUs for
  32-bit and 64-bit modes; these options are only supported for i386,
  x86-64 and PowerPC.
! 
!      <br><dt><code>--with-schedule=</code><var>cpu</var><dt><code>--with-arch=</code><var>cpu</var><dt><code>--with-arch-32=</code><var>cpu</var><dt><code>--with-arch-64=</code><var>cpu</var><dt><code>--with-tune=</code><var>cpu</var><dt><code>--with-tune-32=</code><var>cpu</var><dt><code>--with-tune-64=</code><var>cpu</var><dt><code>--with-abi=</code><var>abi</var><dt><code>--with-fpu=</code><var>type</var><dt><code>--with-float=</code><var>type</var><dd>These configure options provide default values for the <samp><span class="option">-mschedule=</span></samp>,
! <samp><span class="option">-march=</span></samp>, <samp><span class="option">-mtune=</span></samp>, <samp><span class="option">-mabi=</span></samp>, and <samp><span class="option">-mfpu=</span></samp>
! options and for <samp><span class="option">-mhard-float</span></samp> or <samp><span class="option">-msoft-float</span></samp>.  As with
! <samp><span class="option">--with-cpu</span></samp>, which switches will be accepted and acceptable values
  of the arguments depend on the target.
! 
!      <br><dt><code>--with-mode=</code><var>mode</var><dd>Specify if the compiler should default to <samp><span class="option">-marm</span></samp> or <samp><span class="option">-mthumb</span></samp>. 
  This option is only supported on ARM targets.
! 
!      <br><dt><code>--with-stack-offset=</code><var>num</var><dd>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.
! 
!      <br><dt><code>--with-fpmath=</code><var>isa</var><dd>This options sets <samp><span class="option">-mfpmath=sse</span></samp> by default and specifies the default
! ISA for floating-point arithmetics.  You can select either &lsquo;<samp><span class="samp">sse</span></samp>&rsquo; which
! enables <samp><span class="option">-msse2</span></samp> or &lsquo;<samp><span class="samp">avx</span></samp>&rsquo; which enables <samp><span class="option">-mavx</span></samp> by default. 
  This option is only supported on i386 and x86-64 targets.
! 
!      <br><dt><code>--with-fp-32=</code><var>mode</var><dd>On MIPS targets, set the default value for the <samp><span class="option">-mfp</span></samp> option when using
  the o32 ABI.  The possibilities for <var>mode</var> are:
!           <dl>
! <dt><code>32</code><dd>Use the o32 FP32 ABI extension, as with the <samp><span class="option">-mfp32</span></samp> command-line
! option. 
! <br><dt><code>xx</code><dd>Use the o32 FPXX ABI extension, as with the <samp><span class="option">-mfpxx</span></samp> command-line
! option. 
! <br><dt><code>64</code><dd>Use the o32 FP64 ABI extension, as with the <samp><span class="option">-mfp64</span></samp> command-line
! option. 
  </dl>
!      In the absence of this configuration option the default is to use the o32
  FP32 ABI extension.
! 
!      <br><dt><code>--with-odd-spreg-32</code><dd>On MIPS targets, set the <samp><span class="option">-modd-spreg</span></samp> option by default when using
  the o32 ABI.
! 
!      <br><dt><code>--without-odd-spreg-32</code><dd>On MIPS targets, set the <samp><span class="option">-mno-odd-spreg</span></samp> option by default when using
  the o32 ABI.  This is normally used in conjunction with
! <samp><span class="option">--with-fp-32=64</span></samp> in order to target the o32 FP64A ABI extension.
! 
!      <br><dt><code>--with-nan=</code><var>encoding</var><dd>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:
!           <dl>
! <dt><code>legacy</code><dd>Use the legacy encoding, as with the <samp><span class="option">-mnan=legacy</span></samp> command-line
! option. 
! <br><dt><code>2008</code><dd>Use the 754-2008 encoding, as with the <samp><span class="option">-mnan=2008</span></samp> command-line
! option. 
  </dl>
!      To use this configuration option you must have an assembler version
! installed that supports the <samp><span class="option">-mnan=</span></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><span class="option">-mnan=2008</span></samp> and
! <samp><span class="option">-mnan=legacy</span></samp> command-line options has been used.
! 
!      <br><dt><code>--with-divide=</code><var>type</var><dd>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:
!           <dl>
! <dt><code>traps</code><dd>Division by zero checks use conditional traps (this is the default on
! systems that support conditional traps). 
! <br><dt><code>breaks</code><dd>Division by zero checks use the break instruction. 
  </dl>
  
!      <!-- If you make -with-llsc the default for additional targets, -->
!      <!-- update the -with-llsc description in the MIPS section below. -->
!      <br><dt><code>--with-llsc</code><dd>On MIPS targets, make <samp><span class="option">-mllsc</span></samp> the default when no
! <samp><span class="option">-mno-llsc</span></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.
! 
!      <br><dt><code>--without-llsc</code><dd>On MIPS targets, make <samp><span class="option">-mno-llsc</span></samp> the default when no
! <samp><span class="option">-mllsc</span></samp> option is passed.
! 
!      <br><dt><code>--with-synci</code><dd>On MIPS targets, make <samp><span class="option">-msynci</span></samp> the default when no
! <samp><span class="option">-mno-synci</span></samp> option is passed.
! 
!      <br><dt><code>--without-synci</code><dd>On MIPS targets, make <samp><span class="option">-mno-synci</span></samp> the default when no
! <samp><span class="option">-msynci</span></samp> option is passed.  This is the default.
! 
!      <br><dt><code>--with-mips-plt</code><dd>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.
! 
!      <br><dt><code>--enable-__cxa_atexit</code><dd>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
! <samp><span class="option">-fuse-cxa-atexit</span></samp> to be passed by default.
! 
!      <br><dt><code>--enable-gnu-indirect-function</code><dd>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.
! 
!      <br><dt><code>--enable-target-optspace</code><dd>Specify that target
! libraries should be optimized for code space instead of code speed. 
  This is the default for the m32r platform.
! 
!      <br><dt><code>--with-cpp-install-dir=</code><var>dirname</var><dd>Specify that the user visible <samp><span class="command">cpp</span></samp> program should be installed
! in <samp><var>prefix</var><span class="file">/</span><var>dirname</var><span class="file">/cpp</span></samp>, in addition to <var>bindir</var>.
! 
!      <br><dt><code>--enable-comdat</code><dd>Enable COMDAT group support.  This is primarily used to override the
  automatically detected value.
! 
!      <br><dt><code>--enable-initfini-array</code><dd>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><span class="option">--disable-initfini-array</span></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.
! 
!      <br><dt><code>--enable-link-mutex</code><dd>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.
! 
!      <br><dt><code>--enable-maintainer-mode</code><dd>The build rules that regenerate the Autoconf and Automake output files as
! well as the GCC master message catalog <samp><span class="file">gcc.pot</span></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><span class="option">--enable-maintainer-mode</span></samp> will enable
  this.  Note that you need a recent version of the <code>gettext</code> tools
  to do so.
! 
!      <br><dt><code>--disable-bootstrap</code><dd>For a native build, the default configuration is to perform
! a 3-stage bootstrap of the compiler when &lsquo;<samp><span class="samp">make</span></samp>&rsquo; is invoked,
  testing that GCC can compile itself correctly.  If you want to disable
! this process, you can configure with <samp><span class="option">--disable-bootstrap</span></samp>.
! 
!      <br><dt><code>--enable-bootstrap</code><dd>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><span class="option">--enable-bootstrap</span></samp>.
! 
!      <br><dt><code>--enable-generated-files-in-srcdir</code><dd>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 SVN development tree.  When building GCC from that development tree,
  or from one of our snapshots, those generated files are placed in your
  build directory, which allows for the source to be in a readonly
  directory.
! 
!      <p>If you configure with <samp><span class="option">--enable-generated-files-in-srcdir</span></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.
! 
!      <br><dt><code>--enable-version-specific-runtime-libs</code><dd>Specify
  that runtime libraries should be installed in the compiler specific
! subdirectory (<samp><var>libdir</var><span class="file">/gcc</span></samp>) rather than the usual places.  In
! addition, &lsquo;<samp><span class="samp">libstdc++</span></samp>&rsquo;'s include files will be installed into
  <samp><var>libdir</var></samp> unless you overruled it by using
! <samp><span class="option">--with-gxx-include-dir=</span><var>dirname</var></samp>.  Using this option is
  particularly useful if you intend to use several versions of GCC in
! parallel.  This is currently supported by &lsquo;<samp><span class="samp">libgfortran</span></samp>&rsquo;,
! &lsquo;<samp><span class="samp">libjava</span></samp>&rsquo;, &lsquo;<samp><span class="samp">libstdc++</span></samp>&rsquo;, and &lsquo;<samp><span class="samp">libobjc</span></samp>&rsquo;.
! 
!      <br><dt><code><a name="WithAixSoname"></a>--with-aix-soname=&lsquo;</code><samp><span class="samp">aix</span></samp><code>&rsquo;, &lsquo;</code><samp><span class="samp">svr4</span></samp><code>&rsquo; or &lsquo;</code><samp><span class="samp">both</span></samp><code>&rsquo;</code><dd>Traditional AIX shared library versioning (versioned <code>Shared Object</code>
  files as members of unversioned <code>Archive Library</code> files named
! &lsquo;<samp><span class="samp">lib.a</span></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 "SONAME". 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><span class="samp">libNAME.so</span></samp>&rsquo; before &lsquo;<samp><span class="samp">libNAME.a</span></samp>&rsquo; library
! filenames with the &lsquo;<samp><span class="samp">-lNAME</span></samp>&rsquo; linker flag.
! 
!      <p><a name="AixLdCommand"></a>For detailed information please refer to the AIX
! <a href="http://www-01.ibm.com/support/knowledgecenter/search/%22the%20ld%20command%2C%20also%20called%20the%20linkage%20editor%20or%20binder%22">ld Command</a> reference.
! 
!      <p>As long as shared library creation is enabled, upon:
!           <dl>
! <dt><code>--with-aix-soname=aix</code><br><dt><code>--with-aix-soname=both</code><dd> A (traditional AIX) <code>Shared Archive Library</code> file is created:
!                <ul>
!   <li>using the &lsquo;<samp><span class="samp">libNAME.a</span></samp>&rsquo; filename scheme
!   <li>with the <code>Shared Object</code> file as archive member named
!   &lsquo;<samp><span class="samp">libNAME.so.V</span></samp>&rsquo; (except for &lsquo;<samp><span class="samp">libgcc_s</span></samp>&rsquo;, where the <code>Shared
!   Object</code> file is named &lsquo;<samp><span class="samp">shr.o</span></samp>&rsquo; for backwards compatibility), which
!                     <ul>
!    <li>is used for runtime loading from inside the &lsquo;<samp><span class="samp">libNAME.a</span></samp>&rsquo; file
!    <li>is used for dynamic loading via
!    <code>dlopen("libNAME.a(libNAME.so.V)", RTLD_MEMBER)</code>
!    <li>is used for shared linking
!    <li>is used for static linking, so no separate <code>Static Archive
     Library</code> file is needed
!   </ul>
!                 </ul>
!           <br><dt><code>--with-aix-soname=both</code><br><dt><code>--with-aix-soname=svr4</code><dd> A (second) <code>Shared Archive Library</code> file is created:
!                <ul>
!  <li>using the &lsquo;<samp><span class="samp">libNAME.so.V</span></samp>&rsquo; filename scheme
!  <li>with the <code>Shared Object</code> file as archive member named
!  &lsquo;<samp><span class="samp">shr.o</span></samp>&rsquo;, which
!                     <ul>
!    <li>is created with the <code>-G linker flag</code>
!    <li>has the <code>F_LOADONLY</code> flag set
!    <li>is used for runtime loading from inside the &lsquo;<samp><span class="samp">libNAME.so.V</span></samp>&rsquo; file
!    <li>is used for dynamic loading via <code>dlopen("libNAME.so.V(shr.o)",
     RTLD_MEMBER)</code>
!   </ul>
!                 <li>with the <code>Import File</code> as archive member named &lsquo;<samp><span class="samp">shr.imp</span></samp>&rsquo;,
   which
!                     <ul>
!    <li>refers to &lsquo;<samp><span class="samp">libNAME.so.V(shr.o)</span></samp>&rsquo; as the "SONAME", to be recorded
     in the <code>Loader Section</code> of subsequent binaries
!    <li>indicates whether &lsquo;<samp><span class="samp">libNAME.so.V(shr.o)</span></samp>&rsquo; is 32 or 64 bit
!    <li>lists all the public symbols exported by &lsquo;<samp><span class="samp">lib.so.V(shr.o)</span></samp>&rsquo;,
!    eventually decorated with the <code>&lsquo;</code><samp><span class="samp">weak</span></samp><code>&rsquo; Keyword</code>
!    <li>is necessary for shared linking against &lsquo;<samp><span class="samp">lib.so.V(shr.o)</span></samp>&rsquo;
!    </ul>
!                  </ul>
!             A symbolic link using the &lsquo;<samp><span class="samp">libNAME.so</span></samp>&rsquo; filename scheme is created:
!                <ul>
!   <li>pointing to the &lsquo;<samp><span class="samp">libNAME.so.V</span></samp>&rsquo; <code>Shared Archive Library</code> file
!   <li>to permit the <code>ld Command</code> to find &lsquo;<samp><span class="samp">lib.so.V(shr.imp)</span></samp>&rsquo; via
!   the &lsquo;<samp><span class="samp">-lNAME</span></samp>&rsquo; argument (requires <code>Runtime Linking</code> to be enabled)
!   <li>to permit dynamic loading of &lsquo;<samp><span class="samp">lib.so.V(shr.o)</span></samp>&rsquo; without the need
!   to specify the version number via <code>dlopen("libNAME.so(shr.o)",
    RTLD_MEMBER)</code>
!   </ul>
!           </dl>
  
!      <p>As long as static library creation is enabled, upon:
!           <dl>
! <dt><code>--with-aix-soname=svr4</code><dd> A <code>Static Archive Library</code> is created:
!                <ul>
!  <li>using the &lsquo;<samp><span class="samp">libNAME.a</span></samp>&rsquo; filename scheme
!  <li>with all the <code>Static Object</code> files as archive members, which
!                     <ul>
!    <li>are used for static linking
!   </ul>
!                 </ul>
!           </dl>
  
!      <p>While the aix-soname=&lsquo;<samp><span class="samp">svr4</span></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><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><span class="option">-Wl,-bbigtoc</span></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><samp><span class="option">--with-aix-soname</span></samp> is currently supported by &lsquo;<samp><span class="samp">libgcc_s</span></samp>&rsquo; only, so
  this option is still experimental and not for normal use yet.
! 
!      <p>Default is the traditional behaviour <samp><span class="option">--with-aix-soname=&lsquo;</span><samp><span class="samp">aix</span></samp><span class="option">&rsquo;</span></samp>.
! 
!      <br><dt><code>--enable-languages=</code><var>lang1</var><code>,</code><var>lang2</var><code>,...</code><dd>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><span class="file">gcc</span></samp> directory of your GCC source tree:<br>
!      <pre class="smallexample">          grep language= */config-lang.in
! </pre>
!      <p>Currently, you can use any of the following:
  <code>all</code>, <code>ada</code>, <code>c</code>, <code>c++</code>, <code>fortran</code>,
! <code>go</code>, <code>java</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>all</code>, then all
! default languages available in the <samp><span class="file">gcc</span></samp> sub-tree will be configured. 
  Ada, Go and Objective-C++ are not default languages; the rest are.
! 
!      <br><dt><code>--enable-stage1-languages=</code><var>lang1</var><code>,</code><var>lang2</var><code>,...</code><dd>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><span class="option">--enable-languages</span></samp>, and the option <code>all</code> will select all
! of the languages enabled by <samp><span class="option">--enable-languages</span></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 <samp><span class="command">make
! stage1-bubble all-target</span></samp>, or run the testsuite on the stage-1 compiler
! for the specified languages using <samp><span class="command">make stage1-start check-gcc</span></samp>.
! 
!      <br><dt><code>--disable-libada</code><dd>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><span class="samp">make -C gcc gnatlib_and_tools</span></samp>&rsquo;.
! 
!      <br><dt><code>--disable-libsanitizer</code><dd>Specify that the run-time libraries for the various sanitizers should
  not be built.
! 
!      <br><dt><code>--disable-libssp</code><dd>Specify that the run-time libraries for stack smashing protection
  should not be built.
! 
!      <br><dt><code>--disable-libquadmath</code><dd>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><span class="option">--disable-libquadmath-support</span></samp>
  is used.
! 
!      <br><dt><code>--disable-libquadmath-support</code><dd>Specify that the Fortran front end and <code>libgfortran</code> do not add
  support for <code>libquadmath</code> on systems supporting it.
! 
!      <br><dt><code>--disable-libgomp</code><dd>Specify that the GNU Offloading and Multi Processing Runtime Library
  should not be built.
! 
!      <br><dt><code>--disable-libvtv</code><dd>Specify that the run-time libraries used by vtable verification
  should not be built.
! 
!      <br><dt><code>--with-dwarf2</code><dd>Specify that the compiler should
  use DWARF 2 debugging information as the default.
! 
!      <br><dt><code>--enable-targets=all</code><dt><code>--enable-targets=</code><var>target_list</var><dd>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. 
  powerpc-linux for powerpc64-linux, only generates 32-bit code.  This
  option enables the 32-bit target to be a bi-arch compiler, which is
  useful when you want a bi-arch compiler that defaults to 32-bit, and
! you are building a bi-arch or multi-arch binutils in a combined tree. 
  On mips-linux, this will build a tri-arch compiler (ABI o32/n32/64),
! defaulted to o32. 
  Currently, this option only affects sparc-linux, powerpc-linux, x86-linux,
  mips-linux and s390-linux.
! 
!      <br><dt><code>--enable-secureplt</code><dd>This option enables <samp><span class="option">-msecure-plt</span></samp> by default for powerpc-linux. 
  See &ldquo;RS/6000 and PowerPC Options&rdquo; in the main manual
! 
!      <br><dt><code>--enable-cld</code><dd>This option enables <samp><span class="option">-mcld</span></samp> by default for 32-bit x86 targets. 
  See &ldquo;i386 and x86-64 Options&rdquo; in the main manual
! 
!      <br><dt><code>--enable-win32-registry</code><dt><code>--enable-win32-registry=</code><var>key</var><dt><code>--disable-win32-registry</code><dd>The <samp><span class="option">--enable-win32-registry</span></samp> option enables Microsoft Windows-hosted GCC
  to look up installations paths in the registry using the following key:
  
!      <pre class="smallexample">          <code>HKEY_LOCAL_MACHINE\SOFTWARE\Free Software Foundation\</code><var>key</var>
! </pre>
!      <p><var>key</var> defaults to GCC version number, and can be overridden by the
! <samp><span class="option">--enable-win32-registry=</span><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><span class="option">--disable-win32-registry</span></samp>
  option.  This option has no effect on the other hosts.
! 
!      <br><dt><code>--nfp</code><dd>Specify that the machine does not have a floating point unit.  This
! option only applies to &lsquo;<samp><span class="samp">m68k-sun-sunos</span><var>n</var></samp>&rsquo;.  On any other
! system, <samp><span class="option">--nfp</span></samp> has no effect.
! 
!      <br><dt><code>--enable-werror</code><dt><code>--disable-werror</code><dt><code>--enable-werror=yes</code><dt><code>--enable-werror=no</code><dd>When you specify this option, it controls whether certain files in the
! compiler are built with <samp><span class="option">-Werror</span></samp> in bootstrap stage2 and later. 
! If you don't specify it, <samp><span class="option">-Werror</span></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><span class="option">-Werror</span></samp> are
  controlled by the Makefiles.
! 
!      <br><dt><code>--enable-checking</code><dt><code>--enable-checking=</code><var>list</var><dd>When you specify this option, the compiler is built to perform internal
  consistency checks of the requested complexity.  This does not change the
  generated code, but adds error checking within the compiler.  This will
  slow down the compiler and may only work properly if you are building
! the compiler with GCC.  This is &lsquo;<samp><span class="samp">yes</span></samp>&rsquo; by default when building
! from SVN or snapshots, but &lsquo;<samp><span class="samp">release</span></samp>&rsquo; for releases.  The default
! for building the stage1 compiler is &lsquo;<samp><span class="samp">yes</span></samp>&rsquo;.  More control
  over the checks may be had by specifying <var>list</var>.  The categories of
! checks available are &lsquo;<samp><span class="samp">yes</span></samp>&rsquo; (most common checks
! &lsquo;<samp><span class="samp">assert,misc,tree,gc,rtlflag,runtime</span></samp>&rsquo;), &lsquo;<samp><span class="samp">no</span></samp>&rsquo; (no checks at
! all), &lsquo;<samp><span class="samp">all</span></samp>&rsquo; (all but &lsquo;<samp><span class="samp">valgrind</span></samp>&rsquo;), &lsquo;<samp><span class="samp">release</span></samp>&rsquo; (cheapest
! checks &lsquo;<samp><span class="samp">assert,runtime</span></samp>&rsquo;) or &lsquo;<samp><span class="samp">none</span></samp>&rsquo; (same as &lsquo;<samp><span class="samp">no</span></samp>&rsquo;). 
! Individual checks can be enabled with these flags &lsquo;<samp><span class="samp">assert</span></samp>&rsquo;,
! &lsquo;<samp><span class="samp">df</span></samp>&rsquo;, &lsquo;<samp><span class="samp">fold</span></samp>&rsquo;, &lsquo;<samp><span class="samp">gc</span></samp>&rsquo;, &lsquo;<samp><span class="samp">gcac</span></samp>&rsquo; &lsquo;<samp><span class="samp">misc</span></samp>&rsquo;, &lsquo;<samp><span class="samp">rtl</span></samp>&rsquo;,
! &lsquo;<samp><span class="samp">rtlflag</span></samp>&rsquo;, &lsquo;<samp><span class="samp">runtime</span></samp>&rsquo;, &lsquo;<samp><span class="samp">tree</span></samp>&rsquo;, and &lsquo;<samp><span class="samp">valgrind</span></samp>&rsquo;.
! 
!      <p>The &lsquo;<samp><span class="samp">valgrind</span></samp>&rsquo; check requires the external <samp><span class="command">valgrind</span></samp>
  simulator, available from <a href="http://valgrind.org/">http://valgrind.org/</a>.  The
! &lsquo;<samp><span class="samp">df</span></samp>&rsquo;, &lsquo;<samp><span class="samp">rtl</span></samp>&rsquo;, &lsquo;<samp><span class="samp">gcac</span></samp>&rsquo; and &lsquo;<samp><span class="samp">valgrind</span></samp>&rsquo; checks are very expensive. 
! To disable all checking, &lsquo;<samp><span class="samp">--disable-checking</span></samp>&rsquo; or
! &lsquo;<samp><span class="samp">--enable-checking=none</span></samp>&rsquo; must be explicitly requested.  Disabling
  assertions will make the compiler and runtime slightly faster but
  increase the risk of undetected internal errors causing wrong code to be
  generated.
! 
!      <br><dt><code>--disable-stage1-checking</code><dt><code>--enable-stage1-checking</code><dt><code>--enable-stage1-checking=</code><var>list</var><dd>If no <samp><span class="option">--enable-checking</span></samp> option is specified the stage1
! compiler will be built with &lsquo;<samp><span class="samp">yes</span></samp>&rsquo; checking enabled, otherwise
  the stage1 checking flags are the same as specified by
! <samp><span class="option">--enable-checking</span></samp>.  To build the stage1 compiler with
! different checking options use <samp><span class="option">--enable-stage1-checking</span></samp>. 
! The list of checking options is the same as for <samp><span class="option">--enable-checking</span></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><span class="samp">--disable-stage1-checking</span></samp>&rsquo;
  to disable checking for the stage1 compiler.
! 
!      <br><dt><code>--enable-coverage</code><dt><code>--enable-coverage=</code><var>level</var><dd>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><span class="samp">opt</span></samp>&rsquo; and &lsquo;<samp><span class="samp">noopt</span></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.
! 
!      <br><dt><code>--enable-gather-detailed-mem-stats</code><dd>When this option is specified more detailed information on memory
  allocation is gathered.  This information is printed when using
! <samp><span class="option">-fmem-report</span></samp>.
! 
!      <br><dt><code>--enable-nls</code><dt><code>--disable-nls</code><dd>The <samp><span class="option">--enable-nls</span></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><span class="option">--disable-nls</span></samp> option disables NLS.
! 
!      <br><dt><code>--with-included-gettext</code><dd>If NLS is enabled, the <samp><span class="option">--with-included-gettext</span></samp> option causes the build
! procedure to prefer its copy of GNU <samp><span class="command">gettext</span></samp>.
! 
!      <br><dt><code>--with-catgets</code><dd>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's copy of the GNU
! <code>gettext</code> library.  The <samp><span class="option">--with-catgets</span></samp> option causes the
! build procedure to use the host's <code>catgets</code> in this situation.
! 
!      <br><dt><code>--with-libiconv-prefix=</code><var>dir</var><dd>Search for libiconv header files in <samp><var>dir</var><span class="file">/include</span></samp> and
! libiconv library files in <samp><var>dir</var><span class="file">/lib</span></samp>.
! 
!      <br><dt><code>--enable-obsolete</code><dd>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
  error message.
! 
!      <p>All support for systems which have been obsoleted in one release of GCC
  is removed entirely in the next major release, unless someone steps
  forward to maintain the port.
! 
!      <br><dt><code>--enable-decimal-float</code><dt><code>--enable-decimal-float=yes</code><dt><code>--enable-decimal-float=no</code><dt><code>--enable-decimal-float=bid</code><dt><code>--enable-decimal-float=dpd</code><dt><code>--disable-decimal-float</code><dd>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 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><span class="samp">bid</span></samp>&rsquo; or &lsquo;<samp><span class="samp">dpd</span></samp>&rsquo;).  The &lsquo;<samp><span class="samp">bid</span></samp>&rsquo; (binary integer decimal)
! format is default on i386 and x86_64 systems, and the &lsquo;<samp><span class="samp">dpd</span></samp>&rsquo;
  (densely packed decimal) format is default on PowerPC systems.
! 
!      <br><dt><code>--enable-fixed-point</code><dt><code>--disable-fixed-point</code><dd>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.
! 
!      <br><dt><code>--with-long-double-128</code><dd>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.
! 
!      <br><dt><code>--with-gmp=</code><var>pathname</var><dt><code>--with-gmp-include=</code><var>pathname</var><dt><code>--with-gmp-lib=</code><var>pathname</var><dt><code>--with-mpfr=</code><var>pathname</var><dt><code>--with-mpfr-include=</code><var>pathname</var><dt><code>--with-mpfr-lib=</code><var>pathname</var><dt><code>--with-mpc=</code><var>pathname</var><dt><code>--with-mpc-include=</code><var>pathname</var><dt><code>--with-mpc-lib=</code><var>pathname</var><dd>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><span class="samp">--with-gmp=</span><var>gmpinstalldir</var></samp>&rsquo;,
! &lsquo;<samp><span class="samp">--with-mpfr=</span><var>mpfrinstalldir</var></samp>&rsquo;,
! &lsquo;<samp><span class="samp">--with-mpc=</span><var>mpcinstalldir</var></samp>&rsquo;).  The
! <samp><span class="option">--with-gmp=</span><var>gmpinstalldir</var></samp> option is shorthand for
! <samp><span class="option">--with-gmp-lib=</span><var>gmpinstalldir</var><span class="option">/lib</span></samp> and
! <samp><span class="option">--with-gmp-include=</span><var>gmpinstalldir</var><span class="option">/include</span></samp>.  Likewise the
! <samp><span class="option">--with-mpfr=</span><var>mpfrinstalldir</var></samp> option is shorthand for
! <samp><span class="option">--with-mpfr-lib=</span><var>mpfrinstalldir</var><span class="option">/lib</span></samp> and
! <samp><span class="option">--with-mpfr-include=</span><var>mpfrinstalldir</var><span class="option">/include</span></samp>, also the
! <samp><span class="option">--with-mpc=</span><var>mpcinstalldir</var></samp> option is shorthand for
! <samp><span class="option">--with-mpc-lib=</span><var>mpcinstalldir</var><span class="option">/lib</span></samp> and
! <samp><span class="option">--with-mpc-include=</span><var>mpcinstalldir</var><span class="option">/include</span></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 (<samp><span class="env">LD_LIBRARY_PATH</span></samp> on GNU/Linux and Solaris systems).
! 
!      <p>These flags are applicable to the host platform only.  When building
  a cross compiler, they will not be used to configure target libraries.
! 
!      <br><dt><code>--with-isl=</code><var>pathname</var><dt><code>--with-isl-include=</code><var>pathname</var><dt><code>--with-isl-lib=</code><var>pathname</var><dd>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><span class="samp">--with-isl=</span><var>islinstalldir</var></samp>&rsquo;). The
! <samp><span class="option">--with-isl=</span><var>islinstalldir</var></samp> option is shorthand for
! <samp><span class="option">--with-isl-lib=</span><var>islinstalldir</var><span class="option">/lib</span></samp> and
! <samp><span class="option">--with-isl-include=</span><var>islinstalldir</var><span class="option">/include</span></samp>. If this
  shorthand assumption is not correct, you can use the explicit
  include and lib options directly.
! 
!      <p>These flags are applicable to the host platform only.  When building
  a cross compiler, they will not be used to configure target libraries.
! 
!      <br><dt><code>--with-host-libstdcxx=</code><var>linker-args</var><dd>If you are linking with a static copy of PPL, you can use this option
  to specify how the linker should find the standard C++ library used
  internally by PPL.  Typical values of <var>linker-args</var> might be
! &lsquo;<samp><span class="samp">-lstdc++</span></samp>&rsquo; or &lsquo;<samp><span class="samp">-Wl,-Bstatic,-lstdc++,-Bdynamic -lm</span></samp>&rsquo;.  If you are
  linking with a shared copy of PPL, you probably do not need this
  option; shared library dependencies will cause the linker to search
  for the standard C++ library automatically.
! 
!      <br><dt><code>--with-stage1-ldflags=</code><var>flags</var><dd>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><span class="option">--disable-bootstrap</span></samp>.  By default no special flags are used.
! 
!      <br><dt><code>--with-stage1-libs=</code><var>libs</var><dd>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><span class="option">--disable-bootstrap</span></samp>.  The default is the argument to
! <samp><span class="option">--with-host-libstdcxx</span></samp>, if specified.
! 
!      <br><dt><code>--with-boot-ldflags=</code><var>flags</var><dd>This option may be used to set linker flags to be used when linking
  stage 2 and later when bootstrapping GCC.  If neither &ndash;with-boot-libs
  nor &ndash;with-host-libstdcxx is set to a value, then the default is
! &lsquo;<samp><span class="samp">-static-libstdc++ -static-libgcc</span></samp>&rsquo;.
! 
!      <br><dt><code>--with-boot-libs=</code><var>libs</var><dd>This option may be used to set libraries to be used when linking stage 2
  and later when bootstrapping GCC.  The default is the argument to
! <samp><span class="option">--with-host-libstdcxx</span></samp>, if specified.
! 
!      <br><dt><code>--with-debug-prefix-map=</code><var>map</var><dd>Convert source directory names using <samp><span class="option">-fdebug-prefix-map</span></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><span class="samp">=</span><var>new</var></samp>&rsquo;.
! 
!      <br><dt><code>--enable-linker-build-id</code><dd>Tells GCC to pass <samp><span class="option">--build-id</span></samp> option to the linker for all final
! links (links performed without the <samp><span class="option">-r</span></samp> or <samp><span class="option">--relocatable</span></samp>
  option), if the linker supports it.  If you specify
! <samp><span class="option">--enable-linker-build-id</span></samp>, but your linker does not
! support <samp><span class="option">--build-id</span></samp> option, a warning is issued and the
! <samp><span class="option">--enable-linker-build-id</span></samp> option is ignored.  The default is off.
! 
!      <br><dt><code>--with-linker-hash-style=</code><var>choice</var><dd>Tells GCC to pass <samp><span class="option">--hash-style=</span><var>choice</var></samp> option to the
  linker for all final links. <var>choice</var> can be one of
! &lsquo;<samp><span class="samp">sysv</span></samp>&rsquo;, &lsquo;<samp><span class="samp">gnu</span></samp>&rsquo;, and &lsquo;<samp><span class="samp">both</span></samp>&rsquo; where &lsquo;<samp><span class="samp">sysv</span></samp>&rsquo; is the default.
! 
!      <br><dt><code>--enable-gnu-unique-object</code><dt><code>--disable-gnu-unique-object</code><dd>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.
! 
!      <br><dt><code>--with-diagnostics-color=</code><var>choice</var><dd>Tells GCC to use <var>choice</var> as the default for <samp><span class="option">-fdiagnostics-color=</span></samp>
  option (if not used explicitly on the command line).  <var>choice</var>
! can be one of &lsquo;<samp><span class="samp">never</span></samp>&rsquo;, &lsquo;<samp><span class="samp">auto</span></samp>&rsquo;, &lsquo;<samp><span class="samp">always</span></samp>&rsquo;, and &lsquo;<samp><span class="samp">auto-if-env</span></samp>&rsquo;
! where &lsquo;<samp><span class="samp">auto</span></samp>&rsquo; is the default.  &lsquo;<samp><span class="samp">auto-if-env</span></samp>&rsquo; means that
! <samp><span class="option">-fdiagnostics-color=auto</span></samp> will be the default if <code>GCC_COLORS</code>
  is present and non-empty in the environment, and
! <samp><span class="option">-fdiagnostics-color=never</span></samp> otherwise.
! 
!      <br><dt><code>--enable-lto</code><dt><code>--disable-lto</code><dd>Enable support for link-time optimization (LTO).  This is enabled by
! default, and may be disabled using <samp><span class="option">--disable-lto</span></samp>.
! 
!      <br><dt><code>--enable-linker-plugin-configure-flags=FLAGS</code><dt><code>--enable-linker-plugin-flags=FLAGS</code><dd>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><span class="samp">x86_64-unknown-linux-gnu</span></samp>&rsquo;) host system, but have a 32-bit x86
! GNU/Linux (&lsquo;<samp><span class="samp">i686-pc-linux-gnu</span></samp>&rsquo;) linker executable (which is
  executable on the former system), you can configure GCC as follows for
  getting compatible linker plugins:
  
!      <pre class="smallexample">          % <var>srcdir</var>/configure \
!               --host=x86_64-unknown-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>
!      <br><dt><code>--with-plugin-ld=</code><var>pathname</var><dd>Enable an alternate linker to be used at link-time optimization (LTO)
! link time when <samp><span class="option">-fuse-linker-plugin</span></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><span class="option">-fuse-linker-plugin</span></samp> for details.
! 
!      <br><dt><code>--enable-canonical-system-headers</code><dt><code>--disable-canonical-system-headers</code><dd>Enable system header path canonicalization for <samp><span class="file">libcpp</span></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><span class="option">--disable-canonical-system-headers</span></samp>.
! 
!      <br><dt><code>--with-glibc-version=</code><var>major</var><code>.</code><var>minor</var><dd>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'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.
! 
!      <p>If GCC is configured with some multilibs that use glibc and some that
! do not, this option applies only to the multilibs that use glibc. 
  However, such configurations may not work well as not all the relevant
  configuration in GCC is on a per-multilib basis.
! 
!      <br><dt><code>--enable-as-accelerator-for=</code><var>target</var><dd>Build as offload target compiler. Specify offload host triple by <var>target</var>.
! 
!      <br><dt><code>--enable-offload-targets=</code><var>target1</var><code>[=</code><var>path1</var><code>],...,</code><var>targetN</var><code>[=</code><var>pathN</var><code>]</code><dd>Enable offloading to targets <var>target1</var>, <small class="dots">...</small>, <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>, <small class="dots">...</small>, <var>pathN</var>.
! 
!      <pre class="smallexample">          % <var>srcdir</var>/configure \
!               --enable-offload-target=i686-unknown-linux-gnu=/path/to/i686/compiler,x86_64-pc-linux-gnu
! </pre>
!      </dl>
! 
! <h4 class="subheading"><a name="TOC3"></a>Cross-Compiler-Specific Options</h4>
  
  <p>The following options only apply to building cross compilers.
! 
!      <dl>
! <dt><code>--with-sysroot</code><dt><code>--with-sysroot=</code><var>dir</var><dd>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><span class="option">--sysroot=</span><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><span class="option">--with-headers</span></samp> and
! <samp><span class="option">--with-libs</span></samp> that this option obsoletes.  The default value,
! in case <samp><span class="option">--with-sysroot</span></samp> is not given an argument, is
! <samp><span class="option">${gcc_tooldir}/sys-root</span></samp>.  If the specified directory is a
! subdirectory of <samp><span class="option">${exec_prefix}</span></samp>, then it will be found relative to
  the GCC binaries if the installation tree is moved.
! 
!      <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>If you specify the <samp><span class="option">--with-native-system-header-dir=</span><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><span class="file">/usr/include</span></samp>.
! 
!      <br><dt><code>--with-build-sysroot</code><dt><code>--with-build-sysroot=</code><var>dir</var><dd>Tells GCC to consider <var>dir</var> as the system root (see
! <samp><span class="option">--with-sysroot</span></samp>) while building target libraries, instead of
! the directory specified with <samp><span class="option">--with-sysroot</span></samp>.  This option is
! only useful when you are already using <samp><span class="option">--with-sysroot</span></samp>.  You
! can use <samp><span class="option">--with-build-sysroot</span></samp> when you are configuring with
! <samp><span class="option">--prefix</span></samp> set to a directory that is different from the one in
  which you are installing GCC and your target libraries.
! 
!      <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>If you specify the <samp><span class="option">--with-native-system-header-dir=</span><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><span class="file">/usr/include</span></samp>.
! 
!      <br><dt><code>--with-headers</code><dt><code>--with-headers=</code><var>dir</var><dd>Deprecated in favor of <samp><span class="option">--with-sysroot</span></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><span class="file">gcc</span></samp> install
! directory.  <em>This option with the </em><var>dir</var><em> argument is required</em> when
! building a cross compiler, if <samp><var>prefix</var><span class="file">/</span><var>target</var><span class="file">/sys-include</span></samp>
! doesn't pre-exist.  If <samp><var>prefix</var><span class="file">/</span><var>target</var><span class="file">/sys-include</span></samp> does
! pre-exist, the <var>dir</var> argument may be omitted.  <samp><span class="command">fixincludes</span></samp>
  will be run on these files to make them compatible with GCC.
! 
!      <br><dt><code>--without-headers</code><dd>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.
! 
!      <br><dt><code>--with-libs</code><dt><code>--with-libs="</code><var>dir1</var> <var>dir2</var><code> ... </code><var>dirN</var><code>"</code><dd>Deprecated in favor of <samp><span class="option">--with-sysroot</span></samp>. 
  Specifies a list of directories which contain the target runtime
! libraries.  These libraries will be copied into the <samp><span class="file">gcc</span></samp> install
  directory.  If the directory list is omitted, this option has no
  effect.
! 
!      <br><dt><code>--with-newlib</code><dd>Specifies that &lsquo;<samp><span class="samp">newlib</span></samp>&rsquo; is
  being used as the target C library.  This causes <code>__eprintf</code> to be
! omitted from <samp><span class="file">libgcc.a</span></samp> on the assumption that it will be provided by
! &lsquo;<samp><span class="samp">newlib</span></samp>&rsquo;.
! 
!      <br><dt><code>--with-avrlibc</code><dd>Specifies that &lsquo;<samp><span class="samp">AVR-Libc</span></samp>&rsquo; is
  being used as the target C library.  This causes float support
! functions like <code>__addsf3</code> to be omitted from <samp><span class="file">libgcc.a</span></samp> on
! the assumption that it will be provided by <samp><span class="file">libm.a</span></samp>.  For more
! technical details, cf. <a href="http://gcc.gnu.org/PR54461">PR54461</a>. 
  This option is only supported for the AVR target.  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.
! 
!      <br><dt><code>--with-nds32-lib=</code><var>library</var><dd>Specifies that <var>library</var> setting is used for building <samp><span class="file">libgcc.a</span></samp>. 
! Currently, the valid <var>library</var> is &lsquo;<samp><span class="samp">newlib</span></samp>&rsquo; or &lsquo;<samp><span class="samp">mculib</span></samp>&rsquo;. 
  This option is only supported for the NDS32 target.
! 
!      <br><dt><code>--with-build-time-tools=</code><var>dir</var><dd>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>For example, on an &lsquo;<samp><span class="samp">ia64-hp-hpux</span></samp>&rsquo; system, you may have the GNU
! assembler and linker in <samp><span class="file">/usr/bin</span></samp>, and the native tools in a
  different path, and build a toolchain that expects to find the
! native tools in <samp><span class="file">/usr/bin</span></samp>.
  
!      <p>When you use this option, you should ensure that <var>dir</var> includes
! <samp><span class="command">ar</span></samp>, <samp><span class="command">as</span></samp>, <samp><span class="command">ld</span></samp>, <samp><span class="command">nm</span></samp>,
! <samp><span class="command">ranlib</span></samp> and <samp><span class="command">strip</span></samp> if necessary, and possibly
! <samp><span class="command">objdump</span></samp>.  Otherwise, GCC may use an inconsistent set of
! tools. 
  </dl>
  
! <h4 class="subheading"><a name="TOC4"></a>Java-Specific Options</h4>
  
  <p>The following option applies to the build of the Java front end.
! 
!      <dl>
! <dt><code>--disable-libgcj</code><dd>Specify that the run-time libraries
  used by GCJ should not be built.  This is useful in case you intend
! to use GCJ with some other run-time, or you're going to install it
  separately, or it just happens not to build on your particular
  machine.  In general, if the Java front end is enabled, the GCJ
! libraries will be enabled too, unless they're known to not work on
! the target platform.  If GCJ is enabled but &lsquo;<samp><span class="samp">libgcj</span></samp>&rsquo; isn't built, you
  may need to port it; in this case, before modifying the top-level
! <samp><span class="file">configure.in</span></samp> so that &lsquo;<samp><span class="samp">libgcj</span></samp>&rsquo; is enabled by default on this platform,
! you may use <samp><span class="option">--enable-libgcj</span></samp> to override the default.
! 
!    </dl>
! 
!    <p>The following options apply to building &lsquo;<samp><span class="samp">libgcj</span></samp>&rsquo;.
  
! <h5 class="subsubheading"><a name="TOC5"></a>General Options</h5>
  
!      <dl>
! <dt><code>--enable-java-maintainer-mode</code><dd>By default the &lsquo;<samp><span class="samp">libjava</span></samp>&rsquo; build will not attempt to compile the
! <samp><span class="file">.java</span></samp> source files to <samp><span class="file">.class</span></samp>.  Instead, it will use the
! <samp><span class="file">.class</span></samp> files from the source tree.  If you use this option you
! must have executables named <samp><span class="command">ecj1</span></samp> and <samp><span class="command">gjavah</span></samp> in your path
  for use by the build.  You must use this option if you intend to
! modify any <samp><span class="file">.java</span></samp> files in <samp><span class="file">libjava</span></samp>.
! 
!      <br><dt><code>--with-java-home=</code><var>dirname</var><dd>This &lsquo;<samp><span class="samp">libjava</span></samp>&rsquo; option overrides the default value of the
! &lsquo;<samp><span class="samp">java.home</span></samp>&rsquo; system property.  It is also used to set
! &lsquo;<samp><span class="samp">sun.boot.class.path</span></samp>&rsquo; to <samp><var>dirname</var><span class="file">/lib/rt.jar</span></samp>.  By
! default &lsquo;<samp><span class="samp">java.home</span></samp>&rsquo; is set to <samp><var>prefix</var></samp> and
! &lsquo;<samp><span class="samp">sun.boot.class.path</span></samp>&rsquo; to
! <samp><var>datadir</var><span class="file">/java/libgcj-</span><var>version</var><span class="file">.jar</span></samp>.
! 
!      <br><dt><code>--with-ecj-jar=</code><var>filename</var><dd>This option can be used to specify the location of an external jar
  file containing the Eclipse Java compiler.  A specially modified
! version of this compiler is used by <samp><span class="command">gcj</span></samp> to parse
! <samp><span class="file">.java</span></samp> source files.  If this option is given, the
! &lsquo;<samp><span class="samp">libjava</span></samp>&rsquo; build will create and install an <samp><span class="file">ecj1</span></samp> executable
  which uses this jar file at runtime.
! 
!      <p>If this option is not given, but an <samp><span class="file">ecj.jar</span></samp> file is found in
! the topmost source tree at configure time, then the &lsquo;<samp><span class="samp">libgcj</span></samp>&rsquo;
! build will create and install <samp><span class="file">ecj1</span></samp>, and will also install the
! discovered <samp><span class="file">ecj.jar</span></samp> into a suitable place in the install tree.
! 
!      <p>If <samp><span class="file">ecj1</span></samp> is not installed, then the user will have to supply one
! on his path in order for <samp><span class="command">gcj</span></samp> to properly parse <samp><span class="file">.java</span></samp>
  source files.  A suitable jar is available from
  <a href="ftp://sourceware.org/pub/java/">ftp://sourceware.org/pub/java/</a>.
! 
!      <br><dt><code>--disable-getenv-properties</code><dd>Don't set system properties from <samp><span class="env">GCJ_PROPERTIES</span></samp>.
! 
!      <br><dt><code>--enable-hash-synchronization</code><dd>Use a global hash table for monitor locks.  Ordinarily,
! &lsquo;<samp><span class="samp">libgcj</span></samp>&rsquo;'s &lsquo;<samp><span class="samp">configure</span></samp>&rsquo; script automatically makes
  the correct choice for this option for your platform.  Only use
  this if you know you need the library to be configured differently.
! 
!      <br><dt><code>--enable-interpreter</code><dd>Enable the Java interpreter.  The interpreter is automatically
  enabled by default on all platforms that support it.  This option
  is really only useful if you want to disable the interpreter
! (using <samp><span class="option">--disable-interpreter</span></samp>).
! 
!      <br><dt><code>--disable-java-net</code><dd>Disable java.net.  This disables the native part of java.net only,
  using non-functional stubs for native method implementations.
! 
!      <br><dt><code>--disable-jvmpi</code><dd>Disable JVMPI support.
! 
!      <br><dt><code>--disable-libgcj-bc</code><dd>Disable BC ABI compilation of certain parts of libgcj.  By default,
! some portions of libgcj are compiled with <samp><span class="option">-findirect-dispatch</span></samp>
! and <samp><span class="option">-fno-indirect-classes</span></samp>, allowing them to be overridden at
  run-time.
! 
!      <p>If <samp><span class="option">--disable-libgcj-bc</span></samp> is specified, libgcj is built without
  these options.  This allows the compile-time linker to resolve
  dependencies when statically linking to libgcj.  However it makes it
  impossible to override the affected portions of libgcj at run-time.
! 
!      <br><dt><code>--enable-reduced-reflection</code><dd>Build most of libgcj with <samp><span class="option">-freduced-reflection</span></samp>.  This reduces
  the size of libgcj at the expense of not being able to do accurate
  reflection on the classes it contains.  This option is safe if you
  know that code using libgcj will never use reflection on the standard
  runtime classes in libgcj (including using serialization, RMI or CORBA).
! 
!      <br><dt><code>--with-ecos</code><dd>Enable runtime eCos target support.
! 
!      <br><dt><code>--without-libffi</code><dd>Don't use &lsquo;<samp><span class="samp">libffi</span></samp>&rsquo;.  This will disable the interpreter and JNI
! support as well, as these require &lsquo;<samp><span class="samp">libffi</span></samp>&rsquo; to work.
! 
!      <br><dt><code>--enable-libgcj-debug</code><dd>Enable runtime debugging code.
! 
!      <br><dt><code>--enable-libgcj-multifile</code><dd>If specified, causes all <samp><span class="file">.java</span></samp> source files to be
! compiled into <samp><span class="file">.class</span></samp> files in one invocation of
! &lsquo;<samp><span class="samp">gcj</span></samp>&rsquo;.  This can speed up build time, but is more
  resource-intensive.  If this option is unspecified or
! disabled, &lsquo;<samp><span class="samp">gcj</span></samp>&rsquo; is invoked once for each <samp><span class="file">.java</span></samp>
! file to compile into a <samp><span class="file">.class</span></samp> file.
! 
!      <br><dt><code>--with-libiconv-prefix=DIR</code><dd>Search for libiconv in <samp><span class="file">DIR/include</span></samp> and <samp><span class="file">DIR/lib</span></samp>.
! 
!      <br><dt><code>--enable-sjlj-exceptions</code><dd>Force use of the <code>setjmp</code>/<code>longjmp</code>-based scheme for exceptions. 
! &lsquo;<samp><span class="samp">configure</span></samp>&rsquo; ordinarily picks the correct value based on the platform. 
! Only use this option if you are sure you need a different setting.
! 
!      <br><dt><code>--with-system-zlib</code><dd>Use installed &lsquo;<samp><span class="samp">zlib</span></samp>&rsquo; rather than that included with GCC.
! 
!      <br><dt><code>--with-win32-nlsapi=ansi, unicows or unicode</code><dd>Indicates how MinGW &lsquo;<samp><span class="samp">libgcj</span></samp>&rsquo; translates between UNICODE
  characters and the Win32 API.
! 
!      <br><dt><code>--enable-java-home</code><dd>If enabled, this creates a JPackage compatible SDK environment during install. 
  Note that if &ndash;enable-java-home is used, &ndash;with-arch-directory=ARCH must also
  be specified.
! 
!      <br><dt><code>--with-arch-directory=ARCH</code><dd>Specifies the name to use for the <samp><span class="file">jre/lib/ARCH</span></samp> directory in the SDK
  environment created when &ndash;enable-java-home is passed. Typical names for this
  directory include i386, amd64, ia64, etc.
! 
!      <br><dt><code>--with-os-directory=DIR</code><dd>Specifies the OS directory for the SDK include directory. This is set to auto
! detect, and is typically 'linux'.
! 
!      <br><dt><code>--with-origin-name=NAME</code><dd>Specifies the JPackage origin name. This defaults to the 'gcj' in
  java-1.5.0-gcj.
! 
!      <br><dt><code>--with-arch-suffix=SUFFIX</code><dd>Specifies the suffix for the sdk directory. Defaults to the empty string. 
! Examples include '.x86_64' in 'java-1.5.0-gcj-1.5.0.0.x86_64'.
! 
!      <br><dt><code>--with-jvm-root-dir=DIR</code><dd>Specifies where to install the SDK. Default is $(prefix)/lib/jvm.
! 
!      <br><dt><code>--with-jvm-jar-dir=DIR</code><dd>Specifies where to install jars. Default is $(prefix)/lib/jvm-exports.
! 
!      <br><dt><code>--with-python-dir=DIR</code><dd>Specifies where to install the Python modules used for aot-compile. DIR should
  not include the prefix used in installation. For example, if the Python modules
  are to be installed in /usr/lib/python2.5/site-packages, then
  &ndash;with-python-dir=/lib/python2.5/site-packages should be passed. If this is
  not specified, then the Python modules are installed in $(prefix)/share/python.
! 
!      <br><dt><code>--enable-aot-compile-rpm</code><dd>Adds aot-compile-rpm to the list of installed scripts.
! 
!      <br><dt><code>--enable-browser-plugin</code><dd>Build the gcjwebplugin web browser plugin.
! 
!      <br><dt><code>--enable-static-libjava</code><dd>Build static libraries in libjava. The default is to only build shared
  libraries.
! 
!           <dl>
! <dt><code>ansi</code><dd>Use the single-byte <code>char</code> and the Win32 A functions natively,
  translating to and from UNICODE when using these functions.  If
  unspecified, this is the default.
! 
!           <br><dt><code>unicows</code><dd>Use the <code>WCHAR</code> and Win32 W functions natively.  Adds
! <code>-lunicows</code> to <samp><span class="file">libgcj.spec</span></samp> to link with &lsquo;<samp><span class="samp">libunicows</span></samp>&rsquo;. 
! <samp><span class="file">unicows.dll</span></samp> needs to be deployed on Microsoft Windows 9X machines
! running built executables.  <samp><span class="file">libunicows.a</span></samp>, an open-source
! import library around Microsoft's <code>unicows.dll</code>, is obtained from
  <a href="http://libunicows.sourceforge.net/">http://libunicows.sourceforge.net/</a>, which also gives details
! on getting <samp><span class="file">unicows.dll</span></samp> from Microsoft.
! 
!           <br><dt><code>unicode</code><dd>Use the <code>WCHAR</code> and Win32 W functions natively.  Does <em>not</em>
! add <code>-lunicows</code> to <samp><span class="file">libgcj.spec</span></samp>.  The built executables will
! only run on Microsoft Windows NT and above. 
  </dl>
-      </dl>
- 
- <h5 class="subsubheading"><a name="TOC6"></a>AWT-Specific Options</h5>
- 
-      <dl>
- <dt><code>--with-x</code><dd>Use the X Window System.
- 
-      <br><dt><code>--enable-java-awt=PEER(S)</code><dd>Specifies the AWT peer library or libraries to build alongside
- &lsquo;<samp><span class="samp">libgcj</span></samp>&rsquo;.  If this option is unspecified or disabled, AWT
- will be non-functional.  Current valid values are <samp><span class="option">gtk</span></samp> and
- <samp><span class="option">xlib</span></samp>.  Multiple libraries should be separated by a
- comma (i.e. <samp><span class="option">--enable-java-awt=gtk,xlib</span></samp>).
- 
-      <br><dt><code>--enable-gtk-cairo</code><dd>Build the cairo Graphics2D implementation on GTK.
- 
-      <br><dt><code>--enable-java-gc=TYPE</code><dd>Choose garbage collector.  Defaults to <samp><span class="option">boehm</span></samp> if unspecified.
- 
-      <br><dt><code>--disable-gtktest</code><dd>Do not try to compile and run a test GTK+ program.
  
!      <br><dt><code>--disable-glibtest</code><dd>Do not try to compile and run a test GLIB program.
  
!      <br><dt><code>--with-libart-prefix=PFX</code><dd>Prefix where libart is installed (optional).
  
-      <br><dt><code>--with-libart-exec-prefix=PFX</code><dd>Exec prefix where libart is installed (optional).
  
!      <br><dt><code>--disable-libarttest</code><dd>Do not try to compile and run a test libart program.
  
- </dl>
  
- <h5 class="subsubheading"><a name="TOC7"></a>Overriding <samp><span class="command">configure</span></samp> test results</h5>
  
- <p>Sometimes, it might be necessary to override the result of some
- <samp><span class="command">configure</span></samp> test, for example in order to ease porting to a new
- system or work around a bug in a test.  The toplevel <samp><span class="command">configure</span></samp>
- script provides three variables for this:
  
-      <dl>
- <dt><code>build_configargs</code><dd><a name="index-g_t_0040code_007bbuild_005fconfigargs_007d-3"></a>The contents of this variable is passed to all build <samp><span class="command">configure</span></samp>
- scripts.
  
-      <br><dt><code>host_configargs</code><dd><a name="index-g_t_0040code_007bhost_005fconfigargs_007d-4"></a>The contents of this variable is passed to all host <samp><span class="command">configure</span></samp>
- scripts.
  
-      <br><dt><code>target_configargs</code><dd><a name="index-g_t_0040code_007btarget_005fconfigargs_007d-5"></a>The contents of this variable is passed to all target <samp><span class="command">configure</span></samp>
- scripts.
  
-    </dl>
  
-    <p>In order to avoid shell and <samp><span class="command">make</span></samp> quoting issues for complex
- overrides, you can pass a setting for <samp><span class="env">CONFIG_SITE</span></samp> and set
- variables in the site file.
  
-    <p><hr />
- <p><a href="./index.html">Return to the GCC Installation page</a>
  
- <!-- ***Building**************************************************************** -->
- <!-- ***Testing***************************************************************** -->
- <!-- ***Final install*********************************************************** -->
- <!-- ***Binaries**************************************************************** -->
- <!-- ***Specific**************************************************************** -->
- <!-- ***Old documentation****************************************************** -->
- <!-- ***GFDL******************************************************************** -->
- <!-- *************************************************************************** -->
- <!-- Part 6 The End of the Document -->
- </body></html>
  
--- 1,2020 ----
! <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
! <html>
! <!-- Copyright (C) 1988-2015 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
  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 "GNU
! Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
! A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
! 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.1, http://www.gnu.org/software/texinfo/ -->
! <head>
! <title>Installing GCC</title>
! 
! <meta name="description" content="Installing GCC">
! <meta name="keywords" content="Installing GCC">
! <meta name="resource-type" content="document">
! <meta name="distribution" content="global">
! <meta name="Generator" content="makeinfo">
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <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>
  
  
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! <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 via SVN, <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>srcdir</var> == <var>objdir</var> should still work, but doesn&rsquo;t
  get extensive testing; building where <var>objdir</var> is a subdirectory
  of <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.
+ </p>
+ <p>The default value refers to the FSF&rsquo;s GCC bug tracker.
+ </p>
+ </dd>
+ </dl>
  
! <a name="Target-specification"></a>
! <h3 class="heading">Target specification</h3>
! <ul>
! <li> GCC has code to correctly determine the correct value for <var>target</var>
  for nearly all native systems.  Therefore, we highly recommend you do
  not provide a configure target when configuring a native compiler.
  
! </li><li> <var>target</var> must be specified as <samp>--target=<var>target</var></samp>
  when configuring a cross compiler; examples of valid targets would be
  m68k-elf, sh-elf, etc.
  
! </li><li> Specifying just <var>target</var> instead of <samp>--target=<var>target</var></samp>
! implies that the host defaults to <var>target</var>.
! </li></ul>
  
! 
! <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
  transformation is explicitly asked for by one of these options.
! </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
  two directories are not fixed, they need to be searched in the proper
  order for the correct processing of the include_next directive.  The
  local-prefix include directory is searched before the GCC-prefix
  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
  install part of GCC.  Perhaps they make this assumption because
  installing GCC creates the directory.
! </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.
! </p>
! <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>libjava</samp>&rsquo;, &lsquo;<samp>libgo</samp>&rsquo;, and &lsquo;<samp>libobjc</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 -fPIC), 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><a name="with_002dgnu_002das"></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>hppa1.0-<var>any</var>-<var>any</var></samp>&rsquo;
! </li><li> &lsquo;<samp>hppa1.1-<var>any</var>-<var>any</var></samp>&rsquo;
! </li><li> &lsquo;<samp>sparc-sun-solaris2.<var>any</var></samp>&rsquo;
! </li><li> &lsquo;<samp>sparc64-<var>any</var>-solaris2.<var>any</var></samp>&rsquo;
! </li></ul>
  
! </dd>
! <dt><code><a name="with_002das"></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.7</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 (e.g. <samp>/usr/ccs/bin</samp> on
  Sun Solaris 2).
  
! </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_002dgnu_002dld"></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-stabs</code></dt>
! <dd><p>Specify that stabs debugging
  information should be used instead of whatever format the host normally
  uses.  Normally GCC uses the same debug format as the host system.
! </p>
! <p>On MIPS based systems and on Alphas, you must specify whether you want
  GCC to create the normal ECOFF debugging format, or to use BSD-style
  stabs passed through the ECOFF symbol table.  The normal ECOFF debug
  format cannot fully handle languages other than C.  BSD stabs format can
  handle other languages, but it only works with the GNU debugger GDB.
! </p>
! <p>Normally, GCC uses the ECOFF debugging format by default; if you
! prefer BSD stabs, specify <samp>--with-stabs</samp> when you configure GCC.
! </p>
! <p>No matter which default you choose when you configure GCC, the user
! can use the <samp>-gcoff</samp> and <samp>-gstabs+</samp> options to specify explicitly
  the debug format for a particular compilation.
! </p>
! <p><samp>--with-stabs</samp> is meaningful on the ISC system on the 386, also, if
! <samp>--with-gas</samp> is used.  It selects use of stabs debugging
  information embedded in COFF output.  This kind of debugging information
  supports C++ well; ordinary COFF debugging information does not.
! </p>
! <p><samp>--with-stabs</samp> is also meaningful on 386 systems running SVR4.  It
  selects use of stabs debugging information embedded in ELF output.  The
  C++ compiler currently (2.6.0) does not support the DWARF debugging
  information normally used on 386 SVR4 platforms; stabs provide a
  workable alternative.  This requires gas and gdb, as the normal SVR4
  tools can not generate or interpret stabs.
! </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.
! </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="http://wiki.debian.org/Multiarch">http://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
  virtual call in libstdc++ will verify the vtable pointer through which the
  call will be made before actually making the call.  If not linked with libvtv,
! 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>--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>powerpc*-*-*, rs6000*-*-*</code></dt>
! <dd><p>aix64, pthread, softfloat, powercpu, powerpccpu, powerpcos, biendian,
  sysv, aix.
+ </p>
+ </dd>
+ </dl>
  
! </dd>
! <dt><code>--with-multilib-list=<var>list</var></code></dt>
! <dt><code>--without-multilib-list</code></dt>
! <dd><p>Specify what multilibs to build.
  Currently only implemented for sh*-*-* and x86-64-*-linux*.
! </p>
! <dl compact="compact">
! <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-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>--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++ and Java.
  On some systems, this is the default.
! </p>
! <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++ and Java.  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>--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 i386,
  x86-64 and PowerPC.
! </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>
! <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>
! <p>In the absence of this configuration option the default is to use the o32
  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-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-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>--enable-__cxa_atexit</code></dt>
! <dd><p>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
! <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-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 SVN development tree.  When building GCC from that development tree,
  or from one of our snapshots, those generated files are placed in your
  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.  This is currently supported by &lsquo;<samp>libgfortran</samp>&rsquo;,
! &lsquo;<samp>libjava</samp>&rsquo;, &lsquo;<samp>libstdc++</samp>&rsquo;, and &lsquo;<samp>libobjc</samp>&rsquo;.
! </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="http://www-01.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 behaviour <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>ada</code>, <code>c</code>, <code>c++</code>, <code>fortran</code>,
! <code>go</code>, <code>java</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>all</code>, then all
! default languages available in the <samp>gcc</samp> sub-tree will be configured.
  Ada, Go and Objective-C++ are not default languages; the rest are.
! </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-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.
! </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 2 debugging information as the default.
! </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.
  powerpc-linux for powerpc64-linux, only generates 32-bit code.  This
  option enables the 32-bit target to be a bi-arch compiler, which is
  useful when you want a bi-arch compiler that defaults to 32-bit, and
! you are building a bi-arch or multi-arch binutils in a combined tree.
  On mips-linux, this will build a tri-arch compiler (ABI o32/n32/64),
! defaulted to o32.
  Currently, this option only affects sparc-linux, powerpc-linux, x86-linux,
  mips-linux and s390-linux.
! </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-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-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>--enable-checking=<var>list</var></code></dt>
! <dd><p>When you specify this option, the compiler is built to perform internal
  consistency checks of the requested complexity.  This does not change the
  generated code, but adds error checking within the compiler.  This will
  slow down the compiler and may only work properly if you are building
! the compiler with GCC.  This is &lsquo;<samp>yes</samp>&rsquo; by default when building
! from SVN or snapshots, but &lsquo;<samp>release</samp>&rsquo; for releases.  The default
! for building the stage1 compiler is &lsquo;<samp>yes</samp>&rsquo;.  More control
  over the checks may be had by specifying <var>list</var>.  The categories of
! checks available are &lsquo;<samp>yes</samp>&rsquo; (most common checks
! &lsquo;<samp>assert,misc,tree,gc,rtlflag,runtime</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;).
! Individual checks can be enabled with these flags &lsquo;<samp>assert</samp>&rsquo;,
! &lsquo;<samp>df</samp>&rsquo;, &lsquo;<samp>fold</samp>&rsquo;, &lsquo;<samp>gc</samp>&rsquo;, &lsquo;<samp>gcac</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;, and &lsquo;<samp>valgrind</samp>&rsquo;.
! </p>
! <p>The &lsquo;<samp>valgrind</samp>&rsquo; check requires the external <code>valgrind</code>
  simulator, available from <a href="http://valgrind.org/">http://valgrind.org/</a>.  The
! &lsquo;<samp>df</samp>&rsquo;, &lsquo;<samp>rtl</samp>&rsquo;, &lsquo;<samp>gcac</samp>&rsquo; and &lsquo;<samp>valgrind</samp>&rsquo; checks are very expensive.
! To disable all checking, &lsquo;<samp>--disable-checking</samp>&rsquo; or
! &lsquo;<samp>--enable-checking=none</samp>&rsquo; must be explicitly requested.  Disabling
  assertions will make the compiler and runtime slightly faster but
  increase the risk of undetected internal errors causing wrong code to be
  generated.
! </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>If no <samp>--enable-checking</samp> option is specified the stage1
! compiler will be 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-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>
! </dd>
! <dt><code>--with-included-gettext</code></dt>
! <dd><p>If NLS is enabled, the <samp>--with-included-gettext</samp> option causes the build
! procedure to prefer its copy of GNU <code>gettext</code>.
! </p>
! </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
  error message.
! </p>
! <p>All support for systems which have been obsoleted in one release of GCC
  is removed entirely in the next major release, unless someone steps
  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 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 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-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>
! <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-host-libstdcxx=<var>linker-args</var></code></dt>
! <dd><p>If you are linking with a static copy of PPL, you can use this option
  to specify how the linker should find the standard C++ library used
  internally by PPL.  Typical values of <var>linker-args</var> might be
! &lsquo;<samp>-lstdc++</samp>&rsquo; or &lsquo;<samp>-Wl,-Bstatic,-lstdc++,-Bdynamic -lm</samp>&rsquo;.  If you are
  linking with a shared copy of PPL, you probably do not need this
  option; shared library dependencies will cause the linker to search
  for the standard C++ library automatically.
! </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>.  By default no special flags are used.
! </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>.  The default is the argument to
! <samp>--with-host-libstdcxx</samp>, if specified.
! </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 neither &ndash;with-boot-libs
  nor &ndash;with-host-libstdcxx 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.  The default is the argument to
! <samp>--with-host-libstdcxx</samp>, if specified.
! </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; means that
! <samp>-fdiagnostics-color=auto</samp> will be the default if <code>GCC_COLORS</code>
  is present and non-empty in the environment, and
! <samp>-fdiagnostics-color=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-unknown-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-unknown-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.
! </p>
! <p>If GCC is configured with some multilibs that use glibc and some that
! do not, this option applies only to the multilibs that use glibc.
  However, such configurations may not work well as not all the relevant
  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-target=i686-unknown-linux-gnu=/path/to/i686/compiler,x86_64-pc-linux-gnu
! </pre></div>
! </dd>
! </dl>
  
+ <a name="Cross_002dCompiler_002dSpecific-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-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>
! </dd>
! <dt><code>--with-avrlibc</code></dt>
! <dd><p>Specifies that &lsquo;<samp>AVR-Libc</samp>&rsquo; is
  being used as the target C 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="http://gcc.gnu.org/PR54461">PR54461</a>.
  This option is only supported for the AVR target.  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-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">
! <dt><code>build_configargs</code></dt>
! <dd><a name="index-build_005fconfigargs"></a>
! <p>The contents of this variable is passed to all build <code>configure</code>
! scripts.
! </p>
! </dd>
! <dt><code>host_configargs</code></dt>
! <dd><a name="index-host_005fconfigargs"></a>
! <p>The contents of this variable is passed to all host <code>configure</code>
! scripts.
! </p>
! </dd>
! <dt><code>target_configargs</code></dt>
! <dd><a name="index-target_005fconfigargs"></a>
! <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="Java_002dSpecific-Options"></a>
! <h4 class="subheading">Java-Specific Options</h4>
  
  <p>The following option applies to the build of the Java front end.
! </p>
! <dl compact="compact">
! <dt><code>--disable-libgcj</code></dt>
! <dd><p>Specify that the run-time libraries
  used by GCJ should not be built.  This is useful in case you intend
! to use GCJ with some other run-time, or you&rsquo;re going to install it
  separately, or it just happens not to build on your particular
  machine.  In general, if the Java front end is enabled, the GCJ
! libraries will be enabled too, unless they&rsquo;re known to not work on
! the target platform.  If GCJ is enabled but &lsquo;<samp>libgcj</samp>&rsquo; isn&rsquo;t built, you
  may need to port it; in this case, before modifying the top-level
! <samp>configure.in</samp> so that &lsquo;<samp>libgcj</samp>&rsquo; is enabled by default on this platform,
! you may use <samp>--enable-libgcj</samp> to override the default.
! </p>
! </dd>
! </dl>
  
! <p>The following options apply to building &lsquo;<samp>libgcj</samp>&rsquo;.
! </p>
! <a name="General-Options"></a>
! <h4 class="subsubheading">General Options</h4>
  
! <dl compact="compact">
! <dt><code>--enable-java-maintainer-mode</code></dt>
! <dd><p>By default the &lsquo;<samp>libjava</samp>&rsquo; build will not attempt to compile the
! <samp>.java</samp> source files to <samp>.class</samp>.  Instead, it will use the
! <samp>.class</samp> files from the source tree.  If you use this option you
! must have executables named <code>ecj1</code> and <code>gjavah</code> in your path
  for use by the build.  You must use this option if you intend to
! modify any <samp>.java</samp> files in <samp>libjava</samp>.
! </p>
! </dd>
! <dt><code>--with-java-home=<var>dirname</var></code></dt>
! <dd><p>This &lsquo;<samp>libjava</samp>&rsquo; option overrides the default value of the
! &lsquo;<samp>java.home</samp>&rsquo; system property.  It is also used to set
! &lsquo;<samp>sun.boot.class.path</samp>&rsquo; to <samp><var>dirname</var>/lib/rt.jar</samp>.  By
! default &lsquo;<samp>java.home</samp>&rsquo; is set to <samp><var>prefix</var></samp> and
! &lsquo;<samp>sun.boot.class.path</samp>&rsquo; to
! <samp><var>datadir</var>/java/libgcj-<var>version</var>.jar</samp>.
! </p>
! </dd>
! <dt><code>--with-ecj-jar=<var>filename</var></code></dt>
! <dd><p>This option can be used to specify the location of an external jar
  file containing the Eclipse Java compiler.  A specially modified
! version of this compiler is used by <code>gcj</code> to parse
! <samp>.java</samp> source files.  If this option is given, the
! &lsquo;<samp>libjava</samp>&rsquo; build will create and install an <samp>ecj1</samp> executable
  which uses this jar file at runtime.
! </p>
! <p>If this option is not given, but an <samp>ecj.jar</samp> file is found in
! the topmost source tree at configure time, then the &lsquo;<samp>libgcj</samp>&rsquo;
! build will create and install <samp>ecj1</samp>, and will also install the
! discovered <samp>ecj.jar</samp> into a suitable place in the install tree.
! </p>
! <p>If <samp>ecj1</samp> is not installed, then the user will have to supply one
! on his path in order for <code>gcj</code> to properly parse <samp>.java</samp>
  source files.  A suitable jar is available from
  <a href="ftp://sourceware.org/pub/java/">ftp://sourceware.org/pub/java/</a>.
! </p>
! </dd>
! <dt><code>--disable-getenv-properties</code></dt>
! <dd><p>Don&rsquo;t set system properties from <code>GCJ_PROPERTIES</code>.
! </p>
! </dd>
! <dt><code>--enable-hash-synchronization</code></dt>
! <dd><p>Use a global hash table for monitor locks.  Ordinarily,
! &lsquo;<samp>libgcj</samp>&rsquo;&rsquo;s &lsquo;<samp>configure</samp>&rsquo; script automatically makes
  the correct choice for this option for your platform.  Only use
  this if you know you need the library to be configured differently.
! </p>
! </dd>
! <dt><code>--enable-interpreter</code></dt>
! <dd><p>Enable the Java interpreter.  The interpreter is automatically
  enabled by default on all platforms that support it.  This option
  is really only useful if you want to disable the interpreter
! (using <samp>--disable-interpreter</samp>).
! </p>
! </dd>
! <dt><code>--disable-java-net</code></dt>
! <dd><p>Disable java.net.  This disables the native part of java.net only,
  using non-functional stubs for native method implementations.
! </p>
! </dd>
! <dt><code>--disable-jvmpi</code></dt>
! <dd><p>Disable JVMPI support.
! </p>
! </dd>
! <dt><code>--disable-libgcj-bc</code></dt>
! <dd><p>Disable BC ABI compilation of certain parts of libgcj.  By default,
! some portions of libgcj are compiled with <samp>-findirect-dispatch</samp>
! and <samp>-fno-indirect-classes</samp>, allowing them to be overridden at
  run-time.
! </p>
! <p>If <samp>--disable-libgcj-bc</samp> is specified, libgcj is built without
  these options.  This allows the compile-time linker to resolve
  dependencies when statically linking to libgcj.  However it makes it
  impossible to override the affected portions of libgcj at run-time.
! </p>
! </dd>
! <dt><code>--enable-reduced-reflection</code></dt>
! <dd><p>Build most of libgcj with <samp>-freduced-reflection</samp>.  This reduces
  the size of libgcj at the expense of not being able to do accurate
  reflection on the classes it contains.  This option is safe if you
  know that code using libgcj will never use reflection on the standard
  runtime classes in libgcj (including using serialization, RMI or CORBA).
! </p>
! </dd>
! <dt><code>--with-ecos</code></dt>
! <dd><p>Enable runtime eCos target support.
! </p>
! </dd>
! <dt><code>--without-libffi</code></dt>
! <dd><p>Don&rsquo;t use &lsquo;<samp>libffi</samp>&rsquo;.  This will disable the interpreter and JNI
! support as well, as these require &lsquo;<samp>libffi</samp>&rsquo; to work.
! </p>
! </dd>
! <dt><code>--enable-libgcj-debug</code></dt>
! <dd><p>Enable runtime debugging code.
! </p>
! </dd>
! <dt><code>--enable-libgcj-multifile</code></dt>
! <dd><p>If specified, causes all <samp>.java</samp> source files to be
! compiled into <samp>.class</samp> files in one invocation of
! &lsquo;<samp>gcj</samp>&rsquo;.  This can speed up build time, but is more
  resource-intensive.  If this option is unspecified or
! disabled, &lsquo;<samp>gcj</samp>&rsquo; is invoked once for each <samp>.java</samp>
! file to compile into a <samp>.class</samp> file.
! </p>
! </dd>
! <dt><code>--with-libiconv-prefix=DIR</code></dt>
! <dd><p>Search for libiconv in <samp>DIR/include</samp> and <samp>DIR/lib</samp>.
! </p>
! </dd>
! <dt><code>--with-system-zlib</code></dt>
! <dd><p>Use installed &lsquo;<samp>zlib</samp>&rsquo; rather than that included with GCC.
! </p>
! </dd>
! <dt><code>--with-win32-nlsapi=ansi, unicows or unicode</code></dt>
! <dd><p>Indicates how MinGW &lsquo;<samp>libgcj</samp>&rsquo; translates between UNICODE
  characters and the Win32 API.
! </p>
! </dd>
! <dt><code>--enable-java-home</code></dt>
! <dd><p>If enabled, this creates a JPackage compatible SDK environment during install.
  Note that if &ndash;enable-java-home is used, &ndash;with-arch-directory=ARCH must also
  be specified.
! </p>
! </dd>
! <dt><code>--with-arch-directory=ARCH</code></dt>
! <dd><p>Specifies the name to use for the <samp>jre/lib/ARCH</samp> directory in the SDK
  environment created when &ndash;enable-java-home is passed. Typical names for this
  directory include i386, amd64, ia64, etc.
! </p>
! </dd>
! <dt><code>--with-os-directory=DIR</code></dt>
! <dd><p>Specifies the OS directory for the SDK include directory. This is set to auto
! detect, and is typically &rsquo;linux&rsquo;.
! </p>
! </dd>
! <dt><code>--with-origin-name=NAME</code></dt>
! <dd><p>Specifies the JPackage origin name. This defaults to the &rsquo;gcj&rsquo; in
  java-1.5.0-gcj.
! </p>
! </dd>
! <dt><code>--with-arch-suffix=SUFFIX</code></dt>
! <dd><p>Specifies the suffix for the sdk directory. Defaults to the empty string.
! Examples include &rsquo;.x86_64&rsquo; in &rsquo;java-1.5.0-gcj-1.5.0.0.x86_64&rsquo;.
! </p>
! </dd>
! <dt><code>--with-jvm-root-dir=DIR</code></dt>
! <dd><p>Specifies where to install the SDK. Default is $(prefix)/lib/jvm.
! </p>
! </dd>
! <dt><code>--with-jvm-jar-dir=DIR</code></dt>
! <dd><p>Specifies where to install jars. Default is $(prefix)/lib/jvm-exports.
! </p>
! </dd>
! <dt><code>--with-python-dir=DIR</code></dt>
! <dd><p>Specifies where to install the Python modules used for aot-compile. DIR should
  not include the prefix used in installation. For example, if the Python modules
  are to be installed in /usr/lib/python2.5/site-packages, then
  &ndash;with-python-dir=/lib/python2.5/site-packages should be passed. If this is
  not specified, then the Python modules are installed in $(prefix)/share/python.
! </p>
! </dd>
! <dt><code>--enable-aot-compile-rpm</code></dt>
! <dd><p>Adds aot-compile-rpm to the list of installed scripts.
! </p>
! </dd>
! <dt><code>--enable-browser-plugin</code></dt>
! <dd><p>Build the gcjwebplugin web browser plugin.
! </p>
! </dd>
! <dt><code>--enable-static-libjava</code></dt>
! <dd><p>Build static libraries in libjava. The default is to only build shared
  libraries.
! </p>
! <dl compact="compact">
! <dt><code>ansi</code></dt>
! <dd><p>Use the single-byte <code>char</code> and the Win32 A functions natively,
  translating to and from UNICODE when using these functions.  If
  unspecified, this is the default.
! </p>
! </dd>
! <dt><code>unicows</code></dt>
! <dd><p>Use the <code>WCHAR</code> and Win32 W functions natively.  Adds
! <code>-lunicows</code> to <samp>libgcj.spec</samp> to link with &lsquo;<samp>libunicows</samp>&rsquo;.
! <samp>unicows.dll</samp> needs to be deployed on Microsoft Windows 9X machines
! running built executables.  <samp>libunicows.a</samp>, an open-source
! import library around Microsoft&rsquo;s <code>unicows.dll</code>, is obtained from
  <a href="http://libunicows.sourceforge.net/">http://libunicows.sourceforge.net/</a>, which also gives details
! on getting <samp>unicows.dll</samp> from Microsoft.
! </p>
! </dd>
! <dt><code>unicode</code></dt>
! <dd><p>Use the <code>WCHAR</code> and Win32 W functions natively.  Does <em>not</em>
! add <code>-lunicows</code> to <samp>libgcj.spec</samp>.  The built executables will
! only run on Microsoft Windows NT and above.
! </p></dd>
! </dl>
! </dd>
  </dl>
  
! <a name="AWT_002dSpecific-Options"></a>
! <h4 class="subsubheading">AWT-Specific Options</h4>
  
! <dl compact="compact">
! <dt><code>--with-x</code></dt>
! <dd><p>Use the X Window System.
! </p>
! </dd>
! <dt><code>--enable-java-awt=PEER(S)</code></dt>
! <dd><p>Specifies the AWT peer library or libraries to build alongside
! &lsquo;<samp>libgcj</samp>&rsquo;.  If this option is unspecified or disabled, AWT
! will be non-functional.  Current valid values are <samp>gtk</samp> and
! <samp>xlib</samp>.  Multiple libraries should be separated by a
! comma (i.e. <samp>--enable-java-awt=gtk,xlib</samp>).
! </p>
! </dd>
! <dt><code>--enable-gtk-cairo</code></dt>
! <dd><p>Build the cairo Graphics2D implementation on GTK.
! </p>
! </dd>
! <dt><code>--enable-java-gc=TYPE</code></dt>
! <dd><p>Choose garbage collector.  Defaults to <samp>boehm</samp> if unspecified.
! </p>
! </dd>
! <dt><code>--disable-gtktest</code></dt>
! <dd><p>Do not try to compile and run a test GTK+ program.
! </p>
! </dd>
! <dt><code>--disable-glibtest</code></dt>
! <dd><p>Do not try to compile and run a test GLIB program.
! </p>
! </dd>
! <dt><code>--with-libart-prefix=PFX</code></dt>
! <dd><p>Prefix where libart is installed (optional).
! </p>
! </dd>
! <dt><code>--with-libart-exec-prefix=PFX</code></dt>
! <dd><p>Exec prefix where libart is installed (optional).
! </p>
! </dd>
! <dt><code>--disable-libarttest</code></dt>
! <dd><p>Do not try to compile and run a test libart program.
! </p>
! </dd>
! </dl>
  
  
! <hr />
! <p>
! <p><a href="./index.html">Return to the GCC Installation page</a>
! </p>
  
  
  
  
  
  
  
  
  
  
  
+ </body>
+ </html>
diff -Nrcpad gcc-5.4.0/INSTALL/download.html gcc-5.5.0/INSTALL/download.html
*** gcc-5.4.0/INSTALL/download.html	Fri Jun  3 08:45:08 2016
--- gcc-5.5.0/INSTALL/download.html	Tue Oct 10 08:13:23 2017
***************
*** 1,87 ****
! <html lang="en">
! <head>
! <title>Downloading GCC</title>
! <meta http-equiv="Content-Type" content="text/html">
! <meta name="description" content="Downloading GCC">
! <meta name="generator" content="makeinfo 4.12">
! <link title="Top" rel="top" href="#Top">
! <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
! <!--
! Copyright (C) 1988-2015 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
  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 "GNU Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
!      A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
!      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.-->
! <meta http-equiv="Content-Style-Type" content="text/css">
! <style type="text/css"><!--
!   pre.display { font-family:inherit }
!   pre.format  { font-family:inherit }
!   pre.smalldisplay { font-family:inherit; font-size:smaller }
!   pre.smallformat  { font-family:inherit; font-size:smaller }
!   pre.smallexample { font-size:smaller }
!   pre.smalllisp    { font-size:smaller }
!   span.sc    { font-variant:small-caps }
!   span.roman { font-family:serif; font-weight:normal; } 
!   span.sansserif { font-family:sans-serif; font-weight:normal; } 
! --></style>
  </head>
- <body>
- <h1 class="settitle">Downloading GCC</h1>
- <a name="index-Downloading-GCC-1"></a><a name="index-Downloading-the-Source-2"></a>
- GCC is distributed via <a href="http://gcc.gnu.org/svn.html">SVN</a> and FTP
- tarballs compressed with <samp><span class="command">gzip</span></samp> or
- <samp><span class="command">bzip2</span></samp>.
  
!    <p>Please refer to the <a href="http://gcc.gnu.org/releases.html">releases web page</a>
! for information on how to obtain GCC.
  
!    <p>The source distribution includes the C, C++, Objective-C, Fortran, Java,
  and Ada (in the case of GCC 3.1 and later) compilers, as well as
! runtime libraries for C++, Objective-C, Fortran, and Java. 
  For previous versions these were downloadable as separate components such
  as the core GCC distribution, which included the C language front end and
  shared components, and language-specific distributions including the
  language front end and the language runtime (where appropriate).
! 
!    <p>If you also intend to build binutils (either to upgrade an existing
  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
! (<samp><span class="file">bfd</span></samp>, <samp><span class="file">binutils</span></samp>, <samp><span class="file">gas</span></samp>, <samp><span class="file">gprof</span></samp>, <samp><span class="file">ld</span></samp>,
! <samp><span class="file">opcodes</span></samp>, <small class="dots">...</small>) to the directory containing the GCC sources.
! 
!    <p>Likewise the GMP, MPFR and MPC libraries can be automatically built
  together with GCC.  Unpack the GMP, MPFR and/or MPC source
  distributions in the directory containing the GCC sources and rename
! their directories to <samp><span class="file">gmp</span></samp>, <samp><span class="file">mpfr</span></samp> and <samp><span class="file">mpc</span></samp>,
  respectively (or use symbolic links with the same name).
! 
!    <p><hr />
  <p><a href="./index.html">Return to the GCC Installation page</a>
  
- <!-- ***Configuration*********************************************************** -->
- <!-- ***Building**************************************************************** -->
- <!-- ***Testing***************************************************************** -->
- <!-- ***Final install*********************************************************** -->
- <!-- ***Binaries**************************************************************** -->
- <!-- ***Specific**************************************************************** -->
- <!-- ***Old documentation****************************************************** -->
- <!-- ***GFDL******************************************************************** -->
- <!-- *************************************************************************** -->
- <!-- Part 6 The End of the Document -->
- </body></html>
  
--- 1,132 ----
! <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
! <html>
! <!-- Copyright (C) 1988-2015 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
  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 "GNU
! Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
! A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
! 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.1, http://www.gnu.org/software/texinfo/ -->
! <head>
! <title>Installing GCC</title>
! 
! <meta name="description" content="Installing GCC">
! <meta name="keywords" content="Installing GCC">
! <meta name="resource-type" content="document">
! <meta name="distribution" content="global">
! <meta name="Generator" content="makeinfo">
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <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>
  
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! <a name="index-Downloading-GCC"></a>
! <a name="index-Downloading-the-Source"></a>
! 
! <p>GCC is distributed via <a href="http://gcc.gnu.org/svn.html">SVN</a> and FTP
! tarballs compressed with <code>gzip</code> or
! <code>bzip2</code>.
! </p>
! <p>Please refer to the <a href="http://gcc.gnu.org/releases.html">releases web page</a>
! for information on how to obtain GCC.
! </p>
! <p>The source distribution includes the C, C++, Objective-C, Fortran, Java,
  and Ada (in the case of GCC 3.1 and later) compilers, as well as
! runtime libraries for C++, Objective-C, Fortran, and Java.
  For previous versions these were downloadable as separate components such
  as the core GCC distribution, which included the C language front end and
  shared components, and language-specific distributions including the
  language front end and the language runtime (where appropriate).
! </p>
! <p>If you also intend to build binutils (either to upgrade an existing
  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
! (<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 and MPC libraries can be automatically built
  together with GCC.  Unpack the GMP, MPFR and/or MPC source
  distributions in the directory containing the GCC sources and rename
! their directories to <samp>gmp</samp>, <samp>mpfr</samp> and <samp>mpc</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>
+ 
+ 
+ 
  
  
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ </body>
+ </html>
diff -Nrcpad gcc-5.4.0/INSTALL/finalinstall.html gcc-5.5.0/INSTALL/finalinstall.html
*** gcc-5.4.0/INSTALL/finalinstall.html	Fri Jun  3 08:45:08 2016
--- gcc-5.5.0/INSTALL/finalinstall.html	Tue Oct 10 08:13:24 2017
***************
*** 1,172 ****
! <html lang="en">
! <head>
! <title>Installing GCC: Final installation</title>
! <meta http-equiv="Content-Type" content="text/html">
! <meta name="description" content="Installing GCC: Final installation">
! <meta name="generator" content="makeinfo 4.12">
! <link title="Top" rel="top" href="#Top">
! <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
! <!--
! Copyright (C) 1988-2015 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
  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 "GNU Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
!      A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
!      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.-->
! <meta http-equiv="Content-Style-Type" content="text/css">
! <style type="text/css"><!--
!   pre.display { font-family:inherit }
!   pre.format  { font-family:inherit }
!   pre.smalldisplay { font-family:inherit; font-size:smaller }
!   pre.smallformat  { font-family:inherit; font-size:smaller }
!   pre.smallexample { font-size:smaller }
!   pre.smalllisp    { font-size:smaller }
!   span.sc    { font-variant:small-caps }
!   span.roman { font-family:serif; font-weight:normal; } 
!   span.sansserif { font-family:sans-serif; font-weight:normal; } 
! --></style>
  </head>
! <body>
! <h1 class="settitle">Installing GCC: Final installation</h1>
! Now that GCC has been built (and optionally tested), you can install it with
! <pre class="smallexample">     cd <var>objdir</var> &amp;&amp; make install
! </pre>
!    <p>We strongly recommend to install into a target directory where there is
  no previous version of GCC present.  Also, the GNAT runtime should not
  be stripped, as this would break certain features of the debugger that
  depend on this debugging information (catching Ada exceptions for
  instance).
! 
!    <p>That step completes the installation of GCC; user level binaries can
! be found in <samp><var>prefix</var><span class="file">/bin</span></samp> where <var>prefix</var> is the value
! you specified with the <samp><span class="option">--prefix</span></samp> to configure (or
! <samp><span class="file">/usr/local</span></samp> by default).  (If you specified <samp><span class="option">--bindir</span></samp>,
  that directory will be used instead; otherwise, if you specified
! <samp><span class="option">--exec-prefix</span></samp>, <samp><var>exec-prefix</var><span class="file">/bin</span></samp> will be used.) 
  Headers for the C++ and Java libraries are installed in
! <samp><var>prefix</var><span class="file">/include</span></samp>; libraries in <samp><var>libdir</var></samp>
! (normally <samp><var>prefix</var><span class="file">/lib</span></samp>); internal parts of the compiler in
! <samp><var>libdir</var><span class="file">/gcc</span></samp> and <samp><var>libexecdir</var><span class="file">/gcc</span></samp>; documentation
  in info format in <samp><var>infodir</var></samp> (normally
! <samp><var>prefix</var><span class="file">/info</span></samp>).
! 
!    <p>When installing cross-compilers, GCC's executables
  are not only installed into <samp><var>bindir</var></samp>, that
! is, <samp><var>exec-prefix</var><span class="file">/bin</span></samp>, but additionally into
! <samp><var>exec-prefix</var><span class="file">/</span><var>target-alias</var><span class="file">/bin</span></samp>, if that directory
! exists.  Typically, such <dfn>tooldirs</dfn> hold target-specific
  binutils, including assembler and linker.
! 
!    <p>Installation into a temporary staging area or into a <samp><span class="command">chroot</span></samp>
  jail can be achieved with the command
  
! <pre class="smallexample">     make DESTDIR=<var>path-to-rootdir</var> install
! </pre>
!    <p class="noindent">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>There is a subtle point with tooldirs and <code>DESTDIR</code>:
  If you relocate a cross-compiler installation with
! e.g. &lsquo;<samp><span class="samp">DESTDIR=</span><var>rootdir</var></samp>&rsquo;, then the directory
! <samp><var>rootdir</var><span class="file">/</span><var>exec-prefix</var><span class="file">/</span><var>target-alias</var><span class="file">/bin</span></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>You can install stripped programs and libraries with
! 
! <pre class="smallexample">     make install-strip
! </pre>
!    <p>If you are bootstrapping a released version of GCC then please
  quickly review the build status page for your release, available from
! <a href="http://gcc.gnu.org/buildstat.html">http://gcc.gnu.org/buildstat.html</a>. 
  If your system is not listed for the version of GCC that you built,
  send a note to
  <a href="mailto:gcc@gcc.gnu.org">gcc@gcc.gnu.org</a> indicating
! that you successfully built and installed GCC. 
  Include the following information:
! 
!      <ul>
! <li>Output from running <samp><var>srcdir</var><span class="file">/config.guess</span></samp>.  Do not send
  that file itself, just the one-line output from running it.
  
!      <li>The output of &lsquo;<samp><span class="samp">gcc -v</span></samp>&rsquo; for your newly installed <samp><span class="command">gcc</span></samp>. 
  This tells us which version of GCC you built and the options you passed to
  configure.
  
!      <li>Whether you enabled all languages or a subset of them.  If you used a
  full distribution then this information is part of the configure
! options in the output of &lsquo;<samp><span class="samp">gcc -v</span></samp>&rsquo;, but if you downloaded the
! &ldquo;core&rdquo; compiler plus additional front ends then it isn't apparent
  which ones you built unless you tell us about it.
  
!      <li>If the build was for GNU/Linux, also include:
!           <ul>
! <li>The distribution name and version (e.g., Red Hat 7.1 or Debian 2.2.3);
! this information should be available from <samp><span class="file">/etc/issue</span></samp>.
  
!           <li>The version of the Linux kernel, available from &lsquo;<samp><span class="samp">uname --version</span></samp>&rsquo;
! or &lsquo;<samp><span class="samp">uname -a</span></samp>&rsquo;.
  
!           <li>The version of glibc you used; for RPM-based systems like Red Hat,
! Mandrake, and SuSE type &lsquo;<samp><span class="samp">rpm -q glibc</span></samp>&rsquo; to get the glibc version,
! and on systems like Debian and Progeny use &lsquo;<samp><span class="samp">dpkg -l libc6</span></samp>&rsquo;. 
! </ul>
!      For other systems, you can include similar information if you think it is
  relevant.
! 
!      <li>Any other information that you think would be useful to people building
  GCC on the same configuration.  The new entry in the build status list
! will include a link to the archived copy of your message. 
! </ul>
  
!    <p>We'd also like to know if the
  <a href="specific.html">host/target specific installation notes</a>
! didn'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>If you find a bug, please report it following the
  <a href="../bugs/">bug reporting guidelines</a>.
! 
!    <p>If you want to print the GCC manuals, do &lsquo;<samp><span class="samp">cd </span><var>objdir</var><span class="samp">; make
! dvi</span></samp>&rsquo;.  You will need to have <samp><span class="command">texi2dvi</span></samp> (version at least 4.7)
! and TeX installed.  This creates a number of <samp><span class="file">.dvi</span></samp> files in
  subdirectories of <samp><var>objdir</var></samp>; these may be converted for
! printing with programs such as <samp><span class="command">dvips</span></samp>.  Alternately, by using
! &lsquo;<samp><span class="samp">make pdf</span></samp>&rsquo; in place of &lsquo;<samp><span class="samp">make dvi</span></samp>&rsquo;, you can create documentation
! in the form of <samp><span class="file">.pdf</span></samp> files; this requires <samp><span class="command">texi2pdf</span></samp>, which
  is included with Texinfo version 4.8 and later.  You can also
! <a href="http://shop.fsf.org/">buy printed manuals from the Free Software Foundation</a>, though such manuals may not be for the most
  recent version of GCC.
  
-    <p>If you would like to generate online HTML documentation, do &lsquo;<samp><span class="samp">cd
- </span><var>objdir</var><span class="samp">; make html</span></samp>&rsquo; and HTML will be generated for the gcc manuals in
- <samp><var>objdir</var><span class="file">/gcc/HTML</span></samp>.
  
-    <p><hr />
- <p><a href="./index.html">Return to the GCC Installation page</a>
  
- <!-- ***Binaries**************************************************************** -->
- <!-- ***Specific**************************************************************** -->
- <!-- ***Old documentation****************************************************** -->
- <!-- ***GFDL******************************************************************** -->
- <!-- *************************************************************************** -->
- <!-- Part 6 The End of the Document -->
- </body></html>
  
--- 1,227 ----
! <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
! <html>
! <!-- Copyright (C) 1988-2015 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
  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 "GNU
! Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
! A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
! 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.1, http://www.gnu.org/software/texinfo/ -->
! <head>
! <title>Installing GCC</title>
! 
! <meta name="description" content="Installing GCC">
! <meta name="keywords" content="Installing GCC">
! <meta name="resource-type" content="document">
! <meta name="distribution" content="global">
! <meta name="Generator" content="makeinfo">
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <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>
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! <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
  no previous version of GCC present.  Also, the GNAT runtime should not
  be stripped, as this would break certain features of the debugger that
  depend on this debugging information (catching Ada exceptions for
  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++ and Java libraries 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>If you are bootstrapping a released version of GCC then please
  quickly review the build status page for your release, available from
! <a href="http://gcc.gnu.org/buildstat.html">http://gcc.gnu.org/buildstat.html</a>.
  If your system is not listed for the version of GCC that you built,
  send a note to
  <a href="mailto:gcc@gcc.gnu.org">gcc@gcc.gnu.org</a> indicating
! that you successfully built and installed GCC.
  Include the following information:
! </p>
! <ul>
! <li> Output from running <samp><var>srcdir</var>/config.guess</samp>.  Do not send
  that file itself, just the one-line output from running it.
  
! </li><li> The output of &lsquo;<samp>gcc -v</samp>&rsquo; for your newly installed <code>gcc</code>.
  This tells us which version of GCC you built and the options you passed to
  configure.
  
! </li><li> Whether you enabled all languages or a subset of them.  If you used a
  full distribution then this information is part of the configure
! options in the output of &lsquo;<samp>gcc -v</samp>&rsquo;, but if you downloaded the
! &ldquo;core&rdquo; compiler plus additional front ends then it isn&rsquo;t apparent
  which ones you built unless you tell us about it.
  
! </li><li> If the build was for GNU/Linux, also include:
! <ul>
! <li> The distribution name and version (e.g., Red Hat 7.1 or Debian 2.2.3);
! this information should be available from <samp>/etc/issue</samp>.
  
! </li><li> The version of the Linux kernel, available from &lsquo;<samp>uname --version</samp>&rsquo;
! or &lsquo;<samp>uname -a</samp>&rsquo;.
  
! </li><li> The version of glibc you used; for RPM-based systems like Red Hat,
! Mandrake, and SuSE type &lsquo;<samp>rpm -q glibc</samp>&rsquo; to get the glibc version,
! and on systems like Debian and Progeny use &lsquo;<samp>dpkg -l libc6</samp>&rsquo;.
! </li></ul>
! <p>For other systems, you can include similar information if you think it is
  relevant.
! </p>
! </li><li> Any other information that you think would be useful to people building
  GCC on the same configuration.  The new entry in the build status list
! will include a link to the archived copy of your message.
! </li></ul>
  
! <p>We&rsquo;d also 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>
! <p>If you want to print the GCC manuals, do &lsquo;<samp>cd <var>objdir</var>; make
! dvi</samp>&rsquo;.  You will need to have <code>texi2dvi</code> (version at least 4.7)
! and TeX installed.  This creates a number of <samp>.dvi</samp> files in
  subdirectories of <samp><var>objdir</var></samp>; these may be converted for
! printing with programs such as <code>dvips</code>.  Alternately, by using
! &lsquo;<samp>make pdf</samp>&rsquo; in place of &lsquo;<samp>make dvi</samp>&rsquo;, you can create documentation
! in the form of <samp>.pdf</samp> files; this requires <code>texi2pdf</code>, which
  is included with Texinfo version 4.8 and later.  You can also
! <a href="http://shop.fsf.org/">buy printed manuals from the
! Free Software Foundation</a>, though such manuals may not be for the most
  recent version of GCC.
+ </p>
+ <p>If you would like to generate online HTML documentation, do &lsquo;<samp>cd
+ <var>objdir</var>; make html</samp>&rsquo; and HTML will be generated for the gcc manuals in
+ <samp><var>objdir</var>/gcc/HTML</samp>.
+ </p>
+ <hr />
+ <p>
+ <p><a href="./index.html">Return to the GCC Installation page</a>
+ </p>
+ 
+ 
  
  
  
  
+ 
+ 
+ </body>
+ </html>
diff -Nrcpad gcc-5.4.0/INSTALL/gfdl.html gcc-5.5.0/INSTALL/gfdl.html
*** gcc-5.4.0/INSTALL/gfdl.html	Fri Jun  3 08:45:08 2016
--- gcc-5.5.0/INSTALL/gfdl.html	Tue Oct 10 08:13:25 2017
***************
*** 1,82 ****
! <html lang="en">
! <head>
! <title>Installing GCC: GNU Free Documentation License</title>
! <meta http-equiv="Content-Type" content="text/html">
! <meta name="description" content="Installing GCC: GNU Free Documentation License">
! <meta name="generator" content="makeinfo 4.12">
! <link title="Top" rel="top" href="#Top">
! <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
! <!--
! Copyright (C) 1988-2015 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
  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 "GNU Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
!      A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
!      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.-->
! <meta http-equiv="Content-Style-Type" content="text/css">
! <style type="text/css"><!--
!   pre.display { font-family:inherit }
!   pre.format  { font-family:inherit }
!   pre.smalldisplay { font-family:inherit; font-size:smaller }
!   pre.smallformat  { font-family:inherit; font-size:smaller }
!   pre.smallexample { font-size:smaller }
!   pre.smalllisp    { font-size:smaller }
!   span.sc    { font-variant:small-caps }
!   span.roman { font-family:serif; font-weight:normal; } 
!   span.sansserif { font-family:sans-serif; font-weight:normal; } 
! --></style>
  </head>
- <body>
- <h1 class="settitle">Installing GCC: GNU Free Documentation License</h1>
- <h1 align="center">Installing GCC: GNU Free Documentation License</h1><!-- man begin DESCRIPTION -->
  
!    <p><a name="index-FDL_002c-GNU-Free-Documentation-License-1"></a><div align="center">Version 1.3, 3 November 2008</div>
  
- <pre class="display">     Copyright &copy; 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
-      <a href="http://fsf.org/">http://fsf.org/</a>
-      
-      Everyone is permitted to copy and distribute verbatim copies
-      of this license document, but changing it is not allowed.
- </pre>
-      <ol type=1 start=0>
- <li>PREAMBLE
  
!      <p>The purpose of this License is to make a manual, textbook, or other
! functional and useful document <dfn>free</dfn> 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
  to get credit for their work, while not being considered responsible
  for modifications made by others.
! 
!      <p>This License is a kind of &ldquo;copyleft&rdquo;, 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.
! 
!      <p>We have designed this License in order to use it for manuals for free
  software, because free software needs free documentation: a free
  program should come with manuals providing the same freedoms that the
  software does.  But this License is not limited to software manuals;
  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.
  
!      <li>APPLICABILITY AND DEFINITIONS
! 
!      <p>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
--- 1,133 ----
! <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
! <html>
! <!-- Copyright (C) 1988-2015 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
  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 "GNU
! Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
! A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
! 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.1, http://www.gnu.org/software/texinfo/ -->
! <head>
! <title>Installing GCC</title>
! 
! <meta name="description" content="Installing GCC">
! <meta name="keywords" content="Installing GCC">
! <meta name="resource-type" content="document">
! <meta name="distribution" content="global">
! <meta name="Generator" content="makeinfo">
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <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>
  
  
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! <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="http://fsf.org/">http://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>
! <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
  to get credit for their work, while not being considered responsible
  for modifications made by others.
! </p>
! <p>This License is a kind of &ldquo;copyleft&rdquo;, 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.
! </p>
! <p>We have designed this License in order to use it for manuals for free
  software, because free software needs free documentation: a free
  program should come with manuals providing the same freedoms that the
  software does.  But this License is not limited to software manuals;
  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.
+ </p>
+ </li><li> APPLICABILITY AND DEFINITIONS
  
! <p>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
*************** refers to any such manual or work.  Any
*** 85,98 ****
  licensee, and is addressed as &ldquo;you&rdquo;.  You accept the license if you
  copy, modify or distribute the work in a way requiring permission
  under copyright law.
! 
!      <p>A &ldquo;Modified Version&rdquo; 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.
! 
!      <p>A &ldquo;Secondary Section&rdquo; 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
--- 136,149 ----
  licensee, and is addressed as &ldquo;you&rdquo;.  You accept the license if you
  copy, modify or distribute the work in a way requiring permission
  under copyright law.
! </p>
! <p>A &ldquo;Modified Version&rdquo; 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.
! </p>
! <p>A &ldquo;Secondary Section&rdquo; 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&rsquo;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
*************** any mathematics.)  The relationship coul
*** 100,120 ****
  connection with the subject or with related matters, or of legal,
  commercial, philosophical, ethical or political position regarding
  them.
! 
!      <p>The &ldquo;Invariant Sections&rdquo; 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 Document may contain zero
  Invariant Sections.  If the Document does not identify any Invariant
  Sections then there are none.
! 
!      <p>The &ldquo;Cover Texts&rdquo; 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.
! 
!      <p>A &ldquo;Transparent&rdquo; 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
--- 151,171 ----
  connection with the subject or with related matters, or of legal,
  commercial, philosophical, ethical or political position regarding
  them.
! </p>
! <p>The &ldquo;Invariant Sections&rdquo; 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 Document may contain zero
  Invariant Sections.  If the Document does not identify any Invariant
  Sections then there are none.
! </p>
! <p>The &ldquo;Cover Texts&rdquo; 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.
! </p>
! <p>A &ldquo;Transparent&rdquo; 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
*************** drawing editor, and that is suitable for
*** 123,134 ****
  for automatic translation to a variety of formats suitable for input
  to text formatters.  A copy made in an otherwise Transparent file
  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 &ldquo;Transparent&rdquo; is called &ldquo;Opaque&rdquo;.
! 
!      <p>Examples of suitable formats for Transparent copies include plain
! <span class="sc">ascii</span> 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
--- 174,185 ----
  for automatic translation to a variety of formats suitable for input
  to text formatters.  A copy made in an otherwise Transparent file
  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 &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
*************** read and edited only by proprietary word
*** 139,173 ****
  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>The &ldquo;Title Page&rdquo; 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, &ldquo;Title Page&rdquo; means
! the text near the most prominent appearance of the work's title,
  preceding the beginning of the body of the text.
! 
!      <p>The &ldquo;publisher&rdquo; means any person or entity that distributes copies
  of the Document to the public.
! 
!      <p>A section &ldquo;Entitled XYZ&rdquo; 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 &ldquo;Acknowledgements&rdquo;,
  &ldquo;Dedications&rdquo;, &ldquo;Endorsements&rdquo;, or &ldquo;History&rdquo;.)  To &ldquo;Preserve the Title&rdquo;
  of such a section when you modify the Document means that it remains a
  section &ldquo;Entitled XYZ&rdquo; according to this definition.
! 
!      <p>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 included by reference in this
  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.
  
!      <li>VERBATIM COPYING
! 
!      <p>You may copy and distribute the Document in any medium, either
  commercially or noncommercially, provided that this License, the
  copyright notices, and the license notice saying this License applies
  to the Document are reproduced in all copies, and that you add no other
--- 190,224 ----
  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,
  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, &ldquo;Title Page&rdquo; means
! the text near the most prominent appearance of the work&rsquo;s title,
  preceding the beginning of the body of the text.
! </p>
! <p>The &ldquo;publisher&rdquo; means any person or entity that distributes copies
  of the Document to the public.
! </p>
! <p>A section &ldquo;Entitled XYZ&rdquo; 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 &ldquo;Acknowledgements&rdquo;,
  &ldquo;Dedications&rdquo;, &ldquo;Endorsements&rdquo;, or &ldquo;History&rdquo;.)  To &ldquo;Preserve the Title&rdquo;
  of such a section when you modify the Document means that it remains a
  section &ldquo;Entitled XYZ&rdquo; according to this definition.
! </p>
! <p>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 included by reference in this
  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.
+ </p>
+ </li><li> VERBATIM COPYING
  
! <p>You may copy and distribute the Document in any medium, either
  commercially or noncommercially, provided that this License, the
  copyright notices, and the license notice saying this License applies
  to the Document are reproduced in all copies, and that you add no other
*************** technical measures to obstruct or contro
*** 176,262 ****
  copying of the copies you make or distribute.  However, you may accept
  compensation in exchange for copies.  If you distribute a large enough
  number of copies you must also follow the conditions in section 3.
! 
!      <p>You may also lend copies, under the same conditions stated above, and
  you may publicly display copies.
  
!      <li>COPYING IN QUANTITY
! 
!      <p>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
! visible.  You may add other material on the covers in addition. 
  Copying with changes limited to the covers, as long as they preserve
  the title of the Document and satisfy these conditions, can be treated
  as verbatim copying in other respects.
! 
!      <p>If the required texts for either cover are too voluminous to fit
  legibly, you should put the first ones listed (as many as fit
  reasonably) on the actual cover, and continue the rest onto adjacent
  pages.
! 
!      <p>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
  that this Transparent copy will remain thus accessible at the stated
  location until at least one year after the last time you distribute an
  Opaque copy (directly or through your agents or retailers) of that
  edition to the public.
! 
!      <p>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.
  
!      <li>MODIFICATIONS
! 
!      <p>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 Modified Version under precisely this License, with the Modified
  Version filling the role of the Document, thus licensing distribution
  and modification of the Modified Version to whoever possesses a copy
  of it.  In addition, you must do these things in the Modified Version:
! 
!           <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
  of the Document).  You may use the same title as a previous version
  if the original publisher of that version gives permission.
  
!           <li>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.
  
!           <li>State on the Title page the name of the publisher of the
  Modified Version, as the publisher.
  
!           <li>Preserve all the copyright notices of the Document.
  
!           <li>Add an appropriate copyright notice for your modifications
  adjacent to the other copyright notices.
  
!           <li>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.
  
!           <li>Preserve in that license notice the full lists of Invariant Sections
! and required Cover Texts given in the Document's license notice.
  
!           <li>Include an unaltered copy of this License.
  
!           <li>Preserve the section Entitled &ldquo;History&rdquo;, 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 &ldquo;History&rdquo; in the Document, create one
--- 227,313 ----
  copying of the copies you make or distribute.  However, you may accept
  compensation in exchange for copies.  If you distribute a large enough
  number of copies you must also follow the conditions in section 3.
! </p>
! <p>You may also lend copies, under the same conditions stated above, and
  you may publicly display copies.
+ </p>
+ </li><li> COPYING IN QUANTITY
  
! <p>If you publish printed copies (or copies in media that commonly have
  printed covers) of the Document, numbering more than 100, and the
! Document&rsquo;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
! visible.  You may add other material on the covers in addition.
  Copying with changes limited to the covers, as long as they preserve
  the title of the Document and satisfy these conditions, can be treated
  as verbatim copying in other respects.
! </p>
! <p>If the required texts for either cover are too voluminous to fit
  legibly, you should put the first ones listed (as many as fit
  reasonably) on the actual cover, and continue the rest onto adjacent
  pages.
! </p>
! <p>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
  that this Transparent copy will remain thus accessible at the stated
  location until at least one year after the last time you distribute an
  Opaque copy (directly or through your agents or retailers) of that
  edition to the public.
! </p>
! <p>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.
+ </p>
+ </li><li> MODIFICATIONS
  
! <p>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 Modified Version under precisely this License, with the Modified
  Version filling the role of the Document, thus licensing distribution
  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>
! <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
  of the Document).  You may use the same title as a previous version
  if the original publisher of that version gives permission.
  
! </li><li> 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.
  
! </li><li> State on the Title page the name of the publisher of the
  Modified Version, as the publisher.
  
! </li><li> Preserve all the copyright notices of the Document.
  
! </li><li> Add an appropriate copyright notice for your modifications
  adjacent to the other copyright notices.
  
! </li><li> 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.
  
! </li><li> Preserve in that license notice the full lists of Invariant Sections
! and required Cover Texts given in the Document&rsquo;s license notice.
  
! </li><li> Include an unaltered copy of this License.
  
! </li><li> Preserve the section Entitled &ldquo;History&rdquo;, 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 &ldquo;History&rdquo; in the Document, create one
*************** stating the title, year, authors, and pu
*** 264,309 ****
  given on its Title Page, then add an item describing the Modified
  Version as stated in the previous sentence.
  
!           <li>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 &ldquo;History&rdquo; 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.
  
!           <li>For any section Entitled &ldquo;Acknowledgements&rdquo; or &ldquo;Dedications&rdquo;, 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.
  
!           <li>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.
  
!           <li>Delete any section Entitled &ldquo;Endorsements&rdquo;.  Such a section
  may not be included in the Modified Version.
  
!           <li>Do not retitle any existing section to be Entitled &ldquo;Endorsements&rdquo; or
  to conflict in title with any Invariant Section.
  
!           <li>Preserve any Warranty Disclaimers.
!           </ol>
  
!      <p>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.
! 
!      <p>You may add a section Entitled &ldquo;Endorsements&rdquo;, provided it contains
  nothing but endorsements of your Modified Version by various
  parties&mdash;for example, statements of peer review or that the text has
  been approved by an organization as the authoritative definition of a
  standard.
! 
!      <p>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
--- 315,360 ----
  given on its Title Page, then add an item describing the Modified
  Version as stated in the previous sentence.
  
! </li><li> 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 &ldquo;History&rdquo; 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.
  
! </li><li> For any section Entitled &ldquo;Acknowledgements&rdquo; or &ldquo;Dedications&rdquo;, 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.
  
! </li><li> 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.
  
! </li><li> Delete any section Entitled &ldquo;Endorsements&rdquo;.  Such a section
  may not be included in the Modified Version.
  
! </li><li> Do not retitle any existing section to be Entitled &ldquo;Endorsements&rdquo; or
  to conflict in title with any Invariant Section.
  
! </li><li> Preserve any Warranty Disclaimers.
! </li></ol>
  
! <p>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&rsquo;s license notice.
  These titles must be distinct from any other section titles.
! </p>
! <p>You may add a section Entitled &ldquo;Endorsements&rdquo;, provided it contains
  nothing but endorsements of your Modified Version by various
  parties&mdash;for example, statements of peer review or that the text has
  been approved by an organization as the authoritative definition of a
  standard.
! </p>
! <p>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
*************** includes a cover text for the same cover
*** 312,382 ****
  by arrangement made by the same entity you are acting on behalf of,
  you may not add another; but you may replace the old one, on explicit
  permission from the previous publisher that added the old one.
! 
!      <p>The author(s) and publisher(s) of the Document do not by this License
  give permission to use their names for publicity for or to assert or
  imply endorsement of any Modified Version.
  
!      <li>COMBINING DOCUMENTS
! 
!      <p>You may combine the Document with other documents released under this
  License, under the terms defined in section 4 above for modified
  versions, provided that you include in the combination all of the
  Invariant Sections of all of the original documents, unmodified, and
  list them all as Invariant Sections of your combined work in its
  license notice, and that you preserve all their Warranty Disclaimers.
! 
!      <p>The combined work need only contain one copy of this License, and
  multiple identical Invariant Sections may be replaced with a single
  copy.  If there are multiple Invariant Sections with the same name but
  different contents, make the title of each such section unique by
  adding at the end of it, in parentheses, the name of the original
! author or publisher of that section if known, or else a unique number. 
  Make the same adjustment to the section titles in the list of
  Invariant Sections in the license notice of the combined work.
! 
!      <p>In the combination, you must combine any sections Entitled &ldquo;History&rdquo;
  in the various original documents, forming one section Entitled
  &ldquo;History&rdquo;; likewise combine any sections Entitled &ldquo;Acknowledgements&rdquo;,
  and any sections Entitled &ldquo;Dedications&rdquo;.  You must delete all
  sections Entitled &ldquo;Endorsements.&rdquo;
  
!      <li>COLLECTIONS OF DOCUMENTS
! 
!      <p>You may make a collection consisting of the Document and other documents
  released under this License, and replace the individual copies of this
  License in the various documents with a single copy that is included in
  the collection, provided that you follow the rules of this License for
  verbatim copying of each of the documents in all other respects.
! 
!      <p>You may extract a single document from such a collection, and distribute
  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.
  
!      <li>AGGREGATION WITH INDEPENDENT WORKS
! 
!      <p>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 &ldquo;aggregate&rdquo; 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.
! 
!      <p>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.
  
!      <li>TRANSLATION
! 
!      <p>Translation is considered a kind of modification, so you may
! distribute translations of the Document under the terms of section 4. 
  Replacing Invariant Sections with translations requires special
  permission from their copyright holders, but you may include
  translations of some or all Invariant Sections in addition to the
--- 363,433 ----
  by arrangement made by the same entity you are acting on behalf of,
  you may not add another; but you may replace the old one, on explicit
  permission from the previous publisher that added the old one.
! </p>
! <p>The author(s) and publisher(s) of the Document do not by this License
  give permission to use their names for publicity for or to assert or
  imply endorsement of any Modified Version.
+ </p>
+ </li><li> COMBINING DOCUMENTS
  
! <p>You may combine the Document with other documents released under this
  License, under the terms defined in section 4 above for modified
  versions, provided that you include in the combination all of the
  Invariant Sections of all of the original documents, unmodified, and
  list them all as Invariant Sections of your combined work in its
  license notice, and that you preserve all their Warranty Disclaimers.
! </p>
! <p>The combined work need only contain one copy of this License, and
  multiple identical Invariant Sections may be replaced with a single
  copy.  If there are multiple Invariant Sections with the same name but
  different contents, make the title of each such section unique by
  adding at the end of it, in parentheses, the name of the original
! author or publisher of that section if known, or else a unique number.
  Make the same adjustment to the section titles in the list of
  Invariant Sections in the license notice of the combined work.
! </p>
! <p>In the combination, you must combine any sections Entitled &ldquo;History&rdquo;
  in the various original documents, forming one section Entitled
  &ldquo;History&rdquo;; likewise combine any sections Entitled &ldquo;Acknowledgements&rdquo;,
  and any sections Entitled &ldquo;Dedications&rdquo;.  You must delete all
  sections Entitled &ldquo;Endorsements.&rdquo;
+ </p>
+ </li><li> COLLECTIONS OF DOCUMENTS
  
! <p>You may make a collection consisting of the Document and other documents
  released under this License, and replace the individual copies of this
  License in the various documents with a single copy that is included in
  the collection, provided that you follow the rules of this License for
  verbatim copying of each of the documents in all other respects.
! </p>
! <p>You may extract a single document from such a collection, and distribute
  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.
+ </p>
+ </li><li> AGGREGATION WITH INDEPENDENT WORKS
  
! <p>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 &ldquo;aggregate&rdquo; if the copyright
  resulting from the compilation is not used to limit the legal rights
! of the compilation&rsquo;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.
! </p>
! <p>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&rsquo;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.
+ </p>
+ </li><li> TRANSLATION
  
! <p>Translation is considered a kind of modification, so you may
! distribute translations of the Document under the terms of section 4.
  Replacing Invariant Sections with translations requires special
  permission from their copyright holders, but you may include
  translations of some or all Invariant Sections in addition to the
*************** the original English version of this Lic
*** 387,434 ****
  of those notices and disclaimers.  In case of a disagreement between
  the translation and the original version of this License or a notice
  or disclaimer, the original version will prevail.
! 
!      <p>If a section in the Document is Entitled &ldquo;Acknowledgements&rdquo;,
  &ldquo;Dedications&rdquo;, or &ldquo;History&rdquo;, the requirement (section 4) to Preserve
  its Title (section 1) will typically require changing the actual
  title.
  
!      <li>TERMINATION
! 
!      <p>You may not copy, modify, sublicense, or distribute the Document
  except as expressly provided under this License.  Any attempt
  otherwise to copy, modify, sublicense, or distribute it is void, and
  will automatically terminate your rights under this License.
! 
!      <p>However, if you cease all violation of this License, then your license
  from a particular copyright holder is reinstated (a) provisionally,
  unless and until the copyright holder explicitly and finally
  terminates your license, and (b) permanently, if the copyright holder
  fails to notify you of the violation by some reasonable means prior to
  60 days after the cessation.
! 
!      <p>Moreover, your license from a particular copyright holder is
  reinstated permanently if the copyright holder notifies you of the
  violation by some reasonable means, this is the first time you have
  received notice of violation of this License (for any work) from that
  copyright holder, and you cure the violation prior to 30 days after
  your receipt of the notice.
! 
!      <p>Termination of your rights under this section does not terminate the
  licenses of parties who have received copies or rights from you under
  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.
  
!      <li>FUTURE REVISIONS OF THIS LICENSE
! 
!      <p>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
  <a href="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</a>.
! 
!      <p>Each version of the License is given a distinguishing version number. 
  If the Document specifies that a particular numbered version of this
  License &ldquo;or any later version&rdquo; applies to it, you have the option of
  following the terms and conditions either of that specified version or
--- 438,485 ----
  of those notices and disclaimers.  In case of a disagreement between
  the translation and the original version of this License or a notice
  or disclaimer, the original version will prevail.
! </p>
! <p>If a section in the Document is Entitled &ldquo;Acknowledgements&rdquo;,
  &ldquo;Dedications&rdquo;, or &ldquo;History&rdquo;, the requirement (section 4) to Preserve
  its Title (section 1) will typically require changing the actual
  title.
+ </p>
+ </li><li> TERMINATION
  
! <p>You may not copy, modify, sublicense, or distribute the Document
  except as expressly provided under this License.  Any attempt
  otherwise to copy, modify, sublicense, or distribute it is void, and
  will automatically terminate your rights under this License.
! </p>
! <p>However, if you cease all violation of this License, then your license
  from a particular copyright holder is reinstated (a) provisionally,
  unless and until the copyright holder explicitly and finally
  terminates your license, and (b) permanently, if the copyright holder
  fails to notify you of the violation by some reasonable means prior to
  60 days after the cessation.
! </p>
! <p>Moreover, your license from a particular copyright holder is
  reinstated permanently if the copyright holder notifies you of the
  violation by some reasonable means, this is the first time you have
  received notice of violation of this License (for any work) from that
  copyright holder, and you cure the violation prior to 30 days after
  your receipt of the notice.
! </p>
! <p>Termination of your rights under this section does not terminate the
  licenses of parties who have received copies or rights from you under
  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.
+ </p>
+ </li><li> FUTURE REVISIONS OF THIS LICENSE
  
! <p>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
  <a href="http://www.gnu.org/copyleft/">http://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
  License &ldquo;or any later version&rdquo; applies to it, you have the option of
  following the terms and conditions either of that specified version or
*************** Free Software Foundation.  If the Docume
*** 437,515 ****
  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.
  
!      <li>RELICENSING
! 
!      <p>&ldquo;Massive Multiauthor Collaboration Site&rdquo; (or &ldquo;MMC Site&rdquo;) 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
  &ldquo;Massive Multiauthor Collaboration&rdquo; (or &ldquo;MMC&rdquo;) contained in the
  site means any set of copyrightable works thus published on the MMC
  site.
! 
!      <p>&ldquo;CC-BY-SA&rdquo; 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.
! 
!      <p>&ldquo;Incorporate&rdquo; means to publish or republish a Document, in whole or
  in part, as part of another Document.
! 
!      <p>An MMC is &ldquo;eligible for relicensing&rdquo; 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.
! 
!      <p>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.
  
!         </ol>
! 
! <h3 class="unnumberedsec"><a name="TOC0"></a>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:
  
! <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>
!    <p>If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
  replace the &ldquo;with...Texts.&rdquo; line with this:
  
! <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>
!    <p>If you have Invariant Sections without Cover Texts, or some other
  combination of the three, merge those two alternatives to suit the
  situation.
! 
!    <p>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.
  
! <!-- Local Variables: -->
! <!-- ispell-local-pdict: "ispell-dict" -->
! <!-- End: -->
! <!-- man end -->
!    <p><hr />
  <p><a href="./index.html">Return to the GCC Installation page</a>
  
- <!-- *************************************************************************** -->
- <!-- Part 6 The End of the Document -->
- </body></html>
  
--- 488,572 ----
  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&rsquo;s public statement of acceptance of a
  version permanently authorizes you to choose that version for the
  Document.
+ </p>
+ </li><li> RELICENSING
  
! <p>&ldquo;Massive Multiauthor Collaboration Site&rdquo; (or &ldquo;MMC Site&rdquo;) 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
  &ldquo;Massive Multiauthor Collaboration&rdquo; (or &ldquo;MMC&rdquo;) contained in the
  site means any set of copyrightable works thus published on the MMC
  site.
! </p>
! <p>&ldquo;CC-BY-SA&rdquo; 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.
! </p>
! <p>&ldquo;Incorporate&rdquo; means to publish or republish a Document, in whole or
  in part, as part of another Document.
! </p>
! <p>An MMC is &ldquo;eligible for relicensing&rdquo; 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.
! </p>
! <p>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.
+ </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
  situation.
! </p>
! <p>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.
+ </p>
  
! <hr />
! <p>
  <p><a href="./index.html">Return to the GCC Installation page</a>
+ </p>
+ 
+ <hr>
  
  
+ 
+ </body>
+ </html>
diff -Nrcpad gcc-5.4.0/INSTALL/index.html gcc-5.5.0/INSTALL/index.html
*** gcc-5.4.0/INSTALL/index.html	Fri Jun  3 08:45:08 2016
--- gcc-5.5.0/INSTALL/index.html	Tue Oct 10 08:13:22 2017
***************
*** 1,123 ****
! <html lang="en">
! <head>
! <title>Installing GCC</title>
! <meta http-equiv="Content-Type" content="text/html">
! <meta name="description" content="Installing GCC">
! <meta name="generator" content="makeinfo 4.12">
! <link title="Top" rel="top" href="#Top">
! <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
! <!--
! Copyright (C) 1988-2015 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
  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 "GNU Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
!      A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
!      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.-->
! <meta http-equiv="Content-Style-Type" content="text/css">
! <style type="text/css"><!--
!   pre.display { font-family:inherit }
!   pre.format  { font-family:inherit }
!   pre.smalldisplay { font-family:inherit; font-size:smaller }
!   pre.smallformat  { font-family:inherit; font-size:smaller }
!   pre.smallexample { font-size:smaller }
!   pre.smalllisp    { font-size:smaller }
!   span.sc    { font-variant:small-caps }
!   span.roman { font-family:serif; font-weight:normal; } 
!   span.sansserif { font-family:sans-serif; font-weight:normal; } 
! --></style>
  </head>
! <body>
! <h1 class="settitle">Installing GCC</h1>
! The latest version of this document is always available at
! <a href="http://gcc.gnu.org/install/">http://gcc.gnu.org/install/</a>. 
  It refers to the current development sources, instructions for
  specific released versions are included with the sources.
! 
!    <p>This document describes the generic installation procedure for GCC as well
  as detailing some target specific installation instructions.
! 
!    <p>GCC includes several components that previously were separate distributions
  with their own installation instructions.  This document supersedes all
  package-specific installation instructions.
! 
!    <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>Lists of successful builds for released versions of GCC are
! available at <a href="http://gcc.gnu.org/buildstat.html">http://gcc.gnu.org/buildstat.html</a>. 
  These lists are updated as new information becomes available.
  
!    <p>The installation procedure itself is broken into five steps.
! 
!      <ol type=1 start=1>
! <li><a href="prerequisites.html">Prerequisites</a>
! <li><a href="download.html">Downloading the source</a>
! <li><a href="configure.html">Configuration</a>
! <li><a href="build.html">Building</a>
! <li><a href="test.html">Testing</a> (optional)
! <li><a href="finalinstall.html">Final install</a>
!         </ol>
! 
!    <p>Please note that GCC does not support &lsquo;<samp><span class="samp">make uninstall</span></samp>&rsquo; 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 of GCC
  any longer, and, if shared libraries are installed there as well, no
  more binaries exist that use them.
! 
!    <p>There are also some <a href="old.html">old installation instructions</a>,
  which are mostly obsolete but still contain some information which has
  not yet been merged into the main part of this manual.
! 
!    <p><hr />
  <p><a href="./index.html">Return to the GCC Installation page</a>
! 
!    <p>Copyright &copy; 1988-2015 Free Software Foundation, Inc.
!    <pre class="sp">
! 
! </pre>
! 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 section entitled &ldquo;<a href="./gfdl.html">GNU Free Documentation License</a>&rdquo;.
  
-    <p>(a) The FSF's Front-Cover Text is:
  
-    <p>A GNU Manual
  
-    <p>(b) The FSF's Back-Cover Text is:
  
-    <p>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.
  
- <!-- ***Prerequisites************************************************** -->
- <!-- ***Downloading the source************************************************** -->
- <!-- ***Configuration*********************************************************** -->
- <!-- ***Building**************************************************************** -->
- <!-- ***Testing***************************************************************** -->
- <!-- ***Final install*********************************************************** -->
- <!-- ***Binaries**************************************************************** -->
- <!-- ***Specific**************************************************************** -->
- <!-- ***Old documentation****************************************************** -->
- <!-- ***GFDL******************************************************************** -->
- <!-- *************************************************************************** -->
- <!-- Part 6 The End of the Document -->
- </body></html>
  
--- 1,165 ----
! <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
! <html>
! <!-- Copyright (C) 1988-2015 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
  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 "GNU
! Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
! A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
! 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.1, http://www.gnu.org/software/texinfo/ -->
! <head>
! <title>Installing GCC</title>
! 
! <meta name="description" content="Installing GCC">
! <meta name="keywords" content="Installing GCC">
! <meta name="resource-type" content="document">
! <meta name="distribution" content="global">
! <meta name="Generator" content="makeinfo">
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <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>
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! <p>The latest version of this document is always available at
! <a href="http://gcc.gnu.org/install/">http://gcc.gnu.org/install/</a>.
  It refers to the current development sources, instructions for
  specific released versions are included with the sources.
! </p>
! <p>This document describes the generic installation procedure for GCC as well
  as detailing some target specific installation instructions.
! </p>
! <p>GCC includes several components that previously were separate distributions
  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>Lists of successful builds for released versions of GCC are
! available at <a href="http://gcc.gnu.org/buildstat.html">http://gcc.gnu.org/buildstat.html</a>.
  These lists are updated as new information becomes available.
+ </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
  any longer, and, if shared libraries are installed there as well, no
  more binaries exist that use them.
! </p>
! <p>There are also some <a href="old.html">old installation instructions</a>,
  which are mostly obsolete but still contain some information which has
  not yet been merged into the main part of this manual.
! </p>
! <hr />
! <p>
  <p><a href="./index.html">Return to the GCC Installation page</a>
! </p>
! <p>Copyright &copy; 1988-2015 Free Software Foundation, Inc.
! </p><br>
! <p>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 section entitled &ldquo;<a href="./gfdl.html">GNU
! Free Documentation License</a>&rdquo;.
! </p>
! <p>(a) The FSF&rsquo;s Front-Cover Text is:
! </p>
! <p>A GNU Manual
! </p>
! <p>(b) The FSF&rsquo;s Back-Cover Text is:
! </p>
! <p>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.
! </p>
! 
! 
! 
! 
! 
  
  
  
  
  
  
+ 
+ 
+ 
+ 
+ </body>
+ </html>
diff -Nrcpad gcc-5.4.0/INSTALL/old.html gcc-5.5.0/INSTALL/old.html
*** gcc-5.4.0/INSTALL/old.html	Fri Jun  3 08:45:08 2016
--- gcc-5.5.0/INSTALL/old.html	Tue Oct 10 08:13:25 2017
***************
*** 1,181 ****
! <html lang="en">
! <head>
! <title>Installing GCC: Old documentation</title>
! <meta http-equiv="Content-Type" content="text/html">
! <meta name="description" content="Installing GCC: Old documentation">
! <meta name="generator" content="makeinfo 4.12">
! <link title="Top" rel="top" href="#Top">
! <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
! <!--
! Copyright (C) 1988-2015 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
  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 "GNU Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
!      A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
!      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.-->
! <meta http-equiv="Content-Style-Type" content="text/css">
! <style type="text/css"><!--
!   pre.display { font-family:inherit }
!   pre.format  { font-family:inherit }
!   pre.smalldisplay { font-family:inherit; font-size:smaller }
!   pre.smallformat  { font-family:inherit; font-size:smaller }
!   pre.smallexample { font-size:smaller }
!   pre.smalllisp    { font-size:smaller }
!   span.sc    { font-variant:small-caps }
!   span.roman { font-family:serif; font-weight:normal; } 
!   span.sansserif { font-family:sans-serif; font-weight:normal; } 
! --></style>
  </head>
! <body>
! <h1 class="settitle">Installing GCC: Old documentation</h1>
  <h1 align="center">Old installation documentation</h1>
  
!    <p>Note most of this information is out of date and superseded by the
  previous chapters of this manual.  It is provided for historical
  reference only, because of a lack of volunteers to merge it into the
  main manual.
  
!    <p>Here is the procedure for installing GCC on a GNU or Unix system.
! 
!      <ol type=1 start=1>
! <li>If you have chosen a configuration for GCC which requires other GNU
  tools (such as GAS or the GNU linker) instead of the standard system
  tools, install the required tools in the build directory under the names
! <samp><span class="file">as</span></samp>, <samp><span class="file">ld</span></samp> or whatever is appropriate.
  
!      <p>Alternatively, you can do subsequent compilation using a value of the
  <code>PATH</code> environment variable such that the necessary GNU tools come
  before the standard system tools.
  
!      <li>Specify the host, build and target machine configurations.  You do this
! when you run the <samp><span class="file">configure</span></samp> script.
! 
!      <p>The <dfn>build</dfn> machine is the system which you are using, the
! <dfn>host</dfn> machine is the system where you want to run the resulting
! compiler (normally the build machine), and the <dfn>target</dfn> machine is
  the system for which you want the compiler to generate code.
! 
!      <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><span class="file">configure</span></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't need
  to specify a configuration when building a native compiler unless
! <samp><span class="file">configure</span></samp> cannot figure out what your configuration is or guesses
  wrong.
! 
!      <p>In those cases, specify the build machine's <dfn>configuration name</dfn>
! with the <samp><span class="option">--host</span></samp> option; the host and target will default to be
  the same as the host machine.
  
!      <p>Here is an example:
! 
!      <pre class="smallexample">          ./configure --host=sparc-sun-sunos4.1
! </pre>
!      <p>A configuration name may be canonical or it may be more or less
  abbreviated.
! 
!      <p>A canonical configuration name has three parts, separated by dashes. 
! It looks like this: &lsquo;<samp><var>cpu</var><span class="samp">-</span><var>company</var><span class="samp">-</span><var>system</var></samp>&rsquo;. 
! (The three parts may themselves contain dashes; <samp><span class="file">configure</span></samp>
  can figure out which dashes serve which purpose.)  For example,
! &lsquo;<samp><span class="samp">m68k-sun-sunos4.1</span></samp>&rsquo; specifies a Sun 3.
! 
!      <p>You can also replace parts of the configuration by nicknames or aliases. 
! For example, &lsquo;<samp><span class="samp">sun3</span></samp>&rsquo; stands for &lsquo;<samp><span class="samp">m68k-sun</span></samp>&rsquo;, so
! &lsquo;<samp><span class="samp">sun3-sunos4.1</span></samp>&rsquo; is another way to specify a Sun 3.
! 
!      <p>You can specify a version number after any of the system types, and some
  of the CPU types.  In most cases, the version is irrelevant, and will be
  ignored.  So you might as well specify the version if you know it.
! 
!      <p>See <a href="#Configurations">Configurations</a>, for a list of supported configuration names and
  notes on many of the configurations.  You should check the notes in that
  section before proceeding any further with the installation of GCC.
  
!         </ol>
! 
!    <p><h2><a name="Configurations"></a>Configurations Supported by GCC</h2><a name="index-configurations-supported-by-GCC-1"></a>
! Here are the possible CPU types:
  
!    <blockquote>
! <!-- gmicro, fx80, spur and tahoe omitted since they don't work. -->
! 1750a, a29k, alpha, arm, avr, c<var>n</var>, clipper, dsp16xx, elxsi, fr30, h8300,
  hppa1.0, hppa1.1, i370, i386, i486, i586, i686, i786, i860, i960, ip2k, m32r,
  m68000, m68k, m88k, mcore, mips, mipsel, mips64, mips64el,
  mn10200, mn10300, ns32k, pdp11, powerpc, powerpcle, romp, rs6000, sh, sparc,
! sparclite, sparc64, v850, vax, we32k. 
! </blockquote>
  
!    <p>Here are the recognized company names.  As you can see, customary
  abbreviations are used rather than the longer official names.
! 
! <!-- What should be done about merlin, tek*, dolphin? -->
!    <blockquote>
! acorn, alliant, altos, apollo, apple, att, bull,
  cbm, convergent, convex, crds, dec, dg, dolphin,
  elxsi, encore, harris, hitachi, hp, ibm, intergraph, isi,
  mips, motorola, ncr, next, ns, omron, plexus,
! sequent, sgi, sony, sun, tti, unicom, wrs. 
! </blockquote>
  
!    <p>The company name is meaningful only to disambiguate when the rest of
  the information supplied is insufficient.  You can omit it, writing
! just &lsquo;<samp><var>cpu</var><span class="samp">-</span><var>system</var></samp>&rsquo;, if it is not needed.  For example,
! &lsquo;<samp><span class="samp">vax-ultrix4.2</span></samp>&rsquo; is equivalent to &lsquo;<samp><span class="samp">vax-dec-ultrix4.2</span></samp>&rsquo;.
! 
!    <p>Here is a list of system types:
! 
!    <blockquote>
! 386bsd, aix, acis, amigaos, aos, aout, aux, bosx, bsd, clix, coff, ctix, cxux,
  dgux, dynix, ebmon, ecoff, elf, esix, freebsd, hms, genix, gnu, linux,
  linux-gnu, hiux, hpux, iris, irix, isc, luna, lynxos, mach, minix, msdos, mvs,
  netbsd, newsos, nindy, ns, osf, osfrose, ptx, riscix, riscos, rtu, sco, sim,
  solaris, sunos, sym, sysv, udi, ultrix, unicos, uniplus, unos, vms, vsta,
! vxworks, winnt, xenix. 
! </blockquote>
  
! <p class="noindent">You can omit the system type; then <samp><span class="file">configure</span></samp> guesses the
  operating system from the CPU and company.
! 
!    <p>You can add a version number to the system type; this may or may not
! make a difference.  For example, you can write &lsquo;<samp><span class="samp">bsd4.3</span></samp>&rsquo; or
! &lsquo;<samp><span class="samp">bsd4.4</span></samp>&rsquo; to distinguish versions of BSD.  In practice, the version
! number is most needed for &lsquo;<samp><span class="samp">sysv3</span></samp>&rsquo; and &lsquo;<samp><span class="samp">sysv4</span></samp>&rsquo;, which are often
  treated differently.
! 
!    <p>&lsquo;<samp><span class="samp">linux-gnu</span></samp>&rsquo; is the canonical name for the GNU/Linux target; however
! GCC will also accept &lsquo;<samp><span class="samp">linux</span></samp>&rsquo;.  The version of the kernel in use is
! not relevant on these systems.  A suffix such as &lsquo;<samp><span class="samp">libc1</span></samp>&rsquo; or &lsquo;<samp><span class="samp">aout</span></samp>&rsquo;
  distinguishes major versions of the C library; all of the suffixed versions
  are obsolete.
! 
!    <p>If you specify an impossible combination such as &lsquo;<samp><span class="samp">i860-dg-vms</span></samp>&rsquo;,
! then you may get an error message from <samp><span class="file">configure</span></samp>, or it may
! ignore part of the information and do the best it can with the rest. 
! <samp><span class="file">configure</span></samp> always prints the canonical name for the alternative
  that it used.  GCC does not support all possible alternatives.
! 
!    <p>Often a particular model of machine has a name.  Many machine names are
  recognized as aliases for CPU/company combinations.  Thus, the machine
! name &lsquo;<samp><span class="samp">sun3</span></samp>&rsquo;, mentioned above, is an alias for &lsquo;<samp><span class="samp">m68k-sun</span></samp>&rsquo;. 
  Sometimes we accept a company name as a machine name, when the name is
  popularly used for a particular machine.  Here is a table of the known
  machine names:
! 
!    <blockquote>
! 3300, 3b1, 3b<var>n</var>, 7300, altos3068, altos,
  apollo68, att-7300, balance,
  convex-c<var>n</var>, crds, decstation-3100,
  decstation, delta, encore,
--- 1,232 ----
! <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
! <html>
! <!-- Copyright (C) 1988-2015 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
  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 "GNU
! Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
! A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
! 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.1, http://www.gnu.org/software/texinfo/ -->
! <head>
! <title>Installing GCC</title>
! 
! <meta name="description" content="Installing GCC">
! <meta name="keywords" content="Installing GCC">
! <meta name="resource-type" content="document">
! <meta name="distribution" content="global">
! <meta name="Generator" content="makeinfo">
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <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>
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
  <h1 align="center">Old installation documentation</h1>
  
! <p>Note most of this information is out of date and superseded by the
  previous chapters of this manual.  It is provided for historical
  reference only, because of a lack of volunteers to merge it into the
  main manual.
+ </p>
  
! <p>Here is the procedure for installing GCC on a GNU or Unix system.
! </p>
! <ol>
! <li> If you have chosen a configuration for GCC which requires other GNU
  tools (such as GAS or the GNU linker) instead of the standard system
  tools, install the required tools in the build directory under the names
! <samp>as</samp>, <samp>ld</samp> or whatever is appropriate.
  
! <p>Alternatively, you can do subsequent compilation using a value of the
  <code>PATH</code> environment variable such that the necessary GNU tools come
  before the standard system tools.
+ </p>
+ </li><li> Specify the host, build and target machine configurations.  You do this
+ when you run the <samp>configure</samp> script.
  
! <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=sparc-sun-sunos4.1
+ </pre></div>
  
! <p>A configuration name may be canonical or it may be more or less
  abbreviated.
! </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;.
! (The three parts may themselves contain dashes; <samp>configure</samp>
  can figure out which dashes serve which purpose.)  For example,
! &lsquo;<samp>m68k-sun-sunos4.1</samp>&rsquo; specifies a Sun 3.
! </p>
! <p>You can also replace parts of the configuration by nicknames or aliases.
! For example, &lsquo;<samp>sun3</samp>&rsquo; stands for &lsquo;<samp>m68k-sun</samp>&rsquo;, so
! &lsquo;<samp>sun3-sunos4.1</samp>&rsquo; is another way to specify a Sun 3.
! </p>
! <p>You can specify a version number after any of the system types, and some
  of the CPU types.  In most cases, the version is irrelevant, and will be
  ignored.  So you might as well specify the version if you know it.
! </p>
! <p>See <a href="#Configurations">Configurations</a>, for a list of supported configuration names and
  notes on many of the configurations.  You should check the notes in that
  section before proceeding any further with the installation of GCC.
+ </p>
+ </li></ol>
  
! <h2><a name="Configurations"></a>Configurations Supported by GCC</h2>
! <a name="index-configurations-supported-by-GCC"></a>
  
! <p>Here are the possible CPU types:
! </p>
! <blockquote>
! <p>1750a, a29k, alpha, arm, avr, c<var>n</var>, clipper, dsp16xx, elxsi, fr30, h8300,
  hppa1.0, hppa1.1, i370, i386, i486, i586, i686, i786, i860, i960, ip2k, m32r,
  m68000, m68k, m88k, mcore, mips, mipsel, mips64, mips64el,
  mn10200, mn10300, ns32k, pdp11, powerpc, powerpcle, romp, rs6000, sh, sparc,
! sparclite, sparc64, v850, vax, we32k.
! </p></blockquote>
  
! <p>Here are the recognized company names.  As you can see, customary
  abbreviations are used rather than the longer official names.
! </p>
! <blockquote>
! <p>acorn, alliant, altos, apollo, apple, att, bull,
  cbm, convergent, convex, crds, dec, dg, dolphin,
  elxsi, encore, harris, hitachi, hp, ibm, intergraph, isi,
  mips, motorola, ncr, next, ns, omron, plexus,
! sequent, sgi, sony, sun, tti, unicom, wrs.
! </p></blockquote>
  
! <p>The company name is meaningful only to disambiguate when the rest of
  the information supplied is insufficient.  You can omit it, writing
! just &lsquo;<samp><var>cpu</var>-<var>system</var></samp>&rsquo;, if it is not needed.  For example,
! &lsquo;<samp>vax-ultrix4.2</samp>&rsquo; is equivalent to &lsquo;<samp>vax-dec-ultrix4.2</samp>&rsquo;.
! </p>
! <p>Here is a list of system types:
! </p>
! <blockquote>
! <p>386bsd, aix, acis, amigaos, aos, aout, aux, bosx, bsd, clix, coff, ctix, cxux,
  dgux, dynix, ebmon, ecoff, elf, esix, freebsd, hms, genix, gnu, linux,
  linux-gnu, hiux, hpux, iris, irix, isc, luna, lynxos, mach, minix, msdos, mvs,
  netbsd, newsos, nindy, ns, osf, osfrose, ptx, riscix, riscos, rtu, sco, sim,
  solaris, sunos, sym, sysv, udi, ultrix, unicos, uniplus, unos, vms, vsta,
! vxworks, winnt, xenix.
! </p></blockquote>
  
! <p>You can omit the system type; then <samp>configure</samp> guesses the
  operating system from the CPU and company.
! </p>
! <p>You can add a version number to the system type; this may or may not
! make a difference.  For example, you can write &lsquo;<samp>bsd4.3</samp>&rsquo; or
! &lsquo;<samp>bsd4.4</samp>&rsquo; to distinguish versions of BSD.  In practice, the version
! number is most needed for &lsquo;<samp>sysv3</samp>&rsquo; and &lsquo;<samp>sysv4</samp>&rsquo;, which are often
  treated differently.
! </p>
! <p>&lsquo;<samp>linux-gnu</samp>&rsquo; is the canonical name for the GNU/Linux target; however
! GCC will also accept &lsquo;<samp>linux</samp>&rsquo;.  The version of the kernel in use is
! not relevant on these systems.  A suffix such as &lsquo;<samp>libc1</samp>&rsquo; or &lsquo;<samp>aout</samp>&rsquo;
  distinguishes major versions of the C library; all of the suffixed versions
  are obsolete.
! </p>
! <p>If you specify an impossible combination such as &lsquo;<samp>i860-dg-vms</samp>&rsquo;,
! then you may get an error message from <samp>configure</samp>, or it may
! ignore part of the information and do the best it can with the rest.
! <samp>configure</samp> always prints the canonical name for the alternative
  that it used.  GCC does not support all possible alternatives.
! </p>
! <p>Often a particular model of machine has a name.  Many machine names are
  recognized as aliases for CPU/company combinations.  Thus, the machine
! name &lsquo;<samp>sun3</samp>&rsquo;, mentioned above, is an alias for &lsquo;<samp>m68k-sun</samp>&rsquo;.
  Sometimes we accept a company name as a machine name, when the name is
  popularly used for a particular machine.  Here is a table of the known
  machine names:
! </p>
! <blockquote>
! <p>3300, 3b1, 3b<var>n</var>, 7300, altos3068, altos,
  apollo68, att-7300, balance,
  convex-c<var>n</var>, crds, decstation-3100,
  decstation, delta, encore,
*************** m3230, magnum, merlin, miniframe,
*** 186,201 ****
  mmax, news-3600, news800, news, next,
  pbd, pc532, pmax, powerpc, powerpcle, ps2, risc-news,
  rtpc, sun2, sun386i, sun386, sun3,
! sun4, symmetry, tower-32, tower. 
! </blockquote>
  
! <p class="noindent">Remember that a machine name specifies both the cpu type and the company
! name. 
  <hr />
! <p><a href="./index.html">Return to the GCC Installation page</a>
  
- <!-- ***GFDL******************************************************************** -->
- <!-- *************************************************************************** -->
- <!-- Part 6 The End of the Document -->
- </body></html>
  
--- 237,255 ----
  mmax, news-3600, news800, news, next,
  pbd, pc532, pmax, powerpc, powerpcle, ps2, risc-news,
  rtpc, sun2, sun386i, sun386, sun3,
! sun4, symmetry, tower-32, tower.
! </p></blockquote>
  
! <p>Remember that a machine name specifies both the cpu type and the company
! name.
  <hr />
! <p>
! <a href="./index.html">Return to the GCC Installation page</a>
! </p>
! 
  
  
+ 
+ 
+ </body>
+ </html>
diff -Nrcpad gcc-5.4.0/INSTALL/prerequisites.html gcc-5.5.0/INSTALL/prerequisites.html
*** gcc-5.4.0/INSTALL/prerequisites.html	Fri Jun  3 08:45:08 2016
--- gcc-5.5.0/INSTALL/prerequisites.html	Tue Oct 10 08:13:23 2017
***************
*** 1,310 ****
! <html lang="en">
! <head>
! <title>Prerequisites for GCC</title>
! <meta http-equiv="Content-Type" content="text/html">
! <meta name="description" content="Prerequisites for GCC">
! <meta name="generator" content="makeinfo 4.12">
! <link title="Top" rel="top" href="#Top">
! <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
! <!--
! Copyright (C) 1988-2015 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
  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 "GNU Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
!      A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
!      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.-->
! <meta http-equiv="Content-Style-Type" content="text/css">
! <style type="text/css"><!--
!   pre.display { font-family:inherit }
!   pre.format  { font-family:inherit }
!   pre.smalldisplay { font-family:inherit; font-size:smaller }
!   pre.smallformat  { font-family:inherit; font-size:smaller }
!   pre.smallexample { font-size:smaller }
!   pre.smalllisp    { font-size:smaller }
!   span.sc    { font-variant:small-caps }
!   span.roman { font-family:serif; font-weight:normal; } 
!   span.sansserif { font-family:sans-serif; font-weight:normal; } 
! --></style>
  </head>
- <body>
- <h1 class="settitle">Prerequisites for GCC</h1>
- <a name="index-Prerequisites-1"></a>
- GCC requires that various tools and packages be available for use in the
- build procedure.  Modifying GCC sources requires additional tools
- described below.
  
! <h3 class="heading"><a name="TOC0"></a>Tools/packages necessary for building GCC</h3>
  
!      <dl>
! <dt>ISO C++98 compiler<dd>Necessary to bootstrap GCC, although versions of GCC prior
  to 4.8 also allow bootstrapping with a ISO C89 compiler and versions
  of GCC prior to 3.4 also allow bootstrapping with a traditional
  (K&amp;R) C compiler.
! 
!      <p>To build all languages in a cross-compiler or other configuration where
  3-stage bootstrap is not performed, you need to start with an existing
  GCC binary (version 3.4 or later) because source code for language
  frontends other than C might use GCC extensions.
! 
!      <p>Note that to bootstrap GCC with versions of GCC earlier than 3.4, you
! may need to use <samp><span class="option">--disable-stage1-checking</span></samp>, though
  bootstrapping the compiler with such earlier compilers is strongly
  discouraged.
! 
!      <br><dt>C standard library and headers<dd>
! In order to build GCC, the C standard library and headers must be present
  for all target variants for which target libraries will be built (and not
  only the variant of the host C++ compiler).
! 
!      <p>This affects the popular &lsquo;<samp><span class="samp">x86_64-unknown-linux-gnu</span></samp>&rsquo; platform (among
! other multilib targets), for which 64-bit (&lsquo;<samp><span class="samp">x86_64</span></samp>&rsquo;) and 32-bit
! (&lsquo;<samp><span class="samp">i386</span></samp>&rsquo;) libc headers are usually packaged separately. If you do a
! build of a native compiler on &lsquo;<samp><span class="samp">x86_64-unknown-linux-gnu</span></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><span class="option">--disable-multilib</span></samp>.  Otherwise, you may encounter an error such as
! &lsquo;<samp><span class="samp">fatal error: gnu/stubs-32.h: No such file</span></samp>&rsquo;
! 
!      <br><dt>GNAT<dd>
! In order to build the Ada compiler (GNAT) you must already have GNAT
  installed because portions of the Ada frontend are written in Ada (with
  GNAT extensions.)  Refer to the Ada installation instructions for more
  specific information.
! 
!      <br><dt>A &ldquo;working&rdquo; POSIX compatible shell, or GNU bash<dd>
! Necessary when running <samp><span class="command">configure</span></samp> because some
! <samp><span class="command">/bin/sh</span></samp> shells have bugs and may crash when configuring the
! target libraries.  In other cases, <samp><span class="command">/bin/sh</span></samp> or <samp><span class="command">ksh</span></samp>
  have disastrous corner-case performance problems.  This
! can cause target <samp><span class="command">configure</span></samp> runs to literally take days to
  complete in some cases.
! 
!      <p>So on some platforms <samp><span class="command">/bin/ksh</span></samp> is sufficient, on others it
! isn't.  See the host/target specific instructions for your platform, or
! use <samp><span class="command">bash</span></samp> to be sure.  Then set <samp><span class="env">CONFIG_SHELL</span></samp> in your
  environment to your &ldquo;good&rdquo; shell prior to running
! <samp><span class="command">configure</span></samp>/<samp><span class="command">make</span></samp>.
! 
!      <p><samp><span class="command">zsh</span></samp> is not a fully compliant POSIX shell and will not
  work when configuring GCC.
! 
!      <br><dt>A POSIX or SVR4 awk<dd>
! Necessary for creating some of the generated source files for GCC. 
  If in doubt, use a recent GNU awk version, as some of the older ones
  are broken.  GNU awk version 3.1.5 is known to work.
! 
!      <br><dt>GNU binutils<dd>
! Necessary in some circumstances, optional in others.  See the
  host/target specific instructions for your platform for the exact
  requirements.
! 
!      <br><dt>gzip version 1.2.4 (or later) or<dt>bzip2 version 1.0.2 (or later)<dd>
! Necessary to uncompress GCC <samp><span class="command">tar</span></samp> files when source code is
  obtained via FTP mirror sites.
! 
!      <br><dt>GNU make version 3.80 (or later)<dd>
! You must have GNU make installed to build GCC.
! 
!      <br><dt>GNU tar version 1.14 (or later)<dd>
! Necessary (only on some platforms) to untar the source code.  Many
! systems' <samp><span class="command">tar</span></samp> programs will also work, only try GNU
! <samp><span class="command">tar</span></samp> if you have problems.
! 
!      <br><dt>Perl version 5.6.1 (or later)<dd>
! Necessary when targeting Darwin, building &lsquo;<samp><span class="samp">libstdc++</span></samp>&rsquo;,
! and not using <samp><span class="option">--disable-symvers</span></samp>. 
! Necessary when targeting Solaris 2 with Sun <samp><span class="command">ld</span></samp> and not using
! <samp><span class="option">--disable-symvers</span></samp>.  The bundled <samp><span class="command">perl</span></samp> in Solaris&nbsp;8
  and up works.
! 
!      <p>Necessary when regenerating <samp><span class="file">Makefile</span></samp> dependencies in libiberty. 
! Necessary when regenerating <samp><span class="file">libiberty/functions.texi</span></samp>. 
! Necessary when generating manpages from Texinfo manuals. 
  Used by various scripts to generate some files included in SVN (mainly
  Unicode-related and rarely changing) from source tables.
! 
!      <br><dt><samp><span class="command">jar</span></samp>, or InfoZIP (<samp><span class="command">zip</span></samp> and <samp><span class="command">unzip</span></samp>)<dd>
! Necessary to build libgcj, the GCJ runtime.
! 
  </dl>
  
!    <p>Several support libraries are necessary to build GCC, some are required,
  others optional.  While any sufficiently new version of required tools
  usually work, library requirements are generally stricter.  Newer
! versions may work in some cases, but it's safer to use the exact
  versions documented.  We appreciate bug reports about problems with
  newer versions, though.  If your OS vendor provides packages for the
  support libraries then using those packages may be the simplest way to
  install the libraries.
! 
!      <dl>
! <dt>GNU Multiple Precision Library (GMP) version 4.3.2 (or later)<dd>
! Necessary to build GCC.  If a GMP source distribution is found in a
! subdirectory of your GCC sources named <samp><span class="file">gmp</span></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><span class="option">--with-gmp</span></samp> configure option.  See also <samp><span class="option">--with-gmp-lib</span></samp>
! and <samp><span class="option">--with-gmp-include</span></samp>.
! 
!      <br><dt>MPFR Library version 2.4.2 (or later)<dd>
! Necessary to build GCC.  It can be downloaded from
  <a href="http://www.mpfr.org/">http://www.mpfr.org/</a>.  If an MPFR source distribution is found
! in a subdirectory of your GCC sources named <samp><span class="file">mpfr</span></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><span class="option">--with-mpfr</span></samp> configure option should be used.  See also
! <samp><span class="option">--with-mpfr-lib</span></samp> and <samp><span class="option">--with-mpfr-include</span></samp>.
! 
!      <br><dt>MPC Library version 0.8.1 (or later)<dd>
! Necessary to build GCC.  It can be downloaded from
  <a href="http://www.multiprecision.org/">http://www.multiprecision.org/</a>.  If an MPC source distribution
! is found in a subdirectory of your GCC sources named <samp><span class="file">mpc</span></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><span class="option">--with-mpc</span></samp> configure option should be used.  See also
! <samp><span class="option">--with-mpc-lib</span></samp> and <samp><span class="option">--with-mpc-include</span></samp>.
! 
!      <br><dt>ISL Library version 0.14 (or 0.12.2)<dd>
! Necessary to build GCC with the Graphite loop optimizations. 
  It can be downloaded from <a href="ftp://gcc.gnu.org/pub/gcc/infrastructure/">ftp://gcc.gnu.org/pub/gcc/infrastructure/</a>
! as <samp><span class="file">isl-0.12.2.tar.bz2</span></samp>.  If an ISL source distribution is found
! in a subdirectory of your GCC sources named <samp><span class="file">isl</span></samp>, it will be
! built together with GCC.  Alternatively, the <samp><span class="option">--with-isl</span></samp> configure
  option should be used if ISL is not installed in your default library
  search path.
  
!    </dl>
! 
! <h3 class="heading"><a name="TOC1"></a>Tools/packages necessary for modifying GCC</h3>
! 
!      <dl>
! <dt>autoconf version 2.64<dt>GNU m4 version 1.4.6 (or later)<dd>
! Necessary when modifying <samp><span class="file">configure.ac</span></samp>, <samp><span class="file">aclocal.m4</span></samp>, etc. 
! to regenerate <samp><span class="file">configure</span></samp> and <samp><span class="file">config.in</span></samp> files.
! 
!      <br><dt>automake version 1.11.1<dd>
! Necessary when modifying a <samp><span class="file">Makefile.am</span></samp> file to regenerate its
! associated <samp><span class="file">Makefile.in</span></samp>.
! 
!      <p>Much of GCC does not use automake, so directly edit the <samp><span class="file">Makefile.in</span></samp>
! file.  Specifically this applies to the <samp><span class="file">gcc</span></samp>, <samp><span class="file">intl</span></samp>,
! <samp><span class="file">libcpp</span></samp>, <samp><span class="file">libiberty</span></samp>, <samp><span class="file">libobjc</span></samp> directories as well
  as any of their subdirectories.
! 
!      <p>For directories that use automake, GCC requires the latest release in
  the 1.11 series, which is currently 1.11.1.  When regenerating a directory
  to a newer version, please update all the directories using an older 1.11
  to the latest released version.
! 
!      <br><dt>gettext version 0.14.5 (or later)<dd>
! Needed to regenerate <samp><span class="file">gcc.pot</span></samp>.
! 
!      <br><dt>gperf version 2.7.2 (or later)<dd>
! Necessary when modifying <samp><span class="command">gperf</span></samp> input files, e.g. 
! <samp><span class="file">gcc/cp/cfns.gperf</span></samp> to regenerate its associated header file, e.g. 
! <samp><span class="file">gcc/cp/cfns.h</span></samp>.
! 
!      <br><dt>DejaGnu 1.4.4<dt>Expect<dt>Tcl<dd>
! Necessary to run the GCC testsuite; see the section on testing for
  details.  Tcl 8.6 has a known regression in RE pattern handling that
  make parts of the testsuite fail.  See
  <a href="http://core.tcl.tk/tcl/tktview/267b7e2334ee2e9de34c4b00d6e72e2f1997085f">http://core.tcl.tk/tcl/tktview/267b7e2334ee2e9de34c4b00d6e72e2f1997085f</a>
  for more information.  This bug has been fixed in 8.6.1.
! 
!      <br><dt>autogen version 5.5.4 (or later) and<dt>guile version 1.4.1 (or later)<dd>
! Necessary to regenerate <samp><span class="file">fixinc/fixincl.x</span></samp> from
! <samp><span class="file">fixinc/inclhack.def</span></samp> and <samp><span class="file">fixinc/*.tpl</span></samp>.
! 
!      <p>Necessary to run &lsquo;<samp><span class="samp">make check</span></samp>&rsquo; for <samp><span class="file">fixinc</span></samp>.
! 
!      <p>Necessary to regenerate the top level <samp><span class="file">Makefile.in</span></samp> file from
! <samp><span class="file">Makefile.tpl</span></samp> and <samp><span class="file">Makefile.def</span></samp>.
! 
!      <br><dt>Flex version 2.5.4 (or later)<dd>
! Necessary when modifying <samp><span class="file">*.l</span></samp> files.
! 
!      <p>Necessary to build GCC during development because the generated output
  files are not included in the SVN repository.  They are included in
  releases.
! 
!      <br><dt>Texinfo version 4.7 (or later)<dd>
! Necessary for running <samp><span class="command">makeinfo</span></samp> when modifying <samp><span class="file">*.texi</span></samp>
  files to test your changes.
! 
!      <p>Necessary for running <samp><span class="command">make dvi</span></samp> or <samp><span class="command">make pdf</span></samp> to
  create printable documentation in DVI or PDF format.  Texinfo version
! 4.8 or later is required for <samp><span class="command">make pdf</span></samp>.
! 
!      <p>Necessary to build GCC documentation during development because the
  generated output files are not included in the SVN repository.  They are
  included in releases.
! 
!      <br><dt>TeX (any working version)<dd>
! Necessary for running <samp><span class="command">texi2dvi</span></samp> and <samp><span class="command">texi2pdf</span></samp>, which
! are used when running <samp><span class="command">make dvi</span></samp> or <samp><span class="command">make pdf</span></samp> to create
  DVI or PDF files, respectively.
! 
!      <br><dt>Sphinx version 1.0 (or later)<dd>
! Necessary to regenerate <samp><span class="file">jit/docs/_build/texinfo</span></samp> from the <samp><span class="file">.rst</span></samp>
! files in the directories below <samp><span class="file">jit/docs</span></samp>.
! 
!      <br><dt>SVN (any version)<dt>SSH (any version)<dd>
! Necessary to access the SVN repository.  Public releases and weekly
  snapshots of the development sources are also available via FTP.
! 
!      <br><dt>GNU diffutils version 2.7 (or later)<dd>
! Useful when submitting patches for the GCC source code.
! 
!      <br><dt>patch version 2.5.4 (or later)<dd>
! Necessary when applying patches, created with <samp><span class="command">diff</span></samp>, to one's
  own sources.
! 
!      <br><dt>ecj1<dt>gjavah<dd>
! If you wish to modify <samp><span class="file">.java</span></samp> files in libjava, you will need to
! configure with <samp><span class="option">--enable-java-maintainer-mode</span></samp>, and you will need
! to have executables named <samp><span class="command">ecj1</span></samp> and <samp><span class="command">gjavah</span></samp> in your path. 
! The <samp><span class="command">ecj1</span></samp> executable should run the Eclipse Java compiler via
  the GCC-specific entry point.  You can download a suitable jar from
  <a href="ftp://sourceware.org/pub/java/">ftp://sourceware.org/pub/java/</a>, or by running the script
! <samp><span class="command">contrib/download_ecj</span></samp>.
! 
!      <br><dt>antlr.jar version 2.7.1 (or later)<dt>antlr binary<dd>
! If you wish to build the <samp><span class="command">gjdoc</span></samp> binary in libjava, you will
! need to have an <samp><span class="file">antlr.jar</span></samp> library available. The library is
  searched for in system locations but can be specified with
! <samp><span class="option">--with-antlr-jar=</span></samp> instead.  When configuring with
! <samp><span class="option">--enable-java-maintainer-mode</span></samp>, you will need to have one of
! the executables named <samp><span class="command">cantlr</span></samp>, <samp><span class="command">runantlr</span></samp> or
! <samp><span class="command">antlr</span></samp> in your path.
! 
  </dl>
  
!    <p><hr />
  <p><a href="./index.html">Return to the GCC Installation page</a>
  
- <!-- ***Downloading the source************************************************** -->
- <!-- ***Configuration*********************************************************** -->
- <!-- ***Building**************************************************************** -->
- <!-- ***Testing***************************************************************** -->
- <!-- ***Final install*********************************************************** -->
- <!-- ***Binaries**************************************************************** -->
- <!-- ***Specific**************************************************************** -->
- <!-- ***Old documentation****************************************************** -->
- <!-- ***GFDL******************************************************************** -->
- <!-- *************************************************************************** -->
- <!-- Part 6 The End of the Document -->
- </body></html>
  
--- 1,421 ----
! <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
! <html>
! <!-- Copyright (C) 1988-2015 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
  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 "GNU
! Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
! A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
! 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.1, http://www.gnu.org/software/texinfo/ -->
! <head>
! <title>Installing GCC</title>
! 
! <meta name="description" content="Installing GCC">
! <meta name="keywords" content="Installing GCC">
! <meta name="resource-type" content="document">
! <meta name="distribution" content="global">
! <meta name="Generator" content="makeinfo">
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <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>
  
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! <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++98 compiler</dt>
! <dd><p>Necessary to bootstrap GCC, although versions of GCC prior
  to 4.8 also allow bootstrapping with a ISO C89 compiler and versions
  of GCC prior to 3.4 also allow bootstrapping with a traditional
  (K&amp;R) C compiler.
! </p>
! <p>To build all languages in a cross-compiler or other configuration where
  3-stage bootstrap is not performed, you need to start with an existing
  GCC binary (version 3.4 or later) because source code for language
  frontends other than C might use GCC extensions.
! </p>
! <p>Note that to bootstrap GCC with versions of GCC earlier than 3.4, you
! may need to use <samp>--disable-stage1-checking</samp>, though
  bootstrapping the compiler with such earlier compilers is strongly
  discouraged.
! </p>
! </dd>
! <dt>C standard library and headers</dt>
! <dd>
! <p>In order to build GCC, the C standard library and headers must be present
  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-unknown-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-unknown-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>GNAT</dt>
! <dd>
! <p>In order to build the Ada compiler (GNAT) you must already have GNAT
  installed because portions of the Ada frontend are written in Ada (with
  GNAT extensions.)  Refer to the Ada installation instructions for more
  specific information.
! </p>
! </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>
! <dt>A POSIX or SVR4 awk</dt>
! <dd>
! <p>Necessary for creating some of the generated source files for GCC.
  If in doubt, use a recent GNU awk version, as some of the older ones
  are broken.  GNU awk version 3.1.5 is known to work.
! </p>
! </dd>
! <dt>GNU binutils</dt>
! <dd>
! <p>Necessary in some circumstances, optional in others.  See the
  host/target specific instructions for your platform for the exact
  requirements.
! </p>
! </dd>
! <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 FTP mirror sites.
! </p>
! </dd>
! <dt>GNU make version 3.80 (or later)</dt>
! <dd>
! <p>You must have GNU make installed to build GCC.
! </p>
! </dd>
! <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 2 with Sun <code>ld</code> and not using
! <samp>--disable-symvers</samp>.  The bundled <code>perl</code> in Solaris&nbsp;8
  and up works.
! </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 SVN (mainly
  Unicode-related and rarely changing) from source tables.
! </p>
! </dd>
! <dt><code>jar</code>, or InfoZIP (<code>zip</code> and <code>unzip</code>)</dt>
! <dd>
! <p>Necessary to build libgcj, the GCJ runtime.
! </p>
! </dd>
  </dl>
  
! <p>Several support libraries are necessary to build GCC, some are required,
  others optional.  While any sufficiently new version of required tools
  usually work, library requirements are generally stricter.  Newer
! versions may work in some cases, but it&rsquo;s safer to use the exact
  versions documented.  We appreciate bug reports about problems with
  newer versions, though.  If your OS vendor provides packages for the
  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.  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>.
! </p>
! </dd>
! <dt>MPFR Library version 2.4.2 (or later)</dt>
! <dd>
! <p>Necessary to build GCC.  It can be downloaded from
  <a href="http://www.mpfr.org/">http://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>.
! </p>
! </dd>
! <dt>MPC Library version 0.8.1 (or later)</dt>
! <dd>
! <p>Necessary to build GCC.  It can be downloaded from
  <a href="http://www.multiprecision.org/">http://www.multiprecision.org/</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>.
! </p>
! </dd>
! <dt>ISL Library version 0.14 (or 0.12.2)</dt>
! <dd>
! <p>Necessary to build GCC with the Graphite loop optimizations.
  It can be downloaded from <a href="ftp://gcc.gnu.org/pub/gcc/infrastructure/">ftp://gcc.gnu.org/pub/gcc/infrastructure/</a>
! as <samp>isl-0.12.2.tar.bz2</samp>.  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>
+ </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.64</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.11.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
  the 1.11 series, which is currently 1.11.1.  When regenerating a directory
  to a newer version, please update all the directories using an older 1.11
  to the latest released version.
! </p>
! </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 1.4.4</dt>
! <dt>Expect</dt>
! <dt>Tcl</dt>
! <dd>
! <p>Necessary to run the GCC testsuite; see the section on testing for
  details.  Tcl 8.6 has a known regression in RE pattern handling that
  make parts of the testsuite fail.  See
  <a href="http://core.tcl.tk/tcl/tktview/267b7e2334ee2e9de34c4b00d6e72e2f1997085f">http://core.tcl.tk/tcl/tktview/267b7e2334ee2e9de34c4b00d6e72e2f1997085f</a>
  for more information.  This bug has been fixed in 8.6.1.
! </p>
! </dd>
! <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>
! </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 SVN repository.  They are included in
  releases.
! </p>
! </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> or <code>make pdf</code> to
  create printable documentation in DVI or PDF format.  Texinfo version
! 4.8 or later is required for <code>make pdf</code>.
! </p>
! <p>Necessary to build GCC documentation during development because the
  generated output files are not included in the SVN repository.  They are
  included in releases.
! </p>
! </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>SVN (any version)</dt>
! <dt>SSH (any version)</dt>
! <dd>
! <p>Necessary to access the SVN repository.  Public releases and weekly
  snapshots of the development sources are also available via FTP.
! </p>
! </dd>
! <dt>GNU diffutils version 2.7 (or later)</dt>
! <dd>
! <p>Useful when submitting patches for the GCC source code.
! </p>
! </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>
! <dt>ecj1</dt>
! <dt>gjavah</dt>
! <dd>
! <p>If you wish to modify <samp>.java</samp> files in libjava, you will need to
! configure with <samp>--enable-java-maintainer-mode</samp>, and you will need
! to have executables named <code>ecj1</code> and <code>gjavah</code> in your path.
! The <code>ecj1</code> executable should run the Eclipse Java compiler via
  the GCC-specific entry point.  You can download a suitable jar from
  <a href="ftp://sourceware.org/pub/java/">ftp://sourceware.org/pub/java/</a>, or by running the script
! <code>contrib/download_ecj</code>.
! </p>
! </dd>
! <dt>antlr.jar version 2.7.1 (or later)</dt>
! <dt>antlr binary</dt>
! <dd>
! <p>If you wish to build the <code>gjdoc</code> binary in libjava, you will
! need to have an <samp>antlr.jar</samp> library available. The library is
  searched for in system locations but can be specified with
! <samp>--with-antlr-jar=</samp> instead.  When configuring with
! <samp>--enable-java-maintainer-mode</samp>, you will need to have one of
! the executables named <code>cantlr</code>, <code>runantlr</code> or
! <code>antlr</code> in your path.
! </p>
! </dd>
  </dl>
  
! <hr />
! <p>
  <p><a href="./index.html">Return to the GCC Installation page</a>
+ </p>
+ 
+ 
+ 
+ 
+ 
  
  
+ 
+ 
+ 
+ 
+ 
+ 
+ </body>
+ </html>
diff -Nrcpad gcc-5.4.0/INSTALL/specific.html gcc-5.5.0/INSTALL/specific.html
*** gcc-5.4.0/INSTALL/specific.html	Fri Jun  3 08:45:08 2016
--- gcc-5.5.0/INSTALL/specific.html	Tue Oct 10 08:13:23 2017
***************
*** 1,673 ****
! <html lang="en">
! <head>
! <title>Host/Target specific installation notes for GCC</title>
! <meta http-equiv="Content-Type" content="text/html">
! <meta name="description" content="Host/Target specific installation notes for GCC">
! <meta name="generator" content="makeinfo 4.12">
! <link title="Top" rel="top" href="#Top">
! <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
! <!--
! Copyright (C) 1988-2015 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
  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 "GNU Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
!      A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
!      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.-->
! <meta http-equiv="Content-Style-Type" content="text/css">
! <style type="text/css"><!--
!   pre.display { font-family:inherit }
!   pre.format  { font-family:inherit }
!   pre.smalldisplay { font-family:inherit; font-size:smaller }
!   pre.smallformat  { font-family:inherit; font-size:smaller }
!   pre.smallexample { font-size:smaller }
!   pre.smalllisp    { font-size:smaller }
!   span.sc    { font-variant:small-caps }
!   span.roman { font-family:serif; font-weight:normal; } 
!   span.sansserif { font-family:sans-serif; font-weight:normal; } 
! --></style>
  </head>
- <body>
- <h1 class="settitle">Host/Target specific installation notes for GCC</h1>
- <a name="index-Specific-1"></a><a name="index-Specific-installation-notes-2"></a><a name="index-Target-specific-installation-3"></a><a name="index-Host-specific-installation-4"></a><a name="index-Target-specific-installation-notes-5"></a>
- Please read this document carefully <em>before</em> installing the
- GNU Compiler Collection on your machine.
  
!    <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.
  
-      <ul>
- <li><a href="#aarch64-x-x">aarch64*-*-*</a>
- <li><a href="#alpha-x-x">alpha*-*-*</a>
- <li><a href="#alpha-dec-osf51">alpha*-dec-osf5.1</a>
- <li><a href="#amd64-x-solaris210">amd64-*-solaris2.10</a>
- <li><a href="#arm-x-eabi">arm-*-eabi</a>
- <li><a href="#avr">avr</a>
- <li><a href="#bfin">Blackfin</a>
- <li><a href="#dos">DOS</a>
- <li><a href="#x-x-freebsd">*-*-freebsd*</a>
- <li><a href="#h8300-hms">h8300-hms</a>
- <li><a href="#hppa-hp-hpux">hppa*-hp-hpux*</a>
- <li><a href="#hppa-hp-hpux10">hppa*-hp-hpux10</a>
- <li><a href="#hppa-hp-hpux11">hppa*-hp-hpux11</a>
- <li><a href="#x-x-linux-gnu">*-*-linux-gnu</a>
- <li><a href="#ix86-x-linux">i?86-*-linux*</a>
- <li><a href="#ix86-x-solaris210">i?86-*-solaris2.10</a>
- <li><a href="#ia64-x-linux">ia64-*-linux</a>
- <li><a href="#ia64-x-hpux">ia64-*-hpux*</a>
- <li><a href="#x-ibm-aix">*-ibm-aix*</a>
- <li><a href="#iq2000-x-elf">iq2000-*-elf</a>
- <li><a href="#lm32-x-elf">lm32-*-elf</a>
- <li><a href="#lm32-x-uclinux">lm32-*-uclinux</a>
- <li><a href="#m32c-x-elf">m32c-*-elf</a>
- <li><a href="#m32r-x-elf">m32r-*-elf</a>
- <li><a href="#m68k-x-x">m68k-*-*</a>
- <li><a href="#m68k-uclinux">m68k-uclinux</a>
- <li><a href="#mep-x-elf">mep-*-elf</a>
- <li><a href="#microblaze-x-elf">microblaze-*-elf</a>
- <li><a href="#mips-x-x">mips-*-*</a>
- <li><a href="#mips-sgi-irix5">mips-sgi-irix5</a>
- <li><a href="#mips-sgi-irix6">mips-sgi-irix6</a>
- <li><a href="#nds32le-x-elf">nds32le-*-elf</a>
- <li><a href="#nds32be-x-elf">nds32be-*-elf</a>
- <li><a href="#nvptx-x-none">nvptx-*-none</a>
- <li><a href="#powerpc-x-x">powerpc*-*-*</a>
- <li><a href="#powerpc-x-darwin">powerpc-*-darwin*</a>
- <li><a href="#powerpc-x-elf">powerpc-*-elf</a>
- <li><a href="#powerpc-x-linux-gnu">powerpc*-*-linux-gnu*</a>
- <li><a href="#powerpc-x-netbsd">powerpc-*-netbsd*</a>
- <li><a href="#powerpc-x-eabisim">powerpc-*-eabisim</a>
- <li><a href="#powerpc-x-eabi">powerpc-*-eabi</a>
- <li><a href="#powerpcle-x-elf">powerpcle-*-elf</a>
- <li><a href="#powerpcle-x-eabisim">powerpcle-*-eabisim</a>
- <li><a href="#powerpcle-x-eabi">powerpcle-*-eabi</a>
- <li><a href="#s390-x-linux">s390-*-linux*</a>
- <li><a href="#s390x-x-linux">s390x-*-linux*</a>
- <li><a href="#s390x-ibm-tpf">s390x-ibm-tpf*</a>
- <li><a href="#x-x-solaris2">*-*-solaris2*</a>
- <li><a href="#sparc-x-x">sparc*-*-*</a>
- <li><a href="#sparc-sun-solaris2">sparc-sun-solaris2*</a>
- <li><a href="#sparc-sun-solaris210">sparc-sun-solaris2.10</a>
- <li><a href="#sparc-x-linux">sparc-*-linux*</a>
- <li><a href="#sparc64-x-solaris2">sparc64-*-solaris2*</a>
- <li><a href="#sparcv9-x-solaris2">sparcv9-*-solaris2*</a>
- <li><a href="#c6x-x-x">c6x-*-*</a>
- <li><a href="#tilegx-x-linux">tilegx-*-linux*</a>
- <li><a href="#tilegxbe-x-linux">tilegxbe-*-linux*</a>
- <li><a href="#tilepro-x-linux">tilepro-*-linux*</a>
- <li><a href="#visium-x-elf">visium-*-elf</a>
- <li><a href="#x-x-vxworks">*-*-vxworks*</a>
- <li><a href="#x86-64-x-x">x86_64-*-*</a> amd64-*-*
- <li><a href="#x86-64-x-solaris210">x86_64-*-solaris2.1[0-9]*</a>
- <li><a href="#xtensa-x-elf">xtensa*-*-elf</a>
- <li><a href="#xtensa-x-linux">xtensa*-*-linux*</a>
- <li><a href="#windows">Microsoft Windows</a>
- <li><a href="#x-x-cygwin">*-*-cygwin</a>
- <li><a href="#x-x-interix">*-*-interix</a>
- <li><a href="#x-x-mingw32">*-*-mingw32</a>
- <li><a href="#os2">OS/2</a>
- <li><a href="#older">Older systems</a>
- </ul>
  
-      <ul>
- <li><a href="#elf">all ELF targets</a> (SVR4, Solaris 2, etc.) 
- </ul>
  
-    <p><!-- -------- host/target specific issues start here ---------------- -->
- <hr /><a name="aarch64_002dx_002dx"></a>
  
- <h3 class="heading"><a name="TOC0"></a>aarch64*-*-*</h3>
  
- <p>Binutils pre 2.24 does not have support for selecting <samp><span class="option">-mabi</span></samp> and
- does not support ILP32.  If it is used to build GCC 4.9 or later, GCC will
- not support option <samp><span class="option">-mabi=ilp32</span></samp>.
  
!    <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><span class="option">--enable-fix-cortex-a53-835769</span></samp> option.  This will enable the fix by
  default and can be explicitly disabled during compilation by passing the
! <samp><span class="option">-mno-fix-cortex-a53-835769</span></samp> option.  Conversely,
! <samp><span class="option">--disable-fix-cortex-a53-835769</span></samp> will disable the workaround by
  default.  The workaround is disabled by default if neither of
! <samp><span class="option">--enable-fix-cortex-a53-835769</span></samp> or
! <samp><span class="option">--disable-fix-cortex-a53-835769</span></samp> is given at configure time.
! 
!    <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><span class="option">--enable-fix-cortex-a53-843419</span></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><span class="option">-mno-fix-cortex-a53-843419</span></samp> option.  Conversely,
! <samp><span class="option">--disable-fix-cortex-a53-843419</span></samp> will disable the workaround by default. 
  The workaround is disabled by default if neither of
! <samp><span class="option">--enable-fix-cortex-a53-843419</span></samp> or
! <samp><span class="option">--disable-fix-cortex-a53-843419</span></samp> is given at configure time.
! 
!    <p><hr /><a name="alpha_002dx_002dx"></a>
! 
! <h3 class="heading"><a name="TOC1"></a>alpha*-*-*</h3>
! 
  <p>This section contains general configuration information for all
  alpha-based platforms using ELF (in particular, ignore this section for
  DEC OSF/1, Digital UNIX and Tru64 UNIX).  In addition to reading this
  section, please read all other sections that match your target.
! 
!    <p>We require binutils 2.11.2 or newer. 
  Previous binutils releases had a number of problems with DWARF 2
  debugging information, not the least of which is incorrect linking of
  shared libraries.
! 
!    <p><hr /><a name="alpha_002ddec_002dosf51"></a>
! 
! <h3 class="heading"><a name="TOC2"></a>alpha*-dec-osf5.1</h3>
! 
  <p>Systems using processors that implement the DEC Alpha architecture and
  are running the DEC/Compaq/HP Unix (DEC OSF/1, Digital UNIX, or Compaq/HP
  Tru64 UNIX) operating system, for example the DEC Alpha AXP systems.
! 
!    <p>Support for Tru64 UNIX V5.1 has been removed in GCC 4.8.  As of GCC 4.6,
  support for Tru64 UNIX V4.0 and V5.0 has been removed.  As of GCC 3.2,
  versions before <code>alpha*-dec-osf4</code> are no longer supported.  (These
  are the versions which identify themselves as DEC OSF/1.)
  
!    <p><hr /><a name="amd64_002dx_002dsolaris210"></a>
! 
! <h3 class="heading"><a name="TOC3"></a>amd64-*-solaris2.1[0-9]*</h3>
! 
! <p>This is a synonym for &lsquo;<samp><span class="samp">x86_64-*-solaris2.1[0-9]*</span></samp>&rsquo;.
! 
!    <p><hr /><a name="arc_002dx_002delf32"></a>
! 
! <h3 class="heading"><a name="TOC4"></a>arc-*-elf32</h3>
! 
! <p>Use &lsquo;<samp><span class="samp">configure --target=arc-elf32 --with-cpu=</span><var>cpu</var><span class="samp"> --enable-languages="c,c++"</span></samp>&rsquo;
! to configure GCC, with <var>cpu</var> being one of &lsquo;<samp><span class="samp">arc600</span></samp>&rsquo;, &lsquo;<samp><span class="samp">arc601</span></samp>&rsquo;,
! or &lsquo;<samp><span class="samp">arc700</span></samp>&rsquo;.
! 
!    <p><hr /><a name="arc_002dlinux_002duclibc"></a>
! 
! <h3 class="heading"><a name="TOC5"></a>arc-linux-uclibc</h3>
! 
! <p>Use &lsquo;<samp><span class="samp">configure --target=arc-linux-uclibc --with-cpu=arc700 --enable-languages="c,c++"</span></samp>&rsquo; to configure GCC.
! 
!    <p><hr /><a name="arm_002dx_002deabi"></a>
! 
! <h3 class="heading"><a name="TOC6"></a>arm-*-eabi</h3>
  
  <p>ARM-family processors.  Subtargets that use the ELF object format
  require GNU binutils 2.13 or newer.  Such subtargets include:
  <code>arm-*-netbsdelf</code>, <code>arm-*-*linux-*</code>
  and <code>arm-*-rtemseabi</code>.
! 
!    <p><hr /><a name="avr"></a>
! 
! <h3 class="heading"><a name="TOC7"></a>avr</h3>
! 
  <p>ATMEL AVR-family micro controllers.  These are used in embedded
! applications.  There are no standard Unix configurations. 
  See &ldquo;AVR Options&rdquo; in the main manual
  for the list of supported MCU types.
! 
!    <p>Use &lsquo;<samp><span class="samp">configure --target=avr --enable-languages="c"</span></samp>&rsquo; to configure GCC.
! 
!    <p>Further installation notes and other useful information about AVR tools
  can also be obtained from:
  
!      <ul>
! <li><a href="http://www.nongnu.org/avr/">http://www.nongnu.org/avr/</a>
! <li><a href="http://www.amelek.gda.pl/avr/">http://www.amelek.gda.pl/avr/</a>
! </ul>
! 
!    <p>We <em>strongly</em> recommend using binutils 2.13 or newer.
! 
!    <p>The following error:
! <pre class="smallexample">     Error: register required
! </pre>
!    <p>indicates that you should upgrade to a newer version of the binutils.
! 
!    <p><hr /><a name="bfin"></a>
! 
! <h3 class="heading"><a name="TOC8"></a>Blackfin</h3>
  
! <p>The Blackfin processor, an Analog Devices DSP. 
  See &ldquo;Blackfin Options&rdquo; in the main manual
! 
!    <p>More information, and a version of binutils with support for this processor,
  is available at <a href="http://blackfin.uclinux.org">http://blackfin.uclinux.org</a>
! 
!    <p><hr /><a name="cr16"></a>
! 
! <h3 class="heading"><a name="TOC9"></a>CR16</h3>
! 
  <p>The CR16 CompactRISC architecture is a 16-bit architecture. This
  architecture is used in embedded applications.
  
!    <p>See &ldquo;CR16 Options&rdquo; in the main manual for a list of CR16-specific options.
! 
!    <p>Use &lsquo;<samp><span class="samp">configure --target=cr16-elf --enable-languages=c,c++</span></samp>&rsquo; to configure
! GCC for building a CR16 elf cross-compiler.
! 
!    <p>Use &lsquo;<samp><span class="samp">configure --target=cr16-uclinux --enable-languages=c,c++</span></samp>&rsquo; to
! configure GCC for building a CR16 uclinux cross-compiler.
! 
!    <p><hr /><a name="cris"></a>
! 
! <h3 class="heading"><a name="TOC10"></a>CRIS</h3>
! 
  <p>CRIS is the CPU architecture in Axis Communications ETRAX system-on-a-chip
  series.  These are used in embedded applications.
! 
!    <p>See &ldquo;CRIS Options&rdquo; in the main manual
  for a list of CRIS-specific options.
! 
!    <p>There are a few different CRIS targets:
!      <dl>
! <dt><code>cris-axis-elf</code><dd>Mainly for monolithic embedded systems.  Includes a multilib for the
! &lsquo;<samp><span class="samp">v10</span></samp>&rsquo; core used in &lsquo;<samp><span class="samp">ETRAX 100 LX</span></samp>&rsquo;. 
! <br><dt><code>cris-axis-linux-gnu</code><dd>A GNU/Linux port for the CRIS architecture, currently targeting
! &lsquo;<samp><span class="samp">ETRAX 100 LX</span></samp>&rsquo; by default. 
  </dl>
  
!    <p>For <code>cris-axis-elf</code> you need binutils 2.11
  or newer.  For <code>cris-axis-linux-gnu</code> you need binutils 2.12 or newer.
! 
!    <p>Pre-packaged tools can be obtained from
  <a href="ftp://ftp.axis.com/pub/axis/tools/cris/compiler-kit/">ftp://ftp.axis.com/pub/axis/tools/cris/compiler-kit/</a>.  More
  information about this platform is available at
  <a href="http://developer.axis.com/">http://developer.axis.com/</a>.
! 
!    <p><hr /><a name="dos"></a>
! 
! <h3 class="heading"><a name="TOC11"></a>DOS</h3>
! 
  <p>Please have a look at the <a href="binaries.html">binaries page</a>.
! 
!    <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 includes binaries as well as sources,
  and includes all the necessary compilation tools and libraries.
! 
!    <p><hr /><a name="epiphany_002dx_002delf"></a>
! 
! <h3 class="heading"><a name="TOC12"></a>epiphany-*-elf</h3>
! 
! <p>Adapteva Epiphany. 
  This configuration is intended for embedded systems.
! 
!    <p><hr /><a name="x_002dx_002dfreebsd"></a>
! 
! <h3 class="heading"><a name="TOC13"></a>*-*-freebsd*</h3>
! 
  <p>Support for FreeBSD 1 was discontinued in GCC 3.2.  Support for
  FreeBSD 2 (and any mutant a.out variants of FreeBSD 3) was
  discontinued in GCC 4.0.
! 
!    <p>In order to better utilize FreeBSD base system functionality and match
  the configuration of the system compiler, GCC 4.5 and above as well as
  GCC 4.4 past 2010-06-20 leverage SSP support in libc (which is present
  on FreeBSD 7 or later) and the use of <code>__cxa_atexit</code> by default
  (on FreeBSD 6 or later).  The use of <code>dl_iterate_phdr</code> inside
! <samp><span class="file">libgcc_s.so.1</span></samp> and boehm-gc (on FreeBSD 7 or later) is enabled
  by GCC 4.5 and above.
! 
!    <p>We support FreeBSD using the ELF file format with DWARF 2 debugging
! for all CPU architectures.  You may use <samp><span class="option">-gstabs</span></samp> instead of
! <samp><span class="option">-g</span></samp>, if you really want the old debugging format.  There are
  no known issues with mixing object files and libraries with different
  debugging formats.  Otherwise, this release of GCC should now match
  more of the configuration used in the stock FreeBSD configuration of
! GCC.  In particular, <samp><span class="option">--enable-threads</span></samp> is now configured by
  default.  However, as a general user, do not attempt to replace the
  system compiler with this release.  Known to bootstrap and check with
  good results on FreeBSD 7.2-STABLE.  In the past, known to bootstrap
  and check with good results on FreeBSD 3.0, 3.4, 4.0, 4.2, 4.3, 4.4,
  4.5, 4.8, 4.9 and 5-CURRENT.
! 
!    <p>The version of binutils installed in <samp><span class="file">/usr/bin</span></samp> probably works
  with this release of GCC.  Bootstrapping against the latest GNU
! binutils and/or the version found in <samp><span class="file">/usr/ports/devel/binutils</span></samp> has
  been known to enable additional features and improve overall testsuite
  results.  However, it is currently known that boehm-gc (which itself
  is required for java) may not configure properly on FreeBSD prior to
  the FreeBSD 7.0 release with GNU binutils after 2.16.1.
! 
!    <p><hr /><a name="h8300_002dhms"></a>
! 
! <h3 class="heading"><a name="TOC14"></a>h8300-hms</h3>
! 
  <p>Renesas H8/300 series of processors.
! 
!    <p>Please have a look at the <a href="binaries.html">binaries page</a>.
! 
!    <p>The calling convention and structure layout has changed in release 2.6. 
  All code must be recompiled.  The calling convention now passes the
  first three arguments in function calls in registers.  Structures are no
  longer a multiple of 2 bytes.
! 
!    <p><hr /><a name="hppa_002dhp_002dhpux"></a>
! 
! <h3 class="heading"><a name="TOC15"></a>hppa*-hp-hpux*</h3>
! 
  <p>Support for HP-UX version 9 and older was discontinued in GCC 3.4.
! 
!    <p>We require using gas/binutils on all hppa platforms.  Version 2.19 or
  later is recommended.
! 
!    <p>It may be helpful to configure GCC with the
! <a href="./configure.html#with-gnu-as"><samp><span class="option">--with-gnu-as</span></samp></a> and
! <samp><span class="option">--with-as=...</span></samp> options to ensure that GCC can find GAS.
! 
!    <p>The HP assembler should not be used with GCC.  It is rarely tested and may
! not work.  It shouldn't be used with any languages other than C due to its
  many limitations.
! 
!    <p>Specifically, <samp><span class="option">-g</span></samp> does not work (HP-UX uses a peculiar debugging
  format which GCC does not know about).  It also inserts timestamps
  into each object file it creates, causing the 3-stage comparison test to
  fail during a bootstrap.  You should be able to continue by saying
! &lsquo;<samp><span class="samp">make all-host all-target</span></samp>&rsquo; after getting the failure from &lsquo;<samp><span class="samp">make</span></samp>&rsquo;.
! 
!    <p>Various GCC features are not supported.  For example, it does not support weak
  symbols or alias definitions.  As a result, explicit template instantiations
  are required when using C++.  This makes it difficult if not impossible to
  build many C++ applications.
! 
!    <p>There are two default scheduling models for instructions.  These are
  PROCESSOR_7100LC and PROCESSOR_8000.  They are selected from the pa-risc
! architecture specified for the target machine when configuring. 
  PROCESSOR_8000 is the default.  PROCESSOR_7100LC is selected when
! the target is a &lsquo;<samp><span class="samp">hppa1*</span></samp>&rsquo; machine.
! 
!    <p>The PROCESSOR_8000 model is not well suited to older processors.  Thus,
  it is important to completely specify the machine architecture when
  configuring if you want a model other than PROCESSOR_8000.  The macro
  TARGET_SCHED_DEFAULT can be defined in BOOT_CFLAGS if a different
  default scheduling model is desired.
! 
!    <p>As of GCC 4.0, GCC uses the UNIX 95 namespace for HP-UX 10.10
! through 11.00, and the UNIX 98 namespace for HP-UX 11.11 and later. 
  This namespace change might cause problems when bootstrapping with
  an earlier version of GCC or the HP compiler as essentially the same
  namespace is required for an entire build.  This problem can be avoided
! in a number of ways.  With HP cc, <samp><span class="env">UNIX_STD</span></samp> can be set to &lsquo;<samp><span class="samp">95</span></samp>&rsquo;
! or &lsquo;<samp><span class="samp">98</span></samp>&rsquo;.  Another way is to add an appropriate set of predefines
! to <samp><span class="env">CC</span></samp>.  The description for the <samp><span class="option">munix=</span></samp> option contains
  a list of the predefines used with each standard.
! 
!    <p>More specific information to &lsquo;<samp><span class="samp">hppa*-hp-hpux*</span></samp>&rsquo; targets follows.
! 
!    <p><hr /><a name="hppa_002dhp_002dhpux10"></a>
! 
! <h3 class="heading"><a name="TOC16"></a>hppa*-hp-hpux10</h3>
! 
  <p>For hpux10.20, we <em>highly</em> recommend you pick up the latest sed patch
  <code>PHCO_19798</code> from HP.
! 
!    <p>The C++ ABI has changed incompatibly in GCC 4.0.  COMDAT subspaces are
  used for one-only code and data.  This resolves many of the previous
  problems in using C++ on this target.  However, the ABI is not compatible
  with the one implemented under HP-UX 11 using secondary definitions.
! 
!    <p><hr /><a name="hppa_002dhp_002dhpux11"></a>
! 
! <h3 class="heading"><a name="TOC17"></a>hppa*-hp-hpux11</h3>
! 
  <p>GCC 3.0 and up support HP-UX 11.  GCC 2.95.x is not supported and cannot
  be used to compile GCC 3.0 and up.
! 
!    <p>The libffi and libjava libraries haven't been ported to 64-bit HP-UX and don't build.
! 
!    <p>Refer to <a href="binaries.html">binaries</a> for information about obtaining
  precompiled GCC binaries for HP-UX.  Precompiled binaries must be obtained
! to build the Ada language as it can't be bootstrapped using C.  Ada is
  only available for the 32-bit PA-RISC runtime.
! 
!    <p>Starting with GCC 3.4 an ISO C compiler is required to bootstrap.  The
! bundled compiler supports only traditional C; you will need either HP's
  unbundled compiler, or a binary distribution of GCC.
! 
!    <p>It is possible to build GCC 3.3 starting with the bundled HP compiler,
  but the process requires several steps.  GCC 3.3 can then be used to
  build later versions.  The fastjar program contains ISO C code and
! can't be built with the HP bundled compiler.  This problem can be
  avoided by not building the Java language.  For example, use the
! <samp><span class="option">--enable-languages="c,c++,f77,objc"</span></samp> option in your configure
  command.
! 
!    <p>There are several possible approaches to building the distribution. 
  Binutils can be built first using the HP tools.  Then, the GCC
  distribution can be built.  The second approach is to build GCC
! first using the HP tools, then build binutils, then rebuild GCC. 
  There have been problems with various binary distributions, so it
  is best not to start from a binary distribution.
! 
!    <p>On 64-bit capable systems, there are two distinct targets.  Different
  installation prefixes must be used if both are to be installed on
! the same system.  The &lsquo;<samp><span class="samp">hppa[1-2]*-hp-hpux11*</span></samp>&rsquo; target generates code
! for the 32-bit PA-RISC runtime architecture and uses the HP linker. 
! The &lsquo;<samp><span class="samp">hppa64-hp-hpux11*</span></samp>&rsquo; target generates 64-bit code for the
  PA-RISC 2.0 architecture.
! 
!    <p>The script config.guess now selects the target type based on the compiler
! detected during configuration.  You must define <samp><span class="env">PATH</span></samp> or <samp><span class="env">CC</span></samp> so
! that configure finds an appropriate compiler for the initial bootstrap. 
! When <samp><span class="env">CC</span></samp> is used, the definition should contain the options that are
! needed whenever <samp><span class="env">CC</span></samp> is used.
! 
!    <p>Specifically, options that determine the runtime architecture must be
! in <samp><span class="env">CC</span></samp> to correctly select the target for the build.  It is also
! convenient to place many other compiler options in <samp><span class="env">CC</span></samp>.  For example,
! <samp><span class="env">CC="cc -Ac +DA2.0W -Wp,-H16376 -D_CLASSIC_TYPES -D_HPUX_SOURCE"</span></samp>
  can be used to bootstrap the GCC 3.3 branch with the HP compiler in
! 64-bit K&amp;R/bundled mode.  The <samp><span class="option">+DA2.0W</span></samp> option will result in
! the automatic selection of the &lsquo;<samp><span class="samp">hppa64-hp-hpux11*</span></samp>&rsquo; target.  The
  macro definition table of cpp needs to be increased for a successful
  build with the HP compiler.  _CLASSIC_TYPES and _HPUX_SOURCE need to
  be defined when building with the bundled compiler, or when using the
! <samp><span class="option">-Ac</span></samp> option.  These defines aren't necessary with <samp><span class="option">-Ae</span></samp>.
! 
!    <p>It is best to explicitly configure the &lsquo;<samp><span class="samp">hppa64-hp-hpux11*</span></samp>&rsquo; target
! with the <samp><span class="option">--with-ld=...</span></samp> option.  This overrides the standard
  search for ld.  The two linkers supported on this target require different
  commands.  The default linker is determined during configuration.  As a
! result, it's not possible to switch linkers in the middle of a GCC build. 
  This has been reported to sometimes occur in unified builds of binutils
  and GCC.
! 
!    <p>A recent linker patch must be installed for the correct operation of
  GCC 3.3 and later.  <code>PHSS_26559</code> and <code>PHSS_24304</code> are the
  oldest linker patches that are known to work.  They are for HP-UX
  11.00 and 11.11, respectively.  <code>PHSS_24303</code>, the companion to
! <code>PHSS_24304</code>, might be usable but it hasn't been tested.  These
  patches have been superseded.  Consult the HP patch database to obtain
  the currently recommended linker patch for your system.
! 
!    <p>The patches are necessary for the support of weak symbols on the
  32-bit port, and for the running of initializers and finalizers.  Weak
  symbols are implemented using SOM secondary definition symbols.  Prior
! to HP-UX 11, there are bugs in the linker support for secondary symbols. 
  The patches correct a problem of linker core dumps creating shared
  libraries containing secondary symbols, as well as various other
  linking issues involving secondary symbols.
! 
!    <p>GCC 3.3 uses the ELF DT_INIT_ARRAY and DT_FINI_ARRAY capabilities to
  run initializers and finalizers on the 64-bit port.  The 32-bit port
! uses the linker <samp><span class="option">+init</span></samp> and <samp><span class="option">+fini</span></samp> options for the same
  purpose.  The patches correct various problems with the +init/+fini
  options, including program core dumps.  Binutils 2.14 corrects a
! problem on the 64-bit port resulting from HP's non-standard use of
  the .init and .fini sections for array initializers and finalizers.
! 
!    <p>Although the HP and GNU linkers are both supported for the
! &lsquo;<samp><span class="samp">hppa64-hp-hpux11*</span></samp>&rsquo; target, it is strongly recommended that the
  HP linker be used for link editing on this target.
! 
!    <p>At this time, the GNU linker does not support the creation of long
! branch stubs.  As a result, it can't successfully link binaries
  containing branch offsets larger than 8 megabytes.  In addition,
  there are problems linking shared libraries, linking executables
! with <samp><span class="option">-static</span></samp>, and with dwarf2 unwind and exception support. 
! It also doesn't provide stubs for internal calls to global functions
! in shared libraries, so these calls can't be overloaded.
! 
!    <p>The HP dynamic loader does not support GNU symbol versioning, so symbol
  versioning is not supported.  It may be necessary to disable symbol
! versioning with <samp><span class="option">--disable-symvers</span></samp> when using GNU ld.
! 
!    <p>POSIX threads are the default.  The optional DCE thread library is not
! supported, so <samp><span class="option">--enable-threads=dce</span></samp> does not work.
! 
!    <p><hr /><a name="x_002dx_002dlinux_002dgnu"></a>
! 
! <h3 class="heading"><a name="TOC18"></a>*-*-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_002dx_002dlinux"></a>
! 
! <h3 class="heading"><a name="TOC19"></a>i?86-*-linux*</h3>
! 
! <p>As of GCC 3.3, binutils 2.13.1 or later is required for this platform. 
  See <a href="http://gcc.gnu.org/PR10877">bug 10877</a> for more information.
! 
!    <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="http://www.bitwizard.nl/sig11/">www.bitwizard.nl</a>.
! 
!    <p><hr /><a name="ix86_002dx_002dsolaris210"></a>
! 
! <h3 class="heading"><a name="TOC20"></a>i?86-*-solaris2.10</h3>
! 
  <p>Use this for Solaris 10 or later on x86 and x86-64 systems.  Starting
! with GCC 4.7, there is also a 64-bit &lsquo;<samp><span class="samp">amd64-*-solaris2.1[0-9]*</span></samp>&rsquo; or
! &lsquo;<samp><span class="samp">x86_64-*-solaris2.1[0-9]*</span></samp>&rsquo; configuration that corresponds to
! &lsquo;<samp><span class="samp">sparcv9-sun-solaris2*</span></samp>&rsquo;.
! 
!    <p>It is recommended that you configure GCC to use the GNU assembler, in
! <samp><span class="file">/usr/sfw/bin/gas</span></samp>.  The versions included in Solaris 10, from GNU
  binutils 2.15, and Solaris 11, from GNU binutils 2.19, work fine,
  although the current version, from GNU binutils
  2.22, is known to work, too.  Recent versions of the Sun assembler in
! <samp><span class="file">/usr/ccs/bin/as</span></samp> work almost as well, though. 
! <!-- FIXME: as patch requirements? -->
! 
!    <p>For linking, the Sun linker, is preferred.  If you want to use the GNU
! linker instead, which is available in <samp><span class="file">/usr/sfw/bin/gld</span></samp>, note that
  due to a packaging bug the version in Solaris 10, from GNU binutils
  2.15, cannot be used, while the version in Solaris 11, from GNU binutils
  2.19, works, as does the latest version, from GNU binutils 2.22.
! 
!    <p>To use GNU <samp><span class="command">as</span></samp>, configure with the options
! <samp><span class="option">--with-gnu-as --with-as=/usr/sfw/bin/gas</span></samp>.  It may be necessary
! to configure with <samp><span class="option">--without-gnu-ld --with-ld=/usr/ccs/bin/ld</span></samp> to
! guarantee use of Sun <samp><span class="command">ld</span></samp>. 
! <!-- FIXME: why -without-gnu-ld -with-ld? -->
! 
!    <p><hr /><a name="ia64_002dx_002dlinux"></a>
! 
! <h3 class="heading"><a name="TOC21"></a>ia64-*-linux</h3>
! 
  <p>IA-64 processor (also known as IPF, or Itanium Processor Family)
  running GNU/Linux.
! 
!    <p>If you are using the installed system libunwind library with
! <samp><span class="option">--with-system-libunwind</span></samp>, then you must use libunwind 0.98 or
  later.
! 
!    <p>None of the following versions of GCC has an ABI that is compatible
  with any of the other versions in this list, with the exception that
  Red Hat 2.96 and Trillian 000171 are compatible with each other:
! 3.1, 3.0.2, 3.0.1, 3.0, Red Hat 2.96, and Trillian 000717. 
! This primarily affects C++ programs and programs that create shared libraries. 
! GCC 3.1 or later is recommended for compiling linux, the kernel. 
  As of version 3.1 GCC is believed to be fully ABI compliant, and hence no
  more major ABI changes are expected.
! 
!    <p><hr /><a name="ia64_002dx_002dhpux"></a>
! 
! <h3 class="heading"><a name="TOC22"></a>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><span class="option">--with-gnu-as</span></samp> may be necessary.
! 
!    <p>The GCC libunwind library has not been ported to HPUX.  This means that for
! GCC versions 3.2.3 and earlier, <samp><span class="option">--enable-libunwind-exceptions</span></samp>
! is required to build GCC.  For GCC 3.3 and later, this is the default. 
! For gcc 3.4.3 and later, <samp><span class="option">--enable-libunwind-exceptions</span></samp> is
  removed and the system libunwind library will always be used.
! 
!    <p><hr />
! <!-- rs6000-ibm-aix*, powerpc-ibm-aix* --><a name="x_002dibm_002daix"></a>
! 
! <h3 class="heading"><a name="TOC23"></a>*-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>&ldquo;out of memory&rdquo; bootstrap failures may indicate a problem with
  process resource limits (ulimit).  Hard limits are configured in the
! <samp><span class="file">/etc/security/limits</span></samp> system configuration file.
! 
!    <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.,
  
! <pre class="smallexample">     % LDR_CNTRL=MAXDATA=0x50000000
!      % export LDR_CNTRL
! </pre>
!    <p>One can start with a pre-compiled version of GCC to build from
! sources.  One may delete GCC's &ldquo;fixed&rdquo; header files when starting
  with a version of GCC built for an earlier release of AIX.
  
!    <p>To speed up the configuration phases of bootstrapping and installing GCC,
! one may use GNU Bash instead of AIX <samp><span class="command">/bin/sh</span></samp>, e.g.,
! 
! <pre class="smallexample">     % CONFIG_SHELL=/opt/freeware/bin/bash
!      % export CONFIG_SHELL
! </pre>
!    <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>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>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 <samp><span class="command">cc</span></samp>
! (not <samp><span class="command">xlc</span></samp>).  Once <samp><span class="command">configure</span></samp> has been informed of
! <samp><span class="command">xlc</span></samp>, one needs to use &lsquo;<samp><span class="samp">make distclean</span></samp>&rsquo; to remove the
! configure cache files and ensure that <samp><span class="env">CC</span></samp> environment variable
! does not provide a definition that will confuse <samp><span class="command">configure</span></samp>. 
  If this error occurs during stage2 or later, then the problem most likely
  is the version of Make (see above).
! 
!    <p>The native <samp><span class="command">as</span></samp> and <samp><span class="command">ld</span></samp> 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 interoperate with GCC.
! 
!    <p>AIX 5.3 TL10, AIX 6.1 TL05 and AIX 7.1 TL00 introduced an AIX
  assembler change that sometimes produces corrupt assembly files
  causing AIX linker errors.  The bug breaks GCC bootstrap on AIX and
  can cause compilation failures with existing GCC installations.  An
--- 1,713 ----
! <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
! <html>
! <!-- Copyright (C) 1988-2015 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
  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 "GNU
! Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
! A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
! 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.1, http://www.gnu.org/software/texinfo/ -->
! <head>
! <title>Installing GCC</title>
! 
! <meta name="description" content="Installing GCC">
! <meta name="keywords" content="Installing GCC">
! <meta name="resource-type" content="document">
! <meta name="distribution" content="global">
! <meta name="Generator" content="makeinfo">
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <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>
  
  
  
  
  
  
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! <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="#alpha-x-x">alpha*-*-*</a>
! </li><li> <a href="#alpha-dec-osf51">alpha*-dec-osf5.1</a>
! </li><li> <a href="#amd64-x-solaris210">amd64-*-solaris2.10</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="#dos">DOS</a>
! </li><li> <a href="#x-x-freebsd">*-*-freebsd*</a>
! </li><li> <a href="#h8300-hms">h8300-hms</a>
! </li><li> <a href="#hppa-hp-hpux">hppa*-hp-hpux*</a>
! </li><li> <a href="#hppa-hp-hpux10">hppa*-hp-hpux10</a>
! </li><li> <a href="#hppa-hp-hpux11">hppa*-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-solaris210">i?86-*-solaris2.10</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="#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-uclinux">m68k-uclinux</a>
! </li><li> <a href="#mep-x-elf">mep-*-elf</a>
! </li><li> <a href="#microblaze-x-elf">microblaze-*-elf</a>
! </li><li> <a href="#mips-x-x">mips-*-*</a>
! </li><li> <a href="#mips-sgi-irix5">mips-sgi-irix5</a>
! </li><li> <a href="#mips-sgi-irix6">mips-sgi-irix6</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="#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="#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-sun-solaris210">sparc-sun-solaris2.10</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="#tilegx-x-linux">tilegx-*-linux*</a>
! </li><li> <a href="#tilegxbe-x-linux">tilegxbe-*-linux*</a>
! </li><li> <a href="#tilepro-x-linux">tilepro-*-linux*</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-solaris210">x86_64-*-solaris2.1[0-9]*</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-interix">*-*-interix</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 2, etc.)
! </li></ul>
! 
! 
! <!-- -------- host/target specific issues start here ---------------- -->
! <hr />
! <a name="aarch64_002dx_002dx"></a><a name="aarch64_002a_002d_002a_002d_002a"></a>
! <h3 class="heading">aarch64*-*-*</h3>
! <p>Binutils pre 2.24 does not have support for selecting <samp>-mabi</samp> and
! does not support ILP32.  If it is used to build GCC 4.9 or later, GCC will
! not support option <samp>-mabi=ilp32</samp>.
! </p>
! <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>
! <hr />
! <a name="alpha_002dx_002dx"></a><a name="alpha_002a_002d_002a_002d_002a"></a>
! <h3 class="heading">alpha*-*-*</h3>
  <p>This section contains general configuration information for all
  alpha-based platforms using ELF (in particular, ignore this section for
  DEC OSF/1, Digital UNIX and Tru64 UNIX).  In addition to reading this
  section, please read all other sections that match your target.
! </p>
! <p>We require binutils 2.11.2 or newer.
  Previous binutils releases had a number of problems with DWARF 2
  debugging information, not the least of which is incorrect linking of
  shared libraries.
! </p>
! <hr />
! <a name="alpha_002ddec_002dosf51"></a><a name="alpha_002a_002ddec_002dosf5_002e1"></a>
! <h3 class="heading">alpha*-dec-osf5.1</h3>
  <p>Systems using processors that implement the DEC Alpha architecture and
  are running the DEC/Compaq/HP Unix (DEC OSF/1, Digital UNIX, or Compaq/HP
  Tru64 UNIX) operating system, for example the DEC Alpha AXP systems.
! </p>
! <p>Support for Tru64 UNIX V5.1 has been removed in GCC 4.8.  As of GCC 4.6,
  support for Tru64 UNIX V4.0 and V5.0 has been removed.  As of GCC 3.2,
  versions before <code>alpha*-dec-osf4</code> are no longer supported.  (These
  are the versions which identify themselves as DEC OSF/1.)
+ </p>
+ <hr />
+ <a name="amd64_002dx_002dsolaris210"></a><a name="amd64_002d_002a_002dsolaris2_002e1_005b0_002d9_005d_002a"></a>
+ <h3 class="heading">amd64-*-solaris2.1[0-9]*</h3>
+ <p>This is a synonym for &lsquo;<samp>x86_64-*-solaris2.1[0-9]*</samp>&rsquo;.
+ </p>
+ <hr />
+ <a name="arc_002dx_002delf32"></a><a name="arc_002d_002a_002delf32"></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_002dlinux_002duclibc"></a><a name="arc_002dlinux_002duclibc-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_002dx_002deabi"></a><a name="arm_002d_002a_002deabi"></a>
+ <h3 class="heading">arm-*-eabi</h3>
  <p>ARM-family processors.  Subtargets that use the ELF object format
  require GNU binutils 2.13 or newer.  Such subtargets include:
  <code>arm-*-netbsdelf</code>, <code>arm-*-*linux-*</code>
  and <code>arm-*-rtemseabi</code>.
! </p>
! <hr />
! <a name="avr"></a><a name="avr-1"></a>
! <h3 class="heading">avr</h3>
  <p>ATMEL AVR-family micro controllers.  These are used in embedded
! applications.  There are no standard Unix configurations.
  See &ldquo;AVR Options&rdquo; in the main manual
  for the list of supported MCU types.
! </p>
! <p>Use &lsquo;<samp>configure --target=avr --enable-languages=&quot;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="http://www.nongnu.org/avr/">http://www.nongnu.org/avr/</a>
+ </li><li> <a href="http://www.amelek.gda.pl/avr/">http://www.amelek.gda.pl/avr/</a>
+ </li></ul>
  
! <p>We <em>strongly</em> recommend using binutils 2.13 or newer.
! </p>
! <p>The following error:
! </p><div class="smallexample">
! <pre class="smallexample">Error: register required
! </pre></div>
  
! <p>indicates that you should upgrade to a newer version of the binutils.
! </p>
! <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,
  is available at <a href="http://blackfin.uclinux.org">http://blackfin.uclinux.org</a>
! </p>
! <hr />
! <a name="cr16"></a><a name="CR16"></a>
! <h3 class="heading">CR16</h3>
  <p>The CR16 CompactRISC architecture is a 16-bit architecture. This
  architecture is used in embedded applications.
+ </p>
  
! <p>See &ldquo;CR16 Options&rdquo; in the main manual for a list of CR16-specific options.
! </p>
! <p>Use &lsquo;<samp>configure --target=cr16-elf --enable-languages=c,c++</samp>&rsquo; to configure
! GCC&nbsp;for building a CR16 elf cross-compiler.
! </p>
! <p>Use &lsquo;<samp>configure --target=cr16-uclinux --enable-languages=c,c++</samp>&rsquo; to
! configure GCC&nbsp;for building a CR16 uclinux cross-compiler.
! </p>
! <hr />
! <a name="cris"></a><a name="CRIS"></a>
! <h3 class="heading">CRIS</h3>
  <p>CRIS is the CPU architecture in Axis Communications ETRAX system-on-a-chip
  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>There are a few different CRIS targets:
! </p><dl compact="compact">
! <dt><code>cris-axis-elf</code></dt>
! <dd><p>Mainly for monolithic embedded systems.  Includes a multilib for the
! &lsquo;<samp>v10</samp>&rsquo; core used in &lsquo;<samp>ETRAX 100 LX</samp>&rsquo;.
! </p></dd>
! <dt><code>cris-axis-linux-gnu</code></dt>
! <dd><p>A GNU/Linux port for the CRIS architecture, currently targeting
! &lsquo;<samp>ETRAX 100 LX</samp>&rsquo; by default.
! </p></dd>
  </dl>
  
! <p>For <code>cris-axis-elf</code> you need binutils 2.11
  or newer.  For <code>cris-axis-linux-gnu</code> you need binutils 2.12 or newer.
! </p>
! <p>Pre-packaged tools can be obtained from
  <a href="ftp://ftp.axis.com/pub/axis/tools/cris/compiler-kit/">ftp://ftp.axis.com/pub/axis/tools/cris/compiler-kit/</a>.  More
  information about this platform is available at
  <a href="http://developer.axis.com/">http://developer.axis.com/</a>.
! </p>
! <hr />
! <a name="dos"></a><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
  compilation package DJGPP, which includes binaries as well as sources,
  and includes all the necessary compilation tools and libraries.
! </p>
! <hr />
! <a name="epiphany_002dx_002delf"></a><a name="epiphany_002d_002a_002delf"></a>
! <h3 class="heading">epiphany-*-elf</h3>
! <p>Adapteva Epiphany.
  This configuration is intended for embedded systems.
! </p>
! <hr />
! <a name="x_002dx_002dfreebsd"></a><a name="g_t_002a_002d_002a_002dfreebsd_002a"></a>
! <h3 class="heading">*-*-freebsd*</h3>
  <p>Support for FreeBSD 1 was discontinued in GCC 3.2.  Support for
  FreeBSD 2 (and any mutant a.out variants of FreeBSD 3) was
  discontinued in GCC 4.0.
! </p>
! <p>In order to better utilize FreeBSD base system functionality and match
  the configuration of the system compiler, GCC 4.5 and above as well as
  GCC 4.4 past 2010-06-20 leverage SSP support in libc (which is present
  on FreeBSD 7 or later) and the use of <code>__cxa_atexit</code> by default
  (on FreeBSD 6 or later).  The use of <code>dl_iterate_phdr</code> inside
! <samp>libgcc_s.so.1</samp> and boehm-gc (on FreeBSD 7 or later) is enabled
  by GCC 4.5 and above.
! </p>
! <p>We support FreeBSD using the ELF file format with DWARF 2 debugging
! for all CPU architectures.  You may use <samp>-gstabs</samp> instead of
! <samp>-g</samp>, if you really want the old debugging format.  There are
  no known issues with mixing object files and libraries with different
  debugging formats.  Otherwise, this release of GCC should now match
  more of the configuration used in the stock FreeBSD configuration of
! GCC.  In particular, <samp>--enable-threads</samp> is now configured by
  default.  However, as a general user, do not attempt to replace the
  system compiler with this release.  Known to bootstrap and check with
  good results on FreeBSD 7.2-STABLE.  In the past, known to bootstrap
  and check with good results on FreeBSD 3.0, 3.4, 4.0, 4.2, 4.3, 4.4,
  4.5, 4.8, 4.9 and 5-CURRENT.
! </p>
! <p>The version of binutils installed in <samp>/usr/bin</samp> probably works
  with this release of GCC.  Bootstrapping against the latest GNU
! binutils and/or the version found in <samp>/usr/ports/devel/binutils</samp> has
  been known to enable additional features and improve overall testsuite
  results.  However, it is currently known that boehm-gc (which itself
  is required for java) may not configure properly on FreeBSD prior to
  the FreeBSD 7.0 release with GNU binutils after 2.16.1.
! </p>
! <hr />
! <a name="h8300_002dhms"></a><a name="h8300_002dhms-1"></a>
! <h3 class="heading">h8300-hms</h3>
  <p>Renesas H8/300 series of processors.
! </p>
! <p>Please have a look at the <a href="binaries.html">binaries page</a>.
! </p>
! <p>The calling convention and structure layout has changed in release 2.6.
  All code must be recompiled.  The calling convention now passes the
  first three arguments in function calls in registers.  Structures are no
  longer a multiple of 2 bytes.
! </p>
! <hr />
! <a name="hppa_002dhp_002dhpux"></a><a name="hppa_002a_002dhp_002dhpux_002a"></a>
! <h3 class="heading">hppa*-hp-hpux*</h3>
  <p>Support for HP-UX version 9 and older was discontinued in GCC 3.4.
! </p>
! <p>We require using gas/binutils on all hppa platforms.  Version 2.19 or
  later is recommended.
! </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>The HP assembler should not be used with GCC.  It is rarely tested and may
! not work.  It shouldn&rsquo;t be used with any languages other than C due to its
  many limitations.
! </p>
! <p>Specifically, <samp>-g</samp> does not work (HP-UX uses a peculiar debugging
  format which GCC does not know about).  It also inserts timestamps
  into each object file it creates, causing the 3-stage comparison test to
  fail during a bootstrap.  You should be able to continue by saying
! &lsquo;<samp>make all-host all-target</samp>&rsquo; after getting the failure from &lsquo;<samp>make</samp>&rsquo;.
! </p>
! <p>Various GCC features are not supported.  For example, it does not support weak
  symbols or alias definitions.  As a result, explicit template instantiations
  are required when using C++.  This makes it difficult if not impossible to
  build many C++ applications.
! </p>
! <p>There are two default scheduling models for instructions.  These are
  PROCESSOR_7100LC and PROCESSOR_8000.  They are selected from the pa-risc
! architecture specified for the target machine when configuring.
  PROCESSOR_8000 is the default.  PROCESSOR_7100LC is selected when
! the target is a &lsquo;<samp>hppa1*</samp>&rsquo; machine.
! </p>
! <p>The PROCESSOR_8000 model is not well suited to older processors.  Thus,
  it is important to completely specify the machine architecture when
  configuring if you want a model other than PROCESSOR_8000.  The macro
  TARGET_SCHED_DEFAULT can be defined in BOOT_CFLAGS if a different
  default scheduling model is desired.
! </p>
! <p>As of GCC 4.0, GCC uses the UNIX 95 namespace for HP-UX 10.10
! through 11.00, and the UNIX 98 namespace for HP-UX 11.11 and later.
  This namespace change might cause problems when bootstrapping with
  an earlier version of GCC or the HP compiler as essentially the same
  namespace is required for an entire build.  This problem can be avoided
! in a number of ways.  With HP cc, <code>UNIX_STD</code> can be set to &lsquo;<samp>95</samp>&rsquo;
! or &lsquo;<samp>98</samp>&rsquo;.  Another way is to add an appropriate set of predefines
! to <code>CC</code>.  The description for the <samp>munix=</samp> option contains
  a list of the predefines used with each standard.
! </p>
! <p>More specific information to &lsquo;<samp>hppa*-hp-hpux*</samp>&rsquo; targets follows.
! </p>
! <hr />
! <a name="hppa_002dhp_002dhpux10"></a><a name="hppa_002a_002dhp_002dhpux10"></a>
! <h3 class="heading">hppa*-hp-hpux10</h3>
  <p>For hpux10.20, we <em>highly</em> recommend you pick up the latest sed patch
  <code>PHCO_19798</code> from HP.
! </p>
! <p>The C++ ABI has changed incompatibly in GCC 4.0.  COMDAT subspaces are
  used for one-only code and data.  This resolves many of the previous
  problems in using C++ on this target.  However, the ABI is not compatible
  with the one implemented under HP-UX 11 using secondary definitions.
! </p>
! <hr />
! <a name="hppa_002dhp_002dhpux11"></a><a name="hppa_002a_002dhp_002dhpux11"></a>
! <h3 class="heading">hppa*-hp-hpux11</h3>
  <p>GCC 3.0 and up support HP-UX 11.  GCC 2.95.x is not supported and cannot
  be used to compile GCC 3.0 and up.
! </p>
! <p>The libffi and libjava libraries haven&rsquo;t been ported to 64-bit HP-UX&nbsp;and don&rsquo;t build.
! </p>
! <p>Refer to <a href="binaries.html">binaries</a> for information about obtaining
  precompiled GCC binaries for HP-UX.  Precompiled binaries must be obtained
! to build the Ada language as it can&rsquo;t be bootstrapped using C.  Ada is
  only available for the 32-bit PA-RISC runtime.
! </p>
! <p>Starting with GCC 3.4 an ISO C compiler is required to bootstrap.  The
! bundled compiler supports only traditional C; you will need either HP&rsquo;s
  unbundled compiler, or a binary distribution of GCC.
! </p>
! <p>It is possible to build GCC 3.3 starting with the bundled HP compiler,
  but the process requires several steps.  GCC 3.3 can then be used to
  build later versions.  The fastjar program contains ISO C code and
! can&rsquo;t be built with the HP bundled compiler.  This problem can be
  avoided by not building the Java language.  For example, use the
! <samp>--enable-languages=&quot;c,c++,f77,objc&quot;</samp> option in your configure
  command.
! </p>
! <p>There are several possible approaches to building the distribution.
  Binutils can be built first using the HP tools.  Then, the GCC
  distribution can be built.  The second approach is to build GCC
! first using the HP tools, then build binutils, then rebuild GCC.
  There have been problems with various binary distributions, so it
  is best not to start from a binary distribution.
! </p>
! <p>On 64-bit capable systems, there are two distinct targets.  Different
  installation prefixes must be used if both are to be installed on
! the same system.  The &lsquo;<samp>hppa[1-2]*-hp-hpux11*</samp>&rsquo; target generates code
! for the 32-bit PA-RISC runtime architecture and uses the HP linker.
! The &lsquo;<samp>hppa64-hp-hpux11*</samp>&rsquo; target generates 64-bit code for the
  PA-RISC 2.0 architecture.
! </p>
! <p>The script config.guess now selects the target type based on the compiler
! detected during configuration.  You must define <code>PATH</code> or <code>CC</code> so
! that configure finds an appropriate compiler for the initial bootstrap.
! When <code>CC</code> is used, the definition should contain the options that are
! needed whenever <code>CC</code> is used.
! </p>
! <p>Specifically, options that determine the runtime architecture must be
! in <code>CC</code> to correctly select the target for the build.  It is also
! convenient to place many other compiler options in <code>CC</code>.  For example,
! <code>CC=&quot;cc -Ac +DA2.0W -Wp,-H16376 -D_CLASSIC_TYPES -D_HPUX_SOURCE&quot;</code>
  can be used to bootstrap the GCC 3.3 branch with the HP compiler in
! 64-bit K&amp;R/bundled mode.  The <samp>+DA2.0W</samp> option will result in
! the automatic selection of the &lsquo;<samp>hppa64-hp-hpux11*</samp>&rsquo; target.  The
  macro definition table of cpp needs to be increased for a successful
  build with the HP compiler.  _CLASSIC_TYPES and _HPUX_SOURCE need to
  be defined when building with the bundled compiler, or when using the
! <samp>-Ac</samp> option.  These defines aren&rsquo;t necessary with <samp>-Ae</samp>.
! </p>
! <p>It is best to explicitly configure the &lsquo;<samp>hppa64-hp-hpux11*</samp>&rsquo; target
! with the <samp>--with-ld=&hellip;</samp> option.  This overrides the standard
  search for ld.  The two linkers supported on this target require different
  commands.  The default linker is determined during configuration.  As a
! result, it&rsquo;s not possible to switch linkers in the middle of a GCC build.
  This has been reported to sometimes occur in unified builds of binutils
  and GCC.
! </p>
! <p>A recent linker patch must be installed for the correct operation of
  GCC 3.3 and later.  <code>PHSS_26559</code> and <code>PHSS_24304</code> are the
  oldest linker patches that are known to work.  They are for HP-UX
  11.00 and 11.11, respectively.  <code>PHSS_24303</code>, the companion to
! <code>PHSS_24304</code>, might be usable but it hasn&rsquo;t been tested.  These
  patches have been superseded.  Consult the HP patch database to obtain
  the currently recommended linker patch for your system.
! </p>
! <p>The patches are necessary for the support of weak symbols on the
  32-bit port, and for the running of initializers and finalizers.  Weak
  symbols are implemented using SOM secondary definition symbols.  Prior
! to HP-UX 11, there are bugs in the linker support for secondary symbols.
  The patches correct a problem of linker core dumps creating shared
  libraries containing secondary symbols, as well as various other
  linking issues involving secondary symbols.
! </p>
! <p>GCC 3.3 uses the ELF DT_INIT_ARRAY and DT_FINI_ARRAY capabilities to
  run initializers and finalizers on the 64-bit port.  The 32-bit port
! uses the linker <samp>+init</samp> and <samp>+fini</samp> options for the same
  purpose.  The patches correct various problems with the +init/+fini
  options, including program core dumps.  Binutils 2.14 corrects a
! problem on the 64-bit port resulting from HP&rsquo;s non-standard use of
  the .init and .fini sections for array initializers and finalizers.
! </p>
! <p>Although the HP and GNU linkers are both supported for the
! &lsquo;<samp>hppa64-hp-hpux11*</samp>&rsquo; target, it is strongly recommended that the
  HP linker be used for link editing on this target.
! </p>
! <p>At this time, the GNU linker does not support the creation of long
! branch stubs.  As a result, it can&rsquo;t successfully link binaries
  containing branch offsets larger than 8 megabytes.  In addition,
  there are problems linking shared libraries, linking executables
! with <samp>-static</samp>, and with dwarf2 unwind and exception support.
! It also doesn&rsquo;t provide stubs for internal calls to global functions
! in shared libraries, so these calls can&rsquo;t be overloaded.
! </p>
! <p>The HP dynamic loader does not support GNU symbol versioning, so symbol
  versioning is not supported.  It may be necessary to disable symbol
! versioning with <samp>--disable-symvers</samp> when using GNU ld.
! </p>
! <p>POSIX threads are the default.  The optional DCE thread library is not
! supported, so <samp>--enable-threads=dce</samp> does not work.
! </p>
! <hr />
! <a name="x_002dx_002dlinux_002dgnu"></a><a name="g_t_002a_002d_002a_002dlinux_002dgnu"></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_002dx_002dlinux"></a><a name="i_003f86_002d_002a_002dlinux_002a"></a>
! <h3 class="heading">i?86-*-linux*</h3>
! <p>As of GCC 3.3, binutils 2.13.1 or later is required for this platform.
  See <a href="http://gcc.gnu.org/PR10877">bug 10877</a> for more information.
! </p>
! <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="http://www.bitwizard.nl/sig11/">www.bitwizard.nl</a>.
! </p>
! <hr />
! <a name="ix86_002dx_002dsolaris210"></a><a name="i_003f86_002d_002a_002dsolaris2_002e10"></a>
! <h3 class="heading">i?86-*-solaris2.10</h3>
  <p>Use this for Solaris 10 or later on x86 and x86-64 systems.  Starting
! with GCC 4.7, there is also a 64-bit &lsquo;<samp>amd64-*-solaris2.1[0-9]*</samp>&rsquo; or
! &lsquo;<samp>x86_64-*-solaris2.1[0-9]*</samp>&rsquo; configuration that corresponds to
! &lsquo;<samp>sparcv9-sun-solaris2*</samp>&rsquo;.
! </p>
! <p>It is recommended that you configure GCC to use the GNU assembler, in
! <samp>/usr/sfw/bin/gas</samp>.  The versions included in Solaris 10, from GNU
  binutils 2.15, and Solaris 11, from GNU binutils 2.19, work fine,
  although the current version, from GNU binutils
  2.22, is known to work, too.  Recent versions of the Sun assembler in
! <samp>/usr/ccs/bin/as</samp> work almost as well, though.
! </p>
! <p>For linking, the Sun linker, is preferred.  If you want to use the GNU
! linker instead, which is available in <samp>/usr/sfw/bin/gld</samp>, note that
  due to a packaging bug the version in Solaris 10, from GNU binutils
  2.15, cannot be used, while the version in Solaris 11, from GNU binutils
  2.19, works, as does the latest version, from GNU binutils 2.22.
! </p>
! <p>To use GNU <code>as</code>, configure with the options
! <samp>--with-gnu-as --with-as=/usr/sfw/bin/gas</samp>.  It may be necessary
! to configure with <samp>--without-gnu-ld --with-ld=/usr/ccs/bin/ld</samp> to
! guarantee use of Sun <code>ld</code>.
! </p>
! <hr />
! <a name="ia64_002dx_002dlinux"></a><a name="ia64_002d_002a_002dlinux"></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>
! <p>None of the following versions of GCC has an ABI that is compatible
  with any of the other versions in this list, with the exception that
  Red Hat 2.96 and Trillian 000171 are compatible with each other:
! 3.1, 3.0.2, 3.0.1, 3.0, Red Hat 2.96, and Trillian 000717.
! This primarily affects C++ programs and programs that create shared libraries.
! GCC 3.1 or later is recommended for compiling linux, the kernel.
  As of version 3.1 GCC is believed to be fully ABI compliant, and hence no
  more major ABI changes are expected.
! </p>
! <hr />
! <a name="ia64_002dx_002dhpux"></a><a name="ia64_002d_002a_002dhpux_002a"></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>
! <p>The GCC libunwind library has not been ported to HPUX.  This means that for
! GCC versions 3.2.3 and earlier, <samp>--enable-libunwind-exceptions</samp>
! is required to build GCC.  For GCC 3.3 and later, this is the default.
! For gcc 3.4.3 and later, <samp>--enable-libunwind-exceptions</samp> is
  removed and the system libunwind library will always be used.
! </p>
! <hr />
! <!-- rs6000-ibm-aix*, powerpc-ibm-aix* -->
! <a name="x_002dibm_002daix"></a><a name="g_t_002a_002dibm_002daix_002a"></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 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>
  
! <p>One can start with a pre-compiled version of GCC to build from
! sources.  One may delete GCC&rsquo;s &ldquo;fixed&rdquo; header files when starting
  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
  AIX 7.  The native AIX tools do interoperate with GCC.
! </p>
! <p>AIX 5.3 TL10, AIX 6.1 TL05 and AIX 7.1 TL00 introduced an AIX
  assembler change that sometimes produces corrupt assembly files
  causing AIX linker errors.  The bug breaks GCC bootstrap on AIX and
  can cause compilation failures with existing GCC installations.  An
*************** AIX iFix for AIX 5.3 is available (APAR
*** 675,1510 ****
  IZ98477 for AIX 5.3 TL11 and IZ98134 for AIX 5.3 TL12). AIX 5.3 TL11 SP8,
  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>Building <samp><span class="file">libstdc++.a</span></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>&lsquo;<samp><span class="samp">libstdc++</span></samp>&rsquo; in GCC 3.4 increments the major version number of the
! shared object and GCC installation places the <samp><span class="file">libstdc++.a</span></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><span class="samp">libstdc++</span></samp>&rsquo; shared object needs to be available
! to the AIX runtime loader.  The GCC 3.1 &lsquo;<samp><span class="samp">libstdc++.so.4</span></samp>&rsquo;, if
! present, and GCC 3.3 &lsquo;<samp><span class="samp">libstdc++.so.5</span></samp>&rsquo; shared objects can be
  installed for runtime dynamic loading using the following steps to set
! the &lsquo;<samp><span class="samp">F_LOADONLY</span></samp>&rsquo; flag in the shared object for <em>each</em>
! multilib <samp><span class="file">libstdc++.a</span></samp> installed:
  
!    <p>Extract the shared objects from the currently installed
! <samp><span class="file">libstdc++.a</span></samp> archive:
! <pre class="smallexample">     % ar -x libstdc++.a libstdc++.so.4 libstdc++.so.5
! </pre>
!    <p>Enable the &lsquo;<samp><span class="samp">F_LOADONLY</span></samp>&rsquo; flag so that the shared object will be
  available for runtime dynamic loading, but not linking:
! <pre class="smallexample">     % strip -e libstdc++.so.4 libstdc++.so.5
! </pre>
!    <p>Archive the runtime-only shared object in the GCC 3.4
! <samp><span class="file">libstdc++.a</span></samp> archive:
! <pre class="smallexample">     % ar -q libstdc++.a libstdc++.so.4 libstdc++.so.5
! </pre>
!    <p>Eventually, the
! <a href="./configure.html#WithAixSoname"><samp><span class="option">--with-aix-soname=svr4</span></samp></a>
  configure option may drop the need for this procedure for libraries that
  support it.
! 
!    <p>Linking executables and shared libraries may produce warnings of
  duplicate symbols.  The assembly files generated by GCC for AIX always
  have included multiple symbol definitions for certain global variable
  and function declarations in the original program.  The warnings should
  not prevent the linker from producing a correct library or runnable
  executable.
! 
!    <p>AIX 4.3 utilizes a &ldquo;large format&rdquo; archive to support both 32-bit and
  64-bit object modules.  The routines provided in AIX 4.3.0 and AIX 4.3.1
! 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><span class="option">-g</span></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>Some versions of the AIX binder (linker) can fail with a relocation
! overflow severe error when the <samp><span class="option">-bbigtoc</span></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 from IBM Customer Support and from its
  <a href="http://techsupport.services.ibm.com/">techsupport.services.ibm.com</a>
  website as PTF U455193.
! 
!    <p>The AIX 4.3.2.1 linker (bos.rte.bind_cmds Level 4.3.2.1) will dump core
  with a segmentation fault when invoked by any version of GCC.  A fix for
  APAR IX87327 is available from IBM Customer Support and from its
  <a href="http://techsupport.services.ibm.com/">techsupport.services.ibm.com</a>
  website as PTF U461879.  This fix is incorporated in AIX 4.3.3 and above.
! 
!    <p>The initial assembler shipped with AIX 4.3.0 generates incorrect object
  files.  A fix for APAR IX74254 (64BIT DISASSEMBLED OUTPUT FROM COMPILER FAILS
  TO ASSEMBLE/BIND) is available from IBM Customer Support and from its
  <a href="http://techsupport.services.ibm.com/">techsupport.services.ibm.com</a>
  website as PTF U453956.  This fix is incorporated in AIX 4.3.1 and above.
! 
!    <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><span class="samp">.</span></samp>&rsquo;  vs &lsquo;<samp><span class="samp">,</span></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 <samp><span class="env">LANG</span></samp>
! environment variable to &lsquo;<samp><span class="samp">C</span></samp>&rsquo; or &lsquo;<samp><span class="samp">En_US</span></samp>&rsquo;.
! 
!    <p>A default can be specified with the <samp><span class="option">-mcpu=</span><var>cpu_type</var></samp>
! switch and using the configure option <samp><span class="option">--with-cpu-</span><var>cpu_type</var></samp>.
! 
!    <p><hr /><a name="iq2000_002dx_002delf"></a>
! 
! <h3 class="heading"><a name="TOC24"></a>iq2000-*-elf</h3>
! 
  <p>Vitesse IQ2000 processors.  These are used in embedded
  applications.  There are no standard Unix configurations.
! 
!    <p><hr /><a name="lm32_002dx_002delf"></a>
! 
! <h3 class="heading"><a name="TOC25"></a>lm32-*-elf</h3>
! 
! <p>Lattice Mico32 processor. 
  This configuration is intended for embedded systems.
! 
!    <p><hr /><a name="lm32_002dx_002duclinux"></a>
! 
! <h3 class="heading"><a name="TOC26"></a>lm32-*-uclinux</h3>
! 
! <p>Lattice Mico32 processor. 
  This configuration is intended for embedded systems running uClinux.
! 
!    <p><hr /><a name="m32c_002dx_002delf"></a>
! 
! <h3 class="heading"><a name="TOC27"></a>m32c-*-elf</h3>
! 
! <p>Renesas M32C processor. 
  This configuration is intended for embedded systems.
! 
!    <p><hr /><a name="m32r_002dx_002delf"></a>
! 
! <h3 class="heading"><a name="TOC28"></a>m32r-*-elf</h3>
! 
! <p>Renesas M32R processor. 
  This configuration is intended for embedded systems.
! 
!    <p><hr /><a name="m68k_002dx_002dx"></a>
! 
! <h3 class="heading"><a name="TOC29"></a>m68k-*-*</h3>
! 
  <p>By default,
! &lsquo;<samp><span class="samp">m68k-*-elf*</span></samp>&rsquo;, &lsquo;<samp><span class="samp">m68k-*-rtems</span></samp>&rsquo;,  &lsquo;<samp><span class="samp">m68k-*-uclinux</span></samp>&rsquo; and
! &lsquo;<samp><span class="samp">m68k-*-linux</span></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><span class="option">--with-arch=m68k</span></samp> to <samp><span class="command">configure</span></samp>.  Alternatively, you
! can omit the M680x0 libraries by passing <samp><span class="option">--with-arch=cf</span></samp> to
! <samp><span class="command">configure</span></samp>.  These targets default to 5206 or 5475 code as
  appropriate for the target system when
! configured with <samp><span class="option">--with-arch=cf</span></samp> and 68020 code otherwise.
! 
!    <p>The &lsquo;<samp><span class="samp">m68k-*-netbsd</span></samp>&rsquo; and
! &lsquo;<samp><span class="samp">m68k-*-openbsd</span></samp>&rsquo; targets also support the <samp><span class="option">--with-arch</span></samp>
  option.  They will generate ColdFire CFV4e code when configured with
! <samp><span class="option">--with-arch=cf</span></samp> and 68020 code otherwise.
! 
!    <p>You can override the default processors listed above by configuring
! with <samp><span class="option">--with-cpu=</span><var>target</var></samp>.  This <var>target</var> can either
! be a <samp><span class="option">-mcpu</span></samp> argument or one of the following values:
! &lsquo;<samp><span class="samp">m68000</span></samp>&rsquo;, &lsquo;<samp><span class="samp">m68010</span></samp>&rsquo;, &lsquo;<samp><span class="samp">m68020</span></samp>&rsquo;, &lsquo;<samp><span class="samp">m68030</span></samp>&rsquo;,
! &lsquo;<samp><span class="samp">m68040</span></samp>&rsquo;, &lsquo;<samp><span class="samp">m68060</span></samp>&rsquo;, &lsquo;<samp><span class="samp">m68020-40</span></samp>&rsquo; and &lsquo;<samp><span class="samp">m68020-60</span></samp>&rsquo;.
! 
!    <p>GCC requires at least binutils version 2.17 on these targets.
! 
!    <p><hr /><a name="m68k_002dx_002duclinux"></a>
! 
! <h3 class="heading"><a name="TOC30"></a>m68k-*-uclinux</h3>
! 
  <p>GCC 4.3 changed the uClinux configuration so that it uses the
! &lsquo;<samp><span class="samp">m68k-linux-gnu</span></samp>&rsquo; ABI rather than the &lsquo;<samp><span class="samp">m68k-elf</span></samp>&rsquo; ABI. 
  It also added improved support for C++ and flat shared libraries,
  both of which were ABI changes.
! 
!    <p><hr /><a name="mep_002dx_002delf"></a>
! 
! <h3 class="heading"><a name="TOC31"></a>mep-*-elf</h3>
! 
! <p>Toshiba Media embedded Processor. 
  This configuration is intended for embedded systems.
! 
!    <p><hr /><a name="microblaze_002dx_002delf"></a>
! 
! <h3 class="heading"><a name="TOC32"></a>microblaze-*-elf</h3>
! 
! <p>Xilinx MicroBlaze processor. 
  This configuration is intended for embedded systems.
! 
!    <p><hr /><a name="mips_002dx_002dx"></a>
! 
! <h3 class="heading"><a name="TOC33"></a>mips-*-*</h3>
! 
  <p>If on a MIPS system you get an error message saying &ldquo;does not have gp
! sections for all it's [sic] sectons [sic]&rdquo;, don't worry about it.  This
  happens whenever you use GAS with the MIPS linker, but there is not
  really anything wrong, and it is okay to use the output file.  You can
  stop such warnings by installing the GNU linker.
! 
!    <p>It would be nice to extend GAS to produce the gp tables, but they are
  optional, and there should not be a warning about their absence.
! 
!    <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><span class="samp">mips*-*-*</span></samp>&rsquo; use the generic implementation instead.  You can also
! configure for &lsquo;<samp><span class="samp">mipsel-elf</span></samp>&rsquo; as a workaround.  The
! &lsquo;<samp><span class="samp">mips*-*-linux*</span></samp>&rsquo; target continues to use the MIPS II routines.  More
  work on this is expected in future releases.
  
! <!-- If you make -with-llsc the default for another target, please also -->
! <!-- update the description of the -with-llsc option. -->
!    <p>The built-in <code>__sync_*</code> functions are available on MIPS II and
! later systems and others that support the &lsquo;<samp><span class="samp">ll</span></samp>&rsquo;, &lsquo;<samp><span class="samp">sc</span></samp>&rsquo; and
! &lsquo;<samp><span class="samp">sync</span></samp>&rsquo; instructions.  This can be overridden by passing
! <samp><span class="option">--with-llsc</span></samp> or <samp><span class="option">--without-llsc</span></samp> when configuring GCC. 
  Since the Linux kernel emulates these instructions if they are
! missing, the default for &lsquo;<samp><span class="samp">mips*-*-linux*</span></samp>&rsquo; targets is
! <samp><span class="option">--with-llsc</span></samp>.  The <samp><span class="option">--with-llsc</span></samp> and
! <samp><span class="option">--without-llsc</span></samp> configure options may be overridden at compile
! time by passing the <samp><span class="option">-mllsc</span></samp> or <samp><span class="option">-mno-llsc</span></samp> options to
  the compiler.
! 
!    <p>MIPS systems check for division by zero (unless
! <samp><span class="option">-mno-check-zero-division</span></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><span class="option">--with-divide=breaks</span></samp>
! <samp><span class="command">configure</span></samp> option when configuring GCC.  The default is to
  use traps on systems that support them.
! 
!    <p>The assembler from GNU binutils 2.17 and earlier has a bug in the way
  it sorts relocations for REL targets (o32, o64, EABI).  This can cause
  bad code to be generated for simple C++ programs.  Also the linker
  from GNU binutils versions prior to 2.17 has a bug which causes the
! runtime linker stubs in very large programs, like <samp><span class="file">libgcj.so</span></samp>, to
  be incorrectly generated.  GNU Binutils 2.18 and later (and snapshots
  made after Nov. 9, 2006) should be free from both of these problems.
! 
!    <p><hr /><a name="mips_002dsgi_002dirix5"></a>
! 
! <h3 class="heading"><a name="TOC34"></a>mips-sgi-irix5</h3>
! 
  <p>Support for IRIX 5 has been removed in GCC 4.6.
! 
!    <p><hr /><a name="mips_002dsgi_002dirix6"></a>
! 
! <h3 class="heading"><a name="TOC35"></a>mips-sgi-irix6</h3>
! 
  <p>Support for IRIX 6.5 has been removed in GCC 4.8.  Support for IRIX 6
  releases before 6.5 has been removed in GCC 4.6, as well as support for
  the O32 ABI.
! 
!    <p><hr /><a name="moxie_002dx_002delf"></a>
! 
! <h3 class="heading"><a name="TOC36"></a>moxie-*-elf</h3>
! 
  <p>The moxie processor.
! 
!    <p><hr /><a name="msp430_002dx_002delf"></a>
! 
! <h3 class="heading"><a name="TOC37"></a>msp430-*-elf</h3>
! 
! <p>TI MSP430 processor. 
  This configuration is intended for embedded systems.
! 
!    <p><hr /><a name="nds32le_002dx_002delf"></a>
! 
! <h3 class="heading"><a name="TOC38"></a>nds32le-*-elf</h3>
! 
  <p>Andes NDS32 target in little endian mode.
! 
!    <p><hr /><a name="nds32be_002dx_002delf"></a>
! 
! <h3 class="heading"><a name="TOC39"></a>nds32be-*-elf</h3>
! 
  <p>Andes NDS32 target in big endian mode.
! 
!    <p><hr /><a name="nvptx_002dx_002dnone"></a>
! 
! <h3 class="heading"><a name="TOC40"></a>nvptx-*-none</h3>
! 
  <p>Nvidia PTX target.
! 
!    <p>Instead of GNU binutils, you will need to install
! <a href="https://github.com/MentorEmbedded/nvptx-tools/">nvptx-tools</a>. 
  Tell GCC where to find it:
! <samp><span class="option">--with-build-time-tools=[install-nvptx-tools]/nvptx-none/bin</span></samp>.
! 
!    <p>A nvptx port of newlib is available at
! <a href="https://github.com/MentorEmbedded/nvptx-newlib/">nvptx-newlib</a>. 
  It can be automatically built together with GCC.  For this, add a
! symbolic link to nvptx-newlib's <samp><span class="file">newlib</span></samp> directory to the
  directory containing the GCC sources.
! 
!    <p>Use the <samp><span class="option">--disable-sjlj-exceptions</span></samp> and
! <samp><span class="option">--enable-newlib-io-long-long</span></samp> options when configuring.
! 
!    <p><hr /><a name="powerpc_002dx_002dx"></a>
! 
! <h3 class="heading"><a name="TOC41"></a>powerpc-*-*</h3>
! 
! <p>You can specify a default version for the <samp><span class="option">-mcpu=</span><var>cpu_type</var></samp>
! switch by using the configure option <samp><span class="option">--with-cpu-</span><var>cpu_type</var></samp>.
! 
!    <p>You will need
  <a href="ftp://ftp.kernel.org/pub/linux/devel/binutils">binutils 2.15</a>
  or newer for a working GCC.
! 
!    <p><hr /><a name="powerpc_002dx_002ddarwin"></a>
! 
! <h3 class="heading"><a name="TOC42"></a>powerpc-*-darwin*</h3>
! 
  <p>PowerPC running Darwin (Mac OS X kernel).
! 
!    <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="http://opensource.apple.com/">http://opensource.apple.com/</a>.
! 
!    <p>This version of GCC requires at least cctools-590.36.  The
  cctools-590.36 package referenced from
  <a href="http://gcc.gnu.org/ml/gcc/2006-03/msg00507.html">http://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_002dx_002delf"></a>
! 
! <h3 class="heading"><a name="TOC43"></a>powerpc-*-elf</h3>
! 
  <p>PowerPC system in big endian mode, running System V.4.
! 
!    <p><hr /><a name="powerpc_002dx_002dlinux_002dgnu"></a>
! 
! <h3 class="heading"><a name="TOC44"></a>powerpc*-*-linux-gnu*</h3>
! 
  <p>PowerPC system in big endian mode running Linux.
! 
!    <p><hr /><a name="powerpc_002dx_002dnetbsd"></a>
! 
! <h3 class="heading"><a name="TOC45"></a>powerpc-*-netbsd*</h3>
! 
  <p>PowerPC system in big endian mode running NetBSD.
! 
!    <p><hr /><a name="powerpc_002dx_002deabisim"></a>
! 
! <h3 class="heading"><a name="TOC46"></a>powerpc-*-eabisim</h3>
! 
  <p>Embedded PowerPC system in big endian mode for use in running under the
  PSIM simulator.
! 
!    <p><hr /><a name="powerpc_002dx_002deabi"></a>
! 
! <h3 class="heading"><a name="TOC47"></a>powerpc-*-eabi</h3>
! 
  <p>Embedded PowerPC system in big endian mode.
! 
!    <p><hr /><a name="powerpcle_002dx_002delf"></a>
! 
! <h3 class="heading"><a name="TOC48"></a>powerpcle-*-elf</h3>
! 
  <p>PowerPC system in little endian mode, running System V.4.
! 
!    <p><hr /><a name="powerpcle_002dx_002deabisim"></a>
! 
! <h3 class="heading"><a name="TOC49"></a>powerpcle-*-eabisim</h3>
! 
  <p>Embedded PowerPC system in little endian mode for use in running under
  the PSIM simulator.
! 
!    <p><hr /><a name="powerpcle_002dx_002deabi"></a>
! 
! <h3 class="heading"><a name="TOC50"></a>powerpcle-*-eabi</h3>
! 
  <p>Embedded PowerPC system in little endian mode.
! 
!    <p><hr /><a name="rl78_002dx_002delf"></a>
! 
! <h3 class="heading"><a name="TOC51"></a>rl78-*-elf</h3>
! 
! <p>The Renesas RL78 processor. 
  This configuration is intended for embedded systems.
! 
!    <p><hr /><a name="rx_002dx_002delf"></a>
! 
! <h3 class="heading"><a name="TOC52"></a>rx-*-elf</h3>
! 
  <p>The Renesas RX processor.  See
  <a href="http://eu.renesas.com/fmwk.jsp?cnt=rx600_series_landing.jsp&amp;fp=/products/mpumcu/rx_family/rx600_series">http://eu.renesas.com/fmwk.jsp?cnt=rx600_series_landing.jsp&amp;fp=/products/mpumcu/rx_family/rx600_series</a>
  for more information about this processor.
! 
!    <p><hr /><a name="s390_002dx_002dlinux"></a>
! 
! <h3 class="heading"><a name="TOC53"></a>s390-*-linux*</h3>
! 
  <p>S/390 system running GNU/Linux for S/390.
! 
!    <p><hr /><a name="s390x_002dx_002dlinux"></a>
! 
! <h3 class="heading"><a name="TOC54"></a>s390x-*-linux*</h3>
! 
  <p>zSeries system (64-bit) running GNU/Linux for zSeries.
! 
!    <p><hr /><a name="s390x_002dibm_002dtpf"></a>
! 
! <h3 class="heading"><a name="TOC55"></a>s390x-ibm-tpf*</h3>
! 
  <p>zSeries system (64-bit) running TPF.  This platform is
  supported as cross-compilation target only.
! 
!    <p><hr /><!-- Please use Solaris 2 to refer to all release of Solaris, starting -->
! <!-- with 2.0 until 2.6, 7, 8, etc.  Solaris 1 was a marketing name for -->
! <!-- SunOS 4 releases which we don't use to avoid confusion.  Solaris -->
! <!-- alone is too unspecific and must be avoided. -->
! <a name="x_002dx_002dsolaris2"></a>
! 
! <h3 class="heading"><a name="TOC56"></a>*-*-solaris2*</h3>
! 
! <p>Support for Solaris 9 has been removed in GCC 4.10.  Support for Solaris
  8 has been removed in GCC 4.8.  Support for Solaris 7 has been removed
  in GCC 4.6.
! 
!    <p>Sun does not ship a C compiler with Solaris 2 before Solaris 10, though
  you can download the Sun Studio compilers for free.  In Solaris 10 and
! 11, GCC 3.4.3 is available as <samp><span class="command">/usr/sfw/bin/gcc</span></samp>.  Solaris 11
! also provides GCC 4.5.2 as <samp><span class="command">/usr/gcc/4.5/bin/gcc</span></samp>.  Alternatively,
  you can install a pre-built GCC to bootstrap and install GCC.  See the
  <a href="binaries.html">binaries page</a> for details.
! 
!    <p>The Solaris 2 <samp><span class="command">/bin/sh</span></samp> will often fail to configure
! &lsquo;<samp><span class="samp">libstdc++-v3</span></samp>&rsquo;, &lsquo;<samp><span class="samp">boehm-gc</span></samp>&rsquo; or &lsquo;<samp><span class="samp">libjava</span></samp>&rsquo;.  We therefore
  recommend using the following initial sequence of commands
  
! <pre class="smallexample">     % CONFIG_SHELL=/bin/ksh
!      % export CONFIG_SHELL
! </pre>
!    <p class="noindent">and proceed as described in <a href="configure.html">the configure instructions</a>. 
  In addition we strongly recommend specifying an absolute path to invoke
! <samp><var>srcdir</var><span class="command">/configure</span></samp>.
! 
!    <p>Solaris 2 comes with a number of optional OS packages.  Some of these
  are needed to use GCC fully, namely <code>SUNWarc</code>,
  <code>SUNWbtool</code>, <code>SUNWesu</code>, <code>SUNWhea</code>, <code>SUNWlibm</code>,
  <code>SUNWsprot</code>, and <code>SUNWtoo</code>.  If you did not install all
  optional packages when installing Solaris 2, you will need to verify that
  the packages that GCC needs are installed.
! 
!    <p>To check whether an optional package is installed, use
! the <samp><span class="command">pkginfo</span></samp> command.  To add an optional package, use the
! <samp><span class="command">pkgadd</span></samp> command.  For further details, see the Solaris 2
  documentation.
! 
!    <p>Trying to use the linker and other tools in
! <samp><span class="file">/usr/ucb</span></samp> to install GCC has been observed to cause trouble. 
  For example, the linker may hang indefinitely.  The fix is to remove
! <samp><span class="file">/usr/ucb</span></samp> from your <samp><span class="env">PATH</span></samp>.
! 
!    <p>The build process works more smoothly with the legacy Sun tools so, if you
! have <samp><span class="file">/usr/xpg4/bin</span></samp> in your <samp><span class="env">PATH</span></samp>, we recommend that you place
! <samp><span class="file">/usr/bin</span></samp> before <samp><span class="file">/usr/xpg4/bin</span></samp> for the duration of the build.
! 
!    <p>We recommend the use of the Sun assembler or the GNU assembler, in
! conjunction with the Sun linker.  The GNU <samp><span class="command">as</span></samp>
  versions included in Solaris 10, from GNU binutils 2.15, and Solaris 11,
  from GNU binutils 2.19, are known to work.  They can be found in
! <samp><span class="file">/usr/sfw/bin/gas</span></samp>.  Current versions of GNU binutils (2.22)
  are known to work as well.  Note that your mileage may vary
  if you use a combination of the GNU tools and the Sun tools: while the
! combination GNU <samp><span class="command">as</span></samp> + Sun <samp><span class="command">ld</span></samp> should reasonably work,
! the reverse combination Sun <samp><span class="command">as</span></samp> + GNU <samp><span class="command">ld</span></samp> may fail to
! build or cause memory corruption at runtime in some cases for C++ programs. 
! <!-- FIXME: still? -->
! GNU <samp><span class="command">ld</span></samp> usually works as well, although the version included in
  Solaris 10 cannot be used due to several bugs.  Again, the current
  version (2.22) is known to work, but generally lacks platform specific
! features, so better stay with Sun <samp><span class="command">ld</span></samp>.  To use the LTO linker
! plugin (<samp><span class="option">-fuse-linker-plugin</span></samp>) with GNU <samp><span class="command">ld</span></samp>, GNU
! binutils <em>must</em> be configured with <samp><span class="option">--enable-largefile</span></samp>.
! 
!    <p>To enable symbol versioning in &lsquo;<samp><span class="samp">libstdc++</span></samp>&rsquo; with Sun <samp><span class="command">ld</span></samp>,
! you need to have any version of GNU <samp><span class="command">c++filt</span></samp>, which is part of
! GNU binutils.  &lsquo;<samp><span class="samp">libstdc++</span></samp>&rsquo; symbol versioning will be disabled if no
! appropriate version is found.  Sun <samp><span class="command">c++filt</span></samp> from the Sun Studio
  compilers does <em>not</em> work.
! 
!    <p>Sun bug 4296832 turns up when compiling X11 headers with GCC 2.95 or
! newer: <samp><span class="command">g++</span></samp> will complain that types are missing.  These headers
  assume that omitting the type means <code>int</code>; this assumption worked for
  C90 but is wrong for C++, and is now wrong for C99 also.
! 
!    <p>Sun bug 4927647 sometimes causes random spurious testsuite failures
! related to missing diagnostic output.  This bug doesn't affect GCC
! itself, rather it is a kernel bug triggered by the <samp><span class="command">expect</span></samp>
  program which is used only by the GCC testsuite driver.  When the bug
! causes the <samp><span class="command">expect</span></samp> program to miss anticipated output, extra
  testsuite failures appear.
! 
!    <p><hr /><a name="sparc_002dx_002dx"></a>
! 
! <h3 class="heading"><a name="TOC57"></a>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.
! 
!    <p>Newer versions of the GNU Multiple Precision Library (GMP), the MPFR
  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_002dsun_002dsolaris2"></a>
! 
! <h3 class="heading"><a name="TOC58"></a>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 Sun's native tools;
  this difference is quite significant for binaries containing debugging
  information.
! 
!    <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><span class="option">-m64</span></samp> option enables 64-bit code generation. 
  However, if all you want is code tuned for the UltraSPARC CPU, you
! should try the <samp><span class="option">-mtune=ultrasparc</span></samp> option instead, which produces
  code that, unlike full 64-bit code, can still run on non-UltraSPARC
  machines.
! 
!    <p>When configuring on a Solaris 7 or later system that is running a kernel
  that supports only 32-bit binaries, one must configure with
! <samp><span class="option">--disable-multilib</span></samp>, since we will not be able to build the
  64-bit target libraries.
! 
!    <p>GCC 3.3 and GCC 3.4 trigger code generation bugs in earlier versions of
  the GNU compiler (especially GCC 3.0.x versions), which lead to the
  miscompilation of the stage1 compiler and the subsequent failure of the
  bootstrap process.  A workaround is to use GCC 3.2.3 as an intermediary
  stage, i.e. to bootstrap that compiler with the base compiler and then
  use it to bootstrap the final compiler.
! 
!    <p>GCC 3.4 triggers a code generation bug in versions 5.4 (Sun ONE Studio 7)
  and 5.5 (Sun ONE Studio 8) of the Sun compiler, which causes a bootstrap
  failure in form of a miscompilation of the stage1 compiler by the Sun
  compiler.  This is Sun bug 4974440.  This is fixed with patch 112760-07.
! 
!    <p>GCC 3.4 changed the default debugging format from Stabs to DWARF-2 for
  32-bit code on Solaris 7 and later.  If you use the Sun assembler, this
  change apparently runs afoul of Sun bug 4910101 (which is referenced as
! an x86-only problem by Sun, probably because they do not use DWARF-2). 
  A symptom of the problem is that you cannot compile C++ programs like
! <samp><span class="command">groff</span></samp> 1.19.1 without getting messages similar to the following:
! 
! <pre class="smallexample">     ld: warning: relocation error: R_SPARC_UA32: ...
!        external symbolic relocation against non-allocatable section
!        .debug_info cannot be processed at runtime: relocation ignored.
! </pre>
!    <p class="noindent">To work around this problem, compile with <samp><span class="option">-gstabs+</span></samp> instead of
! plain <samp><span class="option">-g</span></samp>.
  
!    <p>When configuring the GNU Multiple Precision Library (GMP), the MPFR
  library or the MPC library on a Solaris 7 or later system, the canonical
! target triplet must be specified as the <samp><span class="command">build</span></samp> parameter on the
! configure line.  This target triplet can be obtained by invoking <samp><span class="command">./config.guess</span></samp> in the toplevel source directory of GCC (and
  not that of GMP or MPFR or MPC).  For example on a Solaris 9 system:
  
! <pre class="smallexample">     % ./configure --build=sparc-sun-solaris2.9 --prefix=xxx
! </pre>
!    <p><hr /><a name="sparc_002dsun_002dsolaris210"></a>
! 
! <h3 class="heading"><a name="TOC59"></a>sparc-sun-solaris2.10</h3>
! 
  <p>There is a bug in older versions of the Sun assembler which breaks
  thread-local storage (TLS).  A typical error message is
  
! <pre class="smallexample">     ld: fatal: relocation error: R_SPARC_TLS_LE_HIX22: file /var/tmp//ccamPA1v.o:
!        symbol &lt;unknown&gt;: bad symbol type SECT: symbol type must be TLS
! </pre>
!    <p class="noindent">This bug is fixed in Sun patch 118683-03 or later.
! 
!    <p><hr /><a name="sparc_002dx_002dlinux"></a>
! 
! <h3 class="heading"><a name="TOC60"></a>sparc-*-linux*</h3>
  
  <p>GCC versions 3.0 and higher require binutils 2.11.2 and glibc 2.2.4
  or newer on this platform.  All earlier binutils and glibc
  releases mishandled unaligned relocations on <code>sparc-*-*</code> targets.
  
!    <p><hr /><a name="sparc64_002dx_002dsolaris2"></a>
! 
! <h3 class="heading"><a name="TOC61"></a>sparc64-*-solaris2*</h3>
! 
  <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 <samp><span class="command">build</span></samp> parameter on the configure line.  For example
  on a Solaris 9 system:
  
! <pre class="smallexample">     % ./configure --build=sparc64-sun-solaris2.9 --prefix=xxx
! </pre>
!    <p>The following compiler flags must be specified in the configure
  step in order to bootstrap this target with the Sun compiler:
  
! <pre class="smallexample">     % CC="cc -xarch=v9 -xildoff" <var>srcdir</var>/configure [<var>options</var>] [<var>target</var>]
! </pre>
!    <p class="noindent"><samp><span class="option">-xarch=v9</span></samp> specifies the SPARC-V9 architecture to the Sun toolchain
! and <samp><span class="option">-xildoff</span></samp> turns off the incremental linker.
! 
!    <p><hr /><a name="sparcv9_002dx_002dsolaris2"></a>
! 
! <h3 class="heading"><a name="TOC62"></a>sparcv9-*-solaris2*</h3>
! 
! <p>This is a synonym for &lsquo;<samp><span class="samp">sparc64-*-solaris2*</span></samp>&rsquo;.
! 
!    <p><hr /><a name="c6x_002dx_002dx"></a>
! 
! <h3 class="heading"><a name="TOC63"></a>c6x-*-*</h3>
! 
  <p>The C6X family of processors. This port requires binutils-2.22 or newer.
! 
!    <p><hr /><a name="tilegx_002d_002a_002dlinux"></a>
! 
! <h3 class="heading"><a name="TOC64"></a>tilegx-*-linux*</h3>
! 
  <p>The TILE-Gx processor in little endian mode, running GNU/Linux.  This
  port requires binutils-2.22 or newer.
! 
!    <p><hr /><a name="tilegxbe_002d_002a_002dlinux"></a>
! 
! <h3 class="heading"><a name="TOC65"></a>tilegxbe-*-linux*</h3>
! 
  <p>The TILE-Gx processor in big endian mode, running GNU/Linux.  This
  port requires binutils-2.23 or newer.
! 
!    <p><hr /><a name="tilepro_002d_002a_002dlinux"></a>
! 
! <h3 class="heading"><a name="TOC66"></a>tilepro-*-linux*</h3>
! 
  <p>The TILEPro processor running GNU/Linux.  This port requires
  binutils-2.22 or newer.
! 
!    <p><hr /><a name="visium_002dx_002delf"></a>
! 
! <h3 class="heading"><a name="TOC67"></a>visium-*-elf</h3>
! 
! <p>CDS VISIUMcore processor. 
  This configuration is intended for embedded systems.
! 
!    <p><hr /><a name="x_002dx_002dvxworks"></a>
! 
! <h3 class="heading"><a name="TOC68"></a>*-*-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
  a matter of writing an appropriate &ldquo;configlette&rdquo; (see below).  We are
  not interested in supporting older, a.out or COFF-based, versions of
  VxWorks in GCC 3.
! 
!    <p>VxWorks comes with an older version of GCC installed in
! <samp><var>$WIND_BASE</var><span class="file">/host</span></samp>; we recommend you do not overwrite it. 
! Choose an installation <var>prefix</var> entirely outside <var>$WIND_BASE</var>. 
! Before running <samp><span class="command">configure</span></samp>, create the directories <samp><var>prefix</var></samp>
! and <samp><var>prefix</var><span class="file">/bin</span></samp>.  Link or copy the appropriate assembler,
! linker, etc. into <samp><var>prefix</var><span class="file">/bin</span></samp>, and set your <var>PATH</var> to
! include that directory while running both <samp><span class="command">configure</span></samp> and
! <samp><span class="command">make</span></samp>.
! 
!    <p>You must give <samp><span class="command">configure</span></samp> the
! <samp><span class="option">--with-headers=</span><var>$WIND_BASE</var><span class="option">/target/h</span></samp> switch so that it can
  find the VxWorks system headers.  Since VxWorks is a cross compilation
! target only, you must also specify <samp><span class="option">--target=</span><var>target</var></samp>. 
! <samp><span class="command">configure</span></samp> will attempt to create the directory
! <samp><var>prefix</var><span class="file">/</span><var>target</var><span class="file">/sys-include</span></samp> and copy files into it;
! make sure the user running <samp><span class="command">configure</span></samp> has sufficient privilege
  to do so.
! 
!    <p>GCC's exception handling runtime requires a special &ldquo;configlette&rdquo;
! module, <samp><span class="file">contrib/gthr_supp_vxw_5x.c</span></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_002d64_002dx_002dx"></a>
! 
! <h3 class="heading"><a name="TOC69"></a>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><span class="option">-m32</span></samp> switch).
! 
!    <p><hr /><a name="x86_002d64_002dx_002dsolaris210"></a>
! 
! <h3 class="heading"><a name="TOC70"></a>x86_64-*-solaris2.1[0-9]*</h3>
! 
  <p>GCC also supports the x86-64 architecture implemented by the AMD64
! processor (&lsquo;<samp><span class="samp">amd64-*-*</span></samp>&rsquo; is an alias for &lsquo;<samp><span class="samp">x86_64-*-*</span></samp>&rsquo;) on
  Solaris 10 or later.  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><span class="option">-m64</span></samp> switch.  Since
  GCC 4.7, there is also configuration that defaults to 64-bit code, but
! can generate 32-bit code with <samp><span class="option">-m32</span></samp>.  To configure and build
! this way, you have to provide all support libraries like <samp><span class="file">libgmp</span></samp>
! as 64-bit code, configure with <samp><span class="option">--target=x86_64-pc-solaris2.1x</span></samp>
! and &lsquo;<samp><span class="samp">CC=gcc -m64</span></samp>&rsquo;.
! 
!    <p><hr /><a name="xtensa_002dx_002delf"></a>
! 
! <h3 class="heading"><a name="TOC71"></a>xtensa*-*-elf</h3>
! 
  <p>This target is intended for embedded Xtensa systems using the
! &lsquo;<samp><span class="samp">newlib</span></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>The Xtensa configuration information must be specified prior to
! building GCC.  The <samp><span class="file">include/xtensa-config.h</span></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_002dx_002dlinux"></a>
! 
! <h3 class="heading"><a name="TOC72"></a>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><span class="option">-fpic</span></samp> or <samp><span class="option">-fPIC</span></samp> options are used.  In other
  respects, this target is the same as the
! <a href="#xtensa*-*-elf">&lsquo;<samp><span class="samp">xtensa*-*-elf</span></samp>&rsquo;</a> target.
! 
!    <p><hr /><a name="windows"></a>
! 
! <h3 class="heading"><a name="TOC73"></a>Microsoft Windows</h3>
! 
! <h4 class="subheading"><a name="TOC74"></a>Intel 16-bit versions</h4>
  
  <p>The 16-bit versions of Microsoft Windows, such as Windows 3.1, are not
  supported.
! 
!    <p>However, the 32-bit port has limited support for Microsoft
  Windows 3.11 in the Win32s environment, as a target only.  See below.
! 
! <h4 class="subheading"><a name="TOC75"></a>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.
  
!      <ul>
! <li>Cygwin <a href="#x-x-cygwin">*-*-cygwin</a>: Cygwin provides a user-space
! Linux API emulation layer in the Win32 subsystem. 
! <li>Interix <a href="#x-x-interix">*-*-interix</a>: The Interix subsystem
! provides native support for POSIX. 
! <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>MKS i386-pc-mks: NuTCracker from MKS.  See
! <a href="http://www.mkssoftware.com/">http://www.mkssoftware.com/</a> for more information. 
! </ul>
! 
! <h4 class="subheading"><a name="TOC76"></a>Intel 64-bit versions</h4>
! 
  <p>GCC contains support for x86-64 using the mingw-w64
! runtime library, available from <a href="http://mingw-w64.sourceforge.net/">http://mingw-w64.sourceforge.net/</a>. 
  This library should be used with the target triple x86_64-pc-mingw32.
! 
!    <p>Presently Windows for Itanium is not supported.
! 
! <h4 class="subheading"><a name="TOC77"></a>Windows CE</h4>
! 
  <p>Windows CE is supported as a target only on Hitachi
  SuperH (sh-wince-pe), and MIPS (mips-wince-pe).
! 
! <h4 class="subheading"><a name="TOC78"></a>Other Windows Platforms</h4>
! 
  <p>GCC no longer supports Windows NT on the Alpha or PowerPC.
! 
!    <p>GCC no longer supports the Windows POSIX subsystem.  However, it does
  support the Interix subsystem.  See above.
! 
!    <p>Old target names including *-*-winnt and *-*-windowsnt are no longer used.
! 
!    <p>PW32 (i386-pc-pw32) support was never completed, and the project seems to
  be inactive.  See <a href="http://pw32.sourceforge.net/">http://pw32.sourceforge.net/</a> for more information.
! 
!    <p>UWIN support has been removed due to a lack of maintenance.
! 
!    <p><hr /><a name="x_002dx_002dcygwin"></a>
! 
! <h3 class="heading"><a name="TOC79"></a>*-*-cygwin</h3>
! 
  <p>Ports of GCC are included with the
  <a href="http://www.cygwin.com/">Cygwin environment</a>.
! 
!    <p>GCC will build under Cygwin without modification; it does not build
! with Microsoft's C++ compiler and there are no plans to make it do so.
! 
!    <p>The Cygwin native compiler can be configured to target any 32-bit x86
  cpu architecture desired; the default is i686-pc-cygwin.  It should be
  used with as up-to-date a version of binutils as possible; use either
  the latest official GNU binutils release in the Cygwin distribution,
  or version 2.20 or above if building your own.
! 
!    <p><hr /><a name="x_002dx_002dinterix"></a>
! 
! <h3 class="heading"><a name="TOC80"></a>*-*-interix</h3>
! 
  <p>The Interix target is used by OpenNT, Interix, Services For UNIX (SFU),
  and Subsystem for UNIX-based Applications (SUA).  Applications compiled
  with this target run in the Interix subsystem, which is separate from
  the Win32 subsystem.  This target was last known to work in GCC 3.3.
! 
!    <p><hr /><a name="x_002dx_002dmingw32"></a>
! 
! <h3 class="heading"><a name="TOC81"></a>*-*-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>
! 
! <h3 class="heading"><a name="TOC82"></a>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
  several years and may suffer from bitrot.
! 
!    <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
! <samp><span class="command">configure</span></samp> will fail unless the <samp><span class="option">--enable-obsolete</span></samp>
  option is given.  Unless a maintainer steps forward, support for these
  systems will be removed from the next release of GCC.
! 
!    <p>Support for old systems as hosts for GCC can cause problems if the
  workarounds for compiler, library and operating system bugs affect the
  cleanliness or maintainability of the rest of GCC.  In some cases, to
  bring GCC up on such a system, if still possible with current GCC, may
  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><span class="file">old-releases</span></samp> directory on the <a href="../mirrors.html">GCC mirror sites</a>.  Header bugs may generally be avoided using
! <samp><span class="command">fixincludes</span></samp>, but bugs or deficiencies in libraries and the
  operating system may still cause problems.
! 
!    <p>Support for older systems as targets for cross-compilation is less
  problematic than support for them as hosts for GCC; if an enthusiast
  wishes to make such a target work again (including resurrecting any of
  the targets that never worked with GCC 2, starting from the last
--- 715,1515 ----
  IZ98477 for AIX 5.3 TL11 and IZ98134 for AIX 5.3 TL12). AIX 5.3 TL11 SP8,
  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>
! <p>Linking executables and shared libraries may produce warnings of
  duplicate symbols.  The assembly files generated by GCC for AIX always
  have included multiple symbol definitions for certain global variable
  and function declarations in the original program.  The warnings should
  not prevent the linker from producing a correct library or runnable
  executable.
! </p>
! <p>AIX 4.3 utilizes a &ldquo;large format&rdquo; archive to support both 32-bit and
  64-bit object modules.  The routines provided in AIX 4.3.0 and AIX 4.3.1
! 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 from IBM Customer Support and from its
  <a href="http://techsupport.services.ibm.com/">techsupport.services.ibm.com</a>
  website as PTF U455193.
! </p>
! <p>The AIX 4.3.2.1 linker (bos.rte.bind_cmds Level 4.3.2.1) will dump core
  with a segmentation fault when invoked by any version of GCC.  A fix for
  APAR IX87327 is available from IBM Customer Support and from its
  <a href="http://techsupport.services.ibm.com/">techsupport.services.ibm.com</a>
  website as PTF U461879.  This fix is incorporated in AIX 4.3.3 and above.
! </p>
! <p>The initial assembler shipped with AIX 4.3.0 generates incorrect object
  files.  A fix for APAR IX74254 (64BIT DISASSEMBLED OUTPUT FROM COMPILER FAILS
  TO ASSEMBLE/BIND) is available from IBM Customer Support and from its
  <a href="http://techsupport.services.ibm.com/">techsupport.services.ibm.com</a>
  website as PTF U453956.  This fix is incorporated in AIX 4.3.1 and above.
! </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_002dx_002delf"></a><a name="iq2000_002d_002a_002delf"></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_002dx_002delf"></a><a name="lm32_002d_002a_002delf"></a>
! <h3 class="heading">lm32-*-elf</h3>
! <p>Lattice Mico32 processor.
  This configuration is intended for embedded systems.
! </p>
! <hr />
! <a name="lm32_002dx_002duclinux"></a><a name="lm32_002d_002a_002duclinux"></a>
! <h3 class="heading">lm32-*-uclinux</h3>
! <p>Lattice Mico32 processor.
  This configuration is intended for embedded systems running uClinux.
! </p>
! <hr />
! <a name="m32c_002dx_002delf"></a><a name="m32c_002d_002a_002delf"></a>
! <h3 class="heading">m32c-*-elf</h3>
! <p>Renesas M32C processor.
  This configuration is intended for embedded systems.
! </p>
! <hr />
! <a name="m32r_002dx_002delf"></a><a name="m32r_002d_002a_002delf"></a>
! <h3 class="heading">m32r-*-elf</h3>
! <p>Renesas M32R processor.
  This configuration is intended for embedded systems.
! </p>
! <hr />
! <a name="m68k_002dx_002dx"></a><a name="m68k_002d_002a_002d_002a"></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_002dx_002duclinux"></a><a name="m68k_002d_002a_002duclinux"></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="mep_002dx_002delf"></a><a name="mep_002d_002a_002delf"></a>
! <h3 class="heading">mep-*-elf</h3>
! <p>Toshiba Media embedded Processor.
  This configuration is intended for embedded systems.
! </p>
! <hr />
! <a name="microblaze_002dx_002delf"></a><a name="microblaze_002d_002a_002delf"></a>
! <h3 class="heading">microblaze-*-elf</h3>
! <p>Xilinx MicroBlaze processor.
  This configuration is intended for embedded systems.
! </p>
! <hr />
! <a name="mips_002dx_002dx"></a><a name="mips_002d_002a_002d_002a"></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
  really anything wrong, and it is okay to use the output file.  You can
  stop such warnings by installing the GNU linker.
! </p>
! <p>It would be nice to extend GAS to produce the gp tables, but they are
  optional, and there should not be a warning about their absence.
! </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>
! <p>The assembler from GNU binutils 2.17 and earlier has a bug in the way
  it sorts relocations for REL targets (o32, o64, EABI).  This can cause
  bad code to be generated for simple C++ programs.  Also the linker
  from GNU binutils versions prior to 2.17 has a bug which causes the
! runtime linker stubs in very large programs, like <samp>libgcj.so</samp>, to
  be incorrectly generated.  GNU Binutils 2.18 and later (and snapshots
  made after Nov. 9, 2006) should be free from both of these problems.
! </p>
! <hr />
! <a name="mips_002dsgi_002dirix5"></a><a name="mips_002dsgi_002dirix5-1"></a>
! <h3 class="heading">mips-sgi-irix5</h3>
  <p>Support for IRIX 5 has been removed in GCC 4.6.
! </p>
! <hr />
! <a name="mips_002dsgi_002dirix6"></a><a name="mips_002dsgi_002dirix6-1"></a>
! <h3 class="heading">mips-sgi-irix6</h3>
  <p>Support for IRIX 6.5 has been removed in GCC 4.8.  Support for IRIX 6
  releases before 6.5 has been removed in GCC 4.6, as well as support for
  the O32 ABI.
! </p>
! <hr />
! <a name="moxie_002dx_002delf"></a><a name="moxie_002d_002a_002delf"></a>
! <h3 class="heading">moxie-*-elf</h3>
  <p>The moxie processor.
! </p>
! <hr />
! <a name="msp430_002dx_002delf"></a><a name="msp430_002d_002a_002delf"></a>
! <h3 class="heading">msp430-*-elf</h3>
! <p>TI MSP430 processor.
  This configuration is intended for embedded systems.
! </p>
! <hr />
! <a name="nds32le_002dx_002delf"></a><a name="nds32le_002d_002a_002delf"></a>
! <h3 class="heading">nds32le-*-elf</h3>
  <p>Andes NDS32 target in little endian mode.
! </p>
! <hr />
! <a name="nds32be_002dx_002delf"></a><a name="nds32be_002d_002a_002delf"></a>
! <h3 class="heading">nds32be-*-elf</h3>
  <p>Andes NDS32 target in big endian mode.
! </p>
! <hr />
! <a name="nvptx_002dx_002dnone"></a><a name="nvptx_002d_002a_002dnone"></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/MentorEmbedded/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>A nvptx port of newlib is available at
! <a href="https://github.com/MentorEmbedded/nvptx-newlib/">nvptx-newlib</a>.
  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>
! <hr />
! <a name="powerpc_002dx_002dx"></a><a name="powerpc_002d_002a_002d_002a"></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
  <a href="ftp://ftp.kernel.org/pub/linux/devel/binutils">binutils 2.15</a>
  or newer for a working GCC.
! </p>
! <hr />
! <a name="powerpc_002dx_002ddarwin"></a><a name="powerpc_002d_002a_002ddarwin_002a"></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="http://opensource.apple.com/">http://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="http://gcc.gnu.org/ml/gcc/2006-03/msg00507.html">http://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_002dx_002delf"></a><a name="powerpc_002d_002a_002delf"></a>
! <h3 class="heading">powerpc-*-elf</h3>
  <p>PowerPC system in big endian mode, running System V.4.
! </p>
! <hr />
! <a name="powerpc_002dx_002dlinux_002dgnu"></a><a name="powerpc_002a_002d_002a_002dlinux_002dgnu_002a"></a>
! <h3 class="heading">powerpc*-*-linux-gnu*</h3>
  <p>PowerPC system in big endian mode running Linux.
! </p>
! <hr />
! <a name="powerpc_002dx_002dnetbsd"></a><a name="powerpc_002d_002a_002dnetbsd_002a"></a>
! <h3 class="heading">powerpc-*-netbsd*</h3>
  <p>PowerPC system in big endian mode running NetBSD.
! </p>
! <hr />
! <a name="powerpc_002dx_002deabisim"></a><a name="powerpc_002d_002a_002deabisim"></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_002dx_002deabi"></a><a name="powerpc_002d_002a_002deabi"></a>
! <h3 class="heading">powerpc-*-eabi</h3>
  <p>Embedded PowerPC system in big endian mode.
! </p>
! <hr />
! <a name="powerpcle_002dx_002delf"></a><a name="powerpcle_002d_002a_002delf"></a>
! <h3 class="heading">powerpcle-*-elf</h3>
  <p>PowerPC system in little endian mode, running System V.4.
! </p>
! <hr />
! <a name="powerpcle_002dx_002deabisim"></a><a name="powerpcle_002d_002a_002deabisim"></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_002dx_002deabi"></a><a name="powerpcle_002d_002a_002deabi"></a>
! <h3 class="heading">powerpcle-*-eabi</h3>
  <p>Embedded PowerPC system in little endian mode.
! </p>
! <hr />
! <a name="rl78_002dx_002delf"></a><a name="rl78_002d_002a_002delf"></a>
! <h3 class="heading">rl78-*-elf</h3>
! <p>The Renesas RL78 processor.
  This configuration is intended for embedded systems.
! </p>
! <hr />
! <a name="rx_002dx_002delf"></a><a name="rx_002d_002a_002delf"></a>
! <h3 class="heading">rx-*-elf</h3>
  <p>The Renesas RX processor.  See
  <a href="http://eu.renesas.com/fmwk.jsp?cnt=rx600_series_landing.jsp&amp;fp=/products/mpumcu/rx_family/rx600_series">http://eu.renesas.com/fmwk.jsp?cnt=rx600_series_landing.jsp&amp;fp=/products/mpumcu/rx_family/rx600_series</a>
  for more information about this processor.
! </p>
! <hr />
! <a name="s390_002dx_002dlinux"></a><a name="s390_002d_002a_002dlinux_002a"></a>
! <h3 class="heading">s390-*-linux*</h3>
  <p>S/390 system running GNU/Linux for S/390.
! </p>
! <hr />
! <a name="s390x_002dx_002dlinux"></a><a name="s390x_002d_002a_002dlinux_002a"></a>
! <h3 class="heading">s390x-*-linux*</h3>
  <p>zSeries system (64-bit) running GNU/Linux for zSeries.
! </p>
! <hr />
! <a name="s390x_002dibm_002dtpf"></a><a name="s390x_002dibm_002dtpf_002a"></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_002dx_002dsolaris2"></a><a name="g_t_002a_002d_002a_002dsolaris2_002a"></a>
! <h3 class="heading">*-*-solaris2*</h3>
! <p>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 removed
  in GCC 4.6.
! </p>
! <p>Sun does not ship a C compiler with Solaris 2 before Solaris 10, though
  you can download the Sun Studio compilers for free.  In Solaris 10 and
! 11, GCC 3.4.3 is available as <code>/usr/sfw/bin/gcc</code>.  Solaris 11
! also provides GCC 4.5.2 as <code>/usr/gcc/4.5/bin/gcc</code>.  Alternatively,
  you can install a pre-built GCC to bootstrap and install GCC.  See the
  <a href="binaries.html">binaries page</a> for details.
! </p>
! <p>The Solaris 2 <code>/bin/sh</code> will often fail to configure
! &lsquo;<samp>libstdc++-v3</samp>&rsquo;, &lsquo;<samp>boehm-gc</samp>&rsquo; or &lsquo;<samp>libjava</samp>&rsquo;.  We therefore
  recommend using the following initial sequence of commands
+ </p>
+ <div class="smallexample">
+ <pre class="smallexample">% CONFIG_SHELL=/bin/ksh
+ % export CONFIG_SHELL
+ </pre></div>
  
! <p>and proceed as described in <a href="configure.html">the configure instructions</a>.
  In addition we strongly recommend specifying an absolute path to invoke
! <code><var>srcdir</var>/configure</code>.
! </p>
! <p>Solaris 2 comes with a number of optional OS packages.  Some of these
  are needed to use GCC fully, namely <code>SUNWarc</code>,
  <code>SUNWbtool</code>, <code>SUNWesu</code>, <code>SUNWhea</code>, <code>SUNWlibm</code>,
  <code>SUNWsprot</code>, and <code>SUNWtoo</code>.  If you did not install all
  optional packages when installing Solaris 2, you will need to verify that
  the packages that GCC needs are installed.
! </p>
! <p>To check whether an optional package is installed, use
! the <code>pkginfo</code> command.  To add an optional package, use the
! <code>pkgadd</code> command.  For further details, see the Solaris 2
  documentation.
! </p>
! <p>Trying to use the linker and other tools in
! <samp>/usr/ucb</samp> to install GCC has been observed to cause trouble.
  For example, the linker may hang indefinitely.  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 Sun 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 Sun assembler or the GNU assembler, in
! conjunction with the Sun linker.  The GNU <code>as</code>
  versions included in Solaris 10, from GNU binutils 2.15, and Solaris 11,
  from GNU binutils 2.19, are known to work.  They can be found in
! <samp>/usr/sfw/bin/gas</samp>.  Current versions of GNU binutils (2.22)
  are known to work as well.  Note that your mileage may vary
  if you use a combination of the GNU tools and the Sun tools: while the
! combination GNU <code>as</code> + Sun <code>ld</code> should reasonably work,
! the reverse combination Sun <code>as</code> + GNU <code>ld</code> may fail to
! build or cause memory corruption at runtime in some cases for C++ programs.
! GNU <code>ld</code> usually works as well, although the version included in
  Solaris 10 cannot be used due to several bugs.  Again, the current
  version (2.22) is known to work, but generally lacks platform specific
! features, so better stay with Sun <code>ld</code>.  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>.
! </p>
! <p>To enable symbol versioning in &lsquo;<samp>libstdc++</samp>&rsquo; with the Sun linker,
! you need to have any version of GNU <code>c++filt</code>, which is part of
! GNU binutils.  &lsquo;<samp>libstdc++</samp>&rsquo; symbol versioning will be disabled if no
! appropriate version is found.  Sun <code>c++filt</code> from the Sun Studio
  compilers does <em>not</em> work.
! </p>
! <p>GNU <code>make</code> version 3.81 or later is required to build libjava
! with the Sun linker.
! </p>
! <p>Sun bug 4296832 turns up when compiling X11 headers with GCC 2.95 or
! newer: <code>g++</code> will complain that types are missing.  These headers
  assume that omitting the type means <code>int</code>; this assumption worked for
  C90 but is wrong for C++, and is now wrong for C99 also.
! </p>
! <p>Sun bug 4927647 sometimes causes random spurious testsuite failures
! related to missing diagnostic output.  This bug doesn&rsquo;t affect GCC
! itself, rather it is a kernel bug triggered by the <code>expect</code>
  program which is used only by the GCC testsuite driver.  When the bug
! causes the <code>expect</code> program to miss anticipated output, extra
  testsuite failures appear.
! </p>
! <hr />
! <a name="sparc_002dx_002dx"></a><a name="sparc_002a_002d_002a_002d_002a"></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.
! </p>
! <p>Newer versions of the GNU Multiple Precision Library (GMP), the MPFR
  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_002dsun_002dsolaris2"></a><a name="sparc_002dsun_002dsolaris2_002a"></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 Sun&rsquo;s native tools;
  this difference is quite significant for binaries containing debugging
  information.
! </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.
  However, if all you want is code tuned for the UltraSPARC CPU, you
! should try the <samp>-mtune=ultrasparc</samp> option instead, which produces
  code that, unlike full 64-bit code, can still run on non-UltraSPARC
  machines.
! </p>
! <p>When configuring on a Solaris 7 or later system that is running a kernel
  that supports only 32-bit binaries, one must configure with
! <samp>--disable-multilib</samp>, since we will not be able to build the
  64-bit target libraries.
! </p>
! <p>GCC 3.3 and GCC 3.4 trigger code generation bugs in earlier versions of
  the GNU compiler (especially GCC 3.0.x versions), which lead to the
  miscompilation of the stage1 compiler and the subsequent failure of the
  bootstrap process.  A workaround is to use GCC 3.2.3 as an intermediary
  stage, i.e. to bootstrap that compiler with the base compiler and then
  use it to bootstrap the final compiler.
! </p>
! <p>GCC 3.4 triggers a code generation bug in versions 5.4 (Sun ONE Studio 7)
  and 5.5 (Sun ONE Studio 8) of the Sun compiler, which causes a bootstrap
  failure in form of a miscompilation of the stage1 compiler by the Sun
  compiler.  This is Sun bug 4974440.  This is fixed with patch 112760-07.
! </p>
! <p>GCC 3.4 changed the default debugging format from Stabs to DWARF-2 for
  32-bit code on Solaris 7 and later.  If you use the Sun assembler, this
  change apparently runs afoul of Sun bug 4910101 (which is referenced as
! an x86-only problem by Sun, probably because they do not use DWARF-2).
  A symptom of the problem is that you cannot compile C++ programs like
! <code>groff</code> 1.19.1 without getting messages similar to the following:
! </p>
! <div class="smallexample">
! <pre class="smallexample">ld: warning: relocation error: R_SPARC_UA32: &hellip;
!   external symbolic relocation against non-allocatable section
!   .debug_info cannot be processed at runtime: relocation ignored.
! </pre></div>
  
! <p>To work around this problem, compile with <samp>-gstabs+</samp> instead of
! plain <samp>-g</samp>.
! </p>
! <p>When configuring the GNU Multiple Precision Library (GMP), the MPFR
  library or the MPC library on a Solaris 7 or later system, the canonical
! target triplet must be specified as the <code>build</code> parameter on the
! configure 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 on a Solaris 9 system:
+ </p>
+ <div class="smallexample">
+ <pre class="smallexample">% ./configure --build=sparc-sun-solaris2.9 --prefix=xxx
+ </pre></div>
  
! <hr />
! <a name="sparc_002dsun_002dsolaris210"></a><a name="sparc_002dsun_002dsolaris2_002e10"></a>
! <h3 class="heading">sparc-sun-solaris2.10</h3>
  <p>There is a bug in older versions of the Sun assembler which breaks
  thread-local storage (TLS).  A typical error message is
+ </p>
+ <div class="smallexample">
+ <pre class="smallexample">ld: fatal: relocation error: R_SPARC_TLS_LE_HIX22: file /var/tmp//ccamPA1v.o:
+   symbol &lt;unknown&gt;: bad symbol type SECT: symbol type must be TLS
+ </pre></div>
  
! <p>This bug is fixed in Sun patch 118683-03 or later.
! </p>
! <hr />
! <a name="sparc_002dx_002dlinux"></a><a name="sparc_002d_002a_002dlinux_002a"></a>
! <h3 class="heading">sparc-*-linux*</h3>
  
  <p>GCC versions 3.0 and higher require binutils 2.11.2 and glibc 2.2.4
  or newer on this platform.  All earlier binutils and glibc
  releases mishandled unaligned relocations on <code>sparc-*-*</code> targets.
+ </p>
  
! <hr />
! <a name="sparc64_002dx_002dsolaris2"></a><a name="sparc64_002d_002a_002dsolaris2_002a"></a>
! <h3 class="heading">sparc64-*-solaris2*</h3>
  <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 configure line.  For example
  on a Solaris 9 system:
+ </p>
+ <div class="smallexample">
+ <pre class="smallexample">% ./configure --build=sparc64-sun-solaris2.9 --prefix=xxx
+ </pre></div>
  
! <p>The following compiler flags must be specified in the configure
  step in order to bootstrap this target with the Sun compiler:
+ </p>
+ <div class="smallexample">
+ <pre class="smallexample">% CC=&quot;cc -xarch=v9 -xildoff&quot; <var>srcdir</var>/configure [<var>options</var>] [<var>target</var>]
+ </pre></div>
  
! <p><samp>-xarch=v9</samp> specifies the SPARC-V9 architecture to the Sun toolchain
! and <samp>-xildoff</samp> turns off the incremental linker.
! </p>
! <hr />
! <a name="sparcv9_002dx_002dsolaris2"></a><a name="sparcv9_002d_002a_002dsolaris2_002a"></a>
! <h3 class="heading">sparcv9-*-solaris2*</h3>
! <p>This is a synonym for &lsquo;<samp>sparc64-*-solaris2*</samp>&rsquo;.
! </p>
! <hr />
! <a name="c6x_002dx_002dx"></a><a name="c6x_002d_002a_002d_002a"></a>
! <h3 class="heading">c6x-*-*</h3>
  <p>The C6X family of processors. This port requires binutils-2.22 or newer.
! </p>
! <hr />
! <a name="tilegx_002d_002a_002dlinux"></a><a name="tilegx_002d_002a_002dlinux_002a"></a>
! <h3 class="heading">tilegx-*-linux*</h3>
  <p>The TILE-Gx processor in little endian mode, running GNU/Linux.  This
  port requires binutils-2.22 or newer.
! </p>
! <hr />
! <a name="tilegxbe_002d_002a_002dlinux"></a><a name="tilegxbe_002d_002a_002dlinux_002a"></a>
! <h3 class="heading">tilegxbe-*-linux*</h3>
  <p>The TILE-Gx processor in big endian mode, running GNU/Linux.  This
  port requires binutils-2.23 or newer.
! </p>
! <hr />
! <a name="tilepro_002d_002a_002dlinux"></a><a name="tilepro_002d_002a_002dlinux_002a"></a>
! <h3 class="heading">tilepro-*-linux*</h3>
  <p>The TILEPro processor running GNU/Linux.  This port requires
  binutils-2.22 or newer.
! </p>
! <hr />
! <a name="visium_002dx_002delf"></a><a name="visium_002d_002a_002delf"></a>
! <h3 class="heading">visium-*-elf</h3>
! <p>CDS VISIUMcore processor.
  This configuration is intended for embedded systems.
! </p>
! <hr />
! <a name="x_002dx_002dvxworks"></a><a name="g_t_002a_002d_002a_002dvxworks_002a"></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
  a matter of writing an appropriate &ldquo;configlette&rdquo; (see below).  We are
  not interested in supporting older, a.out or COFF-based, versions of
  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_002d64_002dx_002dx"></a><a name="x86_005f64_002d_002a_002d_002a_002c-amd64_002d_002a_002d_002a"></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_002d64_002dx_002dsolaris210"></a><a name="x86_005f64_002d_002a_002dsolaris2_002e1_005b0_002d9_005d_002a"></a>
! <h3 class="heading">x86_64-*-solaris2.1[0-9]*</h3>
  <p>GCC also supports the x86-64 architecture implemented by the AMD64
! processor (&lsquo;<samp>amd64-*-*</samp>&rsquo; is an alias for &lsquo;<samp>x86_64-*-*</samp>&rsquo;) on
  Solaris 10 or later.  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 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.1x</samp>
! and &lsquo;<samp>CC=gcc -m64</samp>&rsquo;.
! </p>
! <hr />
! <a name="xtensa_002dx_002delf"></a><a name="xtensa_002a_002d_002a_002delf"></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_002dx_002dlinux"></a><a name="xtensa_002a_002d_002a_002dlinux_002a"></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_002dbit-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_002dbit-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> Interix <a href="#x-x-interix">*-*-interix</a>: The Interix subsystem
+ provides native support for POSIX.
+ </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="http://www.mkssoftware.com/">http://www.mkssoftware.com/</a> for more information.
+ </li></ul>
  
! <a name="Intel-64_002dbit-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="http://mingw-w64.sourceforge.net/">http://mingw-w64.sourceforge.net/</a>.
  This library should be used with the target triple x86_64-pc-mingw32.
! </p>
! <p>Presently Windows for Itanium is not supported.
! </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.  However, it does
  support the Interix subsystem.  See above.
! </p>
! <p>Old target names including *-*-winnt and *-*-windowsnt are no longer used.
! </p>
! <p>PW32 (i386-pc-pw32) support was never completed, and the project seems to
  be inactive.  See <a href="http://pw32.sourceforge.net/">http://pw32.sourceforge.net/</a> for more information.
! </p>
! <p>UWIN support has been removed due to a lack of maintenance.
! </p>
! <hr />
! <a name="x_002dx_002dcygwin"></a><a name="g_t_002a_002d_002a_002dcygwin"></a>
! <h3 class="heading">*-*-cygwin</h3>
  <p>Ports of GCC are included with the
  <a href="http://www.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.
! </p>
! <p>The Cygwin native compiler can be configured to target any 32-bit x86
  cpu architecture desired; the default is i686-pc-cygwin.  It should be
  used with as up-to-date a version of binutils as possible; use either
  the latest official GNU binutils release in the Cygwin distribution,
  or version 2.20 or above if building your own.
! </p>
! <hr />
! <a name="x_002dx_002dinterix"></a><a name="g_t_002a_002d_002a_002dinterix"></a>
! <h3 class="heading">*-*-interix</h3>
  <p>The Interix target is used by OpenNT, Interix, Services For UNIX (SFU),
  and Subsystem for UNIX-based Applications (SUA).  Applications compiled
  with this target run in the Interix subsystem, which is separate from
  the Win32 subsystem.  This target was last known to work in GCC 3.3.
! </p>
! <hr />
! <a name="x_002dx_002dmingw32"></a><a name="g_t_002a_002d_002a_002dmingw32"></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
  several years and may suffer from bitrot.
! </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>
! <p>Support for old systems as hosts for GCC can cause problems if the
  workarounds for compiler, library and operating system bugs affect the
  cleanliness or maintainability of the rest of GCC.  In some cases, to
  bring GCC up on such a system, if still possible with current GCC, may
  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
  problematic than support for them as hosts for GCC; if an enthusiast
  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), patch
*** 1512,1542 ****
  <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>For some systems, old versions of GNU binutils may also be useful,
! and are available from <samp><span class="file">pub/binutils/old-releases</span></samp> on
  <a href="http://sourceware.org/mirrors.html">sourceware.org mirror sites</a>.
! 
!    <p>Some of the information on specific systems above relates to
  such older systems, but much of the information
  about GCC on such systems (which may no longer be applicable to
  current GCC) is to be found in the GCC texinfo manual.
! 
!    <p><hr /><a name="elf"></a>
! 
! <h3 class="heading"><a name="TOC83"></a>all ELF targets (SVR4, Solaris 2, 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><a href="./index.html">Return to the GCC Installation page</a>
  
- <!-- ***Old documentation****************************************************** -->
- <!-- ***GFDL******************************************************************** -->
- <!-- *************************************************************************** -->
- <!-- Part 6 The End of the Document -->
- </body></html>
  
--- 1517,1550 ----
  <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>
! <p>For some systems, old versions of GNU binutils may also be useful,
! and are available from <samp>pub/binutils/old-releases</samp> on
  <a href="http://sourceware.org/mirrors.html">sourceware.org mirror sites</a>.
! </p>
! <p>Some of the information on specific systems above relates to
  such older systems, but much of the information
  about GCC on such systems (which may no longer be applicable to
  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-2_002c-etc_002e_0029"></a>
! <h3 class="heading">all ELF targets (SVR4, Solaris 2, 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>
+ 
+ 
  
  
+ 
+ 
+ </body>
+ </html>
diff -Nrcpad gcc-5.4.0/INSTALL/test.html gcc-5.5.0/INSTALL/test.html
*** gcc-5.4.0/INSTALL/test.html	Fri Jun  3 08:45:08 2016
--- gcc-5.5.0/INSTALL/test.html	Tue Oct 10 08:13:24 2017
***************
*** 1,234 ****
! <html lang="en">
! <head>
! <title>Installing GCC: Testing</title>
! <meta http-equiv="Content-Type" content="text/html">
! <meta name="description" content="Installing GCC: Testing">
! <meta name="generator" content="makeinfo 4.12">
! <link title="Top" rel="top" href="#Top">
! <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
! <!--
! Copyright (C) 1988-2015 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
  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 "GNU Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
!      A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
!      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.-->
! <meta http-equiv="Content-Style-Type" content="text/css">
! <style type="text/css"><!--
!   pre.display { font-family:inherit }
!   pre.format  { font-family:inherit }
!   pre.smalldisplay { font-family:inherit; font-size:smaller }
!   pre.smallformat  { font-family:inherit; font-size:smaller }
!   pre.smallexample { font-size:smaller }
!   pre.smalllisp    { font-size:smaller }
!   span.sc    { font-variant:small-caps }
!   span.roman { font-family:serif; font-weight:normal; } 
!   span.sansserif { font-family:sans-serif; font-weight:normal; } 
! --></style>
  </head>
! <body>
! <h1 class="settitle">Installing GCC: Testing</h1>
! <a name="index-Testing-1"></a><a name="index-Installing-GCC_003a-Testing-2"></a><a name="index-Testsuite-3"></a>
! 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="http://gcc.gnu.org/ml/gcc-testresults/">gcc-testresults mailing list</a>. 
  Some of these archived results are linked from the build status lists
  at <a href="http://gcc.gnu.org/buildstat.html">http://gcc.gnu.org/buildstat.html</a>, although not everyone who
! reports a successful build runs the testsuites and submits the results. 
  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>First, you must have <a href="download.html">downloaded the testsuites</a>. 
  These are part of the full distribution, but if you downloaded the
  &ldquo;core&rdquo; compiler plus any front ends, you must download the testsuites
  separately.
! 
!    <p>Second, you must have the testing tools installed.  This includes
  <a href="http://www.gnu.org/software/dejagnu/">DejaGnu</a>, Tcl, and Expect;
  the DejaGnu site has links to these.
! 
!    <p>If the directories where <samp><span class="command">runtest</span></samp> and <samp><span class="command">expect</span></samp> were
! installed are not in the <samp><span class="env">PATH</span></samp>, you may need to set the following
  environment variables appropriately, as in the following example (which
! assumes that DejaGnu has been installed under <samp><span class="file">/usr/local</span></samp>):
  
! <pre class="smallexample">     TCL_LIBRARY = /usr/local/share/tcl8.0
!      DEJAGNULIBS = /usr/local/share/dejagnu
! </pre>
!    <p>(On systems such as Cygwin, these paths are required to be actual
  paths, not mounts or links; presumably this is due to some lack of
  portability in the DejaGnu code.)
  
!    <p>Finally, you can run the testsuite (which may take a long time):
! <pre class="smallexample">     cd <var>objdir</var>; make -k check
! </pre>
!    <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><span class="samp">WARNING: Couldn't find the global config file.</span></samp>&rsquo; or
! &lsquo;<samp><span class="samp">WARNING: Couldn't find tool init file</span></samp>&rsquo; that can be ignored.
! 
!    <p>If you are testing a cross-compiler, you may want to run the testsuite
  on a simulator as described at <a href="http://gcc.gnu.org/simtest-howto.html">http://gcc.gnu.org/simtest-howto.html</a>.
! 
! <h3 class="section"><a name="TOC0"></a>How can you run the testsuite on selected tests?</h3>
  
  <p>In order to run sets of tests selectively, there are targets
! &lsquo;<samp><span class="samp">make check-gcc</span></samp>&rsquo; and language specific &lsquo;<samp><span class="samp">make check-c</span></samp>&rsquo;,
! &lsquo;<samp><span class="samp">make check-c++</span></samp>&rsquo;, &lsquo;<samp><span class="samp">make check-fortran</span></samp>&rsquo;, &lsquo;<samp><span class="samp">make check-java</span></samp>&rsquo;,
! &lsquo;<samp><span class="samp">make check-ada</span></samp>&rsquo;, &lsquo;<samp><span class="samp">make check-objc</span></samp>&rsquo;, &lsquo;<samp><span class="samp">make check-obj-c++</span></samp>&rsquo;,
! &lsquo;<samp><span class="samp">make check-lto</span></samp>&rsquo;
! in the <samp><span class="file">gcc</span></samp> subdirectory of the object directory.  You can also
! just run &lsquo;<samp><span class="samp">make check</span></samp>&rsquo; in a subdirectory of the object directory.
  
!    <p>A more selective way to just run all <samp><span class="command">gcc</span></samp> execute tests in the
  testsuite is to use
  
! <pre class="smallexample">     make check-gcc RUNTESTFLAGS="execute.exp <var>other-options</var>"
! </pre>
!    <p>Likewise, in order to run only the <samp><span class="command">g++</span></samp> &ldquo;old-deja&rdquo; tests in
! the testsuite with filenames matching &lsquo;<samp><span class="samp">9805*</span></samp>&rsquo;, you would use
! 
! <pre class="smallexample">     make check-g++ RUNTESTFLAGS="old-deja.exp=9805* <var>other-options</var>"
! </pre>
!    <p>The <samp><span class="file">*.exp</span></samp> files are located in the testsuite directories of the GCC
! source, the most important ones being <samp><span class="file">compile.exp</span></samp>,
! <samp><span class="file">execute.exp</span></samp>, <samp><span class="file">dg.exp</span></samp> and <samp><span class="file">old-deja.exp</span></samp>. 
! To get a list of the possible <samp><span class="file">*.exp</span></samp> files, pipe the
! output of &lsquo;<samp><span class="samp">make check</span></samp>&rsquo; into a file and look at the
! &lsquo;<samp><span class="samp">Running ...  .exp</span></samp>&rsquo; lines.
  
! <h3 class="section"><a name="TOC1"></a>Passing options and running multiple testsuites</h3>
  
  <p>You can pass multiple options to the testsuite using the
! &lsquo;<samp><span class="samp">--target_board</span></samp>&rsquo; option of DejaGNU, either passed as part of
! &lsquo;<samp><span class="samp">RUNTESTFLAGS</span></samp>&rsquo;, or directly to <samp><span class="command">runtest</span></samp> if you prefer to
  work outside the makefiles.  For example,
  
! <pre class="smallexample">     make check-g++ RUNTESTFLAGS="--target_board=unix/-O3/-fmerge-constants"
! </pre>
!    <p>will run the standard <samp><span class="command">g++</span></samp> testsuites (&ldquo;unix&rdquo; is the target name
  for a standard native testsuite situation), passing
! &lsquo;<samp><span class="samp">-O3 -fmerge-constants</span></samp>&rsquo; to the compiler on every test, i.e.,
  slashes separate options.
! 
!    <p>You can run the testsuites multiple times using combinations of options
  with a syntax similar to the brace expansion of popular shells:
  
! <pre class="smallexample">     ..."--target_board=arm-sim\{-mhard-float,-msoft-float\}\{-O1,-O2,-O3,\}"
! </pre>
!    <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><span class="samp">arm-sim</span></samp>&rsquo;
  target, as if you had specified all possible combinations yourself:
  
! <pre class="smallexample">     --target_board='arm-sim/-mhard-float/-O1 \
!                      arm-sim/-mhard-float/-O2 \
!                      arm-sim/-mhard-float/-O3 \
!                      arm-sim/-mhard-float \
!                      arm-sim/-msoft-float/-O1 \
!                      arm-sim/-msoft-float/-O2 \
!                      arm-sim/-msoft-float/-O3 \
!                      arm-sim/-msoft-float'
! </pre>
!    <p>They can be combined as many times as you wish, in arbitrary ways.  This
  list:
  
! <pre class="smallexample">     ..."--target_board=unix/-Wextra\{-O3,-fno-strength\}\{-fomit-frame,\}"
! </pre>
!    <p>will generate four combinations, all involving &lsquo;<samp><span class="samp">-Wextra</span></samp>&rsquo;.
! 
!    <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 <samp><span class="command">make</span></samp>
! do the parallel runs.  Instead of using &lsquo;<samp><span class="samp">--target_board</span></samp>&rsquo;, use a
  special makefile target:
  
! <pre class="smallexample">     make -j<var>N</var> check-<var>testsuite</var>//<var>test-target</var>/<var>option1</var>/<var>option2</var>/...
! </pre>
!    <p>For example,
  
! <pre class="smallexample">     make -j3 check-gcc//sh-hms-sim/{-m1,-m2,-m3,-m3e,-m4}/{,-nofpu}
! </pre>
!    <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><span class="file">gcc</span></samp> subdirectory.  (To see how this works, try
! typing <samp><span class="command">echo</span></samp> before the example given here.)
  
! <h3 class="section"><a name="TOC2"></a>Additional testing for Java Class Libraries</h3>
  
! <p>The Java runtime tests can be executed via &lsquo;<samp><span class="samp">make check</span></samp>&rsquo;
! in the <samp><var>target</var><span class="file">/libjava/testsuite</span></samp> directory in
  the build tree.
! 
!    <p>The <a href="http://sourceware.org/mauve/">Mauve Project</a> provides
  a suite of tests for the Java Class Libraries.  This suite can be run
  as part of libgcj testing by placing the Mauve tree within the libjava
! testsuite at <samp><span class="file">libjava/testsuite/libjava.mauve/mauve</span></samp>, or by
! specifying the location of that tree when invoking &lsquo;<samp><span class="samp">make</span></samp>&rsquo;, as in
! &lsquo;<samp><span class="samp">make MAUVEDIR=~/mauve check</span></samp>&rsquo;.
! 
! <h3 class="section"><a name="TOC3"></a>How to interpret test results</h3>
  
! <p>The result of running the testsuite are various <samp><span class="file">*.sum</span></samp> and <samp><span class="file">*.log</span></samp>
! files in the testsuite subdirectories.  The <samp><span class="file">*.log</span></samp> files contain a
  detailed log of the compiler invocations and the corresponding
! results, the <samp><span class="file">*.sum</span></samp> files summarize the results.  These summaries
  contain status codes for all tests:
  
!      <ul>
! <li>PASS: the test passed as expected
! <li>XPASS: the test unexpectedly passed
! <li>FAIL: the test unexpectedly failed
! <li>XFAIL: the test failed as expected
! <li>UNSUPPORTED: the test is not supported on this platform
! <li>ERROR: the testsuite detected an error
! <li>WARNING: the testsuite detected a possible problem
! </ul>
! 
!    <p>It is normal for some tests to report unexpected failures.  At the
  current time the testing harness does not allow fine grained control
  over whether or not a test is expected to fail.  This problem should
  be fixed in future releases.
  
! <h3 class="section"><a name="TOC4"></a>Submitting test results</h3>
  
  <p>If you want to report the results to the GCC project, use the
! <samp><span class="file">contrib/test_summary</span></samp> shell script.  Start it in the <var>objdir</var> with
  
! <pre class="smallexample">     <var>srcdir</var>/contrib/test_summary -p your_commentary.txt \
!          -m gcc-testresults@gcc.gnu.org |sh
! </pre>
!    <p>This script uses the <samp><span class="command">Mail</span></samp> program to send the results, so
! make sure it is in your <samp><span class="env">PATH</span></samp>.  The file <samp><span class="file">your_commentary.txt</span></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.
! 
!    <p><hr />
  <p><a href="./index.html">Return to the GCC Installation page</a>
  
- <!-- ***Final install*********************************************************** -->
- <!-- ***Binaries**************************************************************** -->
- <!-- ***Specific**************************************************************** -->
- <!-- ***Old documentation****************************************************** -->
- <!-- ***GFDL******************************************************************** -->
- <!-- *************************************************************************** -->
- <!-- Part 6 The End of the Document -->
- </body></html>
  
--- 1,315 ----
! <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
! <html>
! <!-- Copyright (C) 1988-2015 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
  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 "GNU
! Free Documentation License".
  
  (a) The FSF's Front-Cover Text is:
  
! A GNU Manual
  
  (b) The FSF's Back-Cover Text is:
  
! 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.1, http://www.gnu.org/software/texinfo/ -->
! <head>
! <title>Installing GCC</title>
! 
! <meta name="description" content="Installing GCC">
! <meta name="keywords" content="Installing GCC">
! <meta name="resource-type" content="document">
! <meta name="distribution" content="global">
! <meta name="Generator" content="makeinfo">
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <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>
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! <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="http://gcc.gnu.org/ml/gcc-testresults/">gcc-testresults mailing list</a>.
  Some of these archived results are linked from the build status lists
  at <a href="http://gcc.gnu.org/buildstat.html">http://gcc.gnu.org/buildstat.html</a>, although not everyone who
! reports a successful build runs the testsuites and submits the results.
  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 part of the full distribution, but if you downloaded the
  &ldquo;core&rdquo; compiler plus any front ends, you must download the testsuites
  separately.
! </p>
! <p>Second, you must have the testing tools installed.  This includes
  <a href="http://www.gnu.org/software/dejagnu/">DejaGnu</a>, Tcl, and Expect;
  the DejaGnu site has links to these.
! </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>
  
! <p>(On systems such as Cygwin, these paths are required to be actual
  paths, not mounts or links; presumably this is due to some lack of
  portability in the DejaGnu code.)
+ </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="http://gcc.gnu.org/simtest-howto.html">http://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-fortran</samp>&rsquo;, &lsquo;<samp>make check-java</samp>&rsquo;,
! &lsquo;<samp>make check-ada</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 <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 \
+                 arm-sim/-msoft-float/-O1 \
+                 arm-sim/-msoft-float/-O2 \
+                 arm-sim/-msoft-float/-O3 \
+                 arm-sim/-msoft-float'
+ </pre></div>
  
! <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="Additional-testing-for-Java-Class-Libraries"></a>
! <h3 class="section">Additional testing for Java Class Libraries</h3>
  
! <p>The Java runtime tests can be executed via &lsquo;<samp>make check</samp>&rsquo;
! in the <samp><var>target</var>/libjava/testsuite</samp> directory in
  the build tree.
! </p>
! <p>The <a href="http://sourceware.org/mauve/">Mauve Project</a> provides
  a suite of tests for the Java Class Libraries.  This suite can be run
  as part of libgcj testing by placing the Mauve tree within the libjava
! testsuite at <samp>libjava/testsuite/libjava.mauve/mauve</samp>, or by
! specifying the location of that tree when invoking &lsquo;<samp>make</samp>&rsquo;, as in
! &lsquo;<samp>make MAUVEDIR=~/mauve check</samp>&rsquo;.
! </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
  current time the testing harness does not allow fine grained control
  over whether or not a test is expected to fail.  This problem should
  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
  messages may be automatically processed.
! </p>
! <hr />
! <p>
  <p><a href="./index.html">Return to the GCC Installation page</a>
+ </p>
+ 
+ 
+ 
+ 
  
  
+ <hr>
+ 
+ 
+ 
+ </body>
+ </html>
diff -Nrcpad gcc-5.4.0/LAST_UPDATED gcc-5.5.0/LAST_UPDATED
*** gcc-5.4.0/LAST_UPDATED	Fri Jun  3 08:45:08 2016
--- gcc-5.5.0/LAST_UPDATED	Tue Oct 10 08:13:22 2017
***************
*** 1 ****
! Obtained from SVN: tags/gcc_5_4_0_release revision 237057
--- 1 ----
! Obtained from SVN: tags/gcc_5_5_0_release revision 253577
diff -Nrcpad gcc-5.4.0/MD5SUMS gcc-5.5.0/MD5SUMS
*** gcc-5.4.0/MD5SUMS	Fri Jun  3 10:51:57 2016
--- gcc-5.5.0/MD5SUMS	Tue Oct 10 10:01:12 2017
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the 
! # gcc-5.4.0.tar.bz2 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-5.5.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
*************** bda40697a9e2e23c4a52125fc1cc713d  .dir-l
*** 16,46 ****
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! 5d092149768913a01ead163a22e606a6  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 3c47fb6f8e8f7a7dcf0197d643772f00  INSTALL/binaries.html
! 83d5eec96b888bb6d9662eddaaa0af87  INSTALL/build.html
! deed6c23647cd0c6658f5559e81f7228  INSTALL/configure.html
! 1c35df4887f1a4748bd58d863af32714  INSTALL/download.html
! 182f3ca1425d1ccf637dd048e670c1f6  INSTALL/finalinstall.html
! f24b4999e0b38760db90dbb5acf5a2d4  INSTALL/gfdl.html
! 7bd1f7ee719ca2fc0abb6c5965935367  INSTALL/index.html
! 620f6dbef9699a9bde5d78980fbfaaa0  INSTALL/old.html
! 1a6f4f0588c3cf170269287338f18dea  INSTALL/prerequisites.html
! 36d70b7c38be6c8d6753987febe8d485  INSTALL/specific.html
! 0d630039c49eda6f5ade37d8aecbf88b  INSTALL/test.html
! f6873d0d2abe39a0d1aa67d2a1786f32  LAST_UPDATED
  cd5f112e9356a1c67c34f8b5d26f7370  MAINTAINERS
  970024246430a5feb4c2c064745219ef  Makefile.def
  1b3f7a8b563f58c5a7c6278e58be1c72  Makefile.in
  7b9a0ae00e8eb0afe268caaf603a9e4d  Makefile.tpl
! 0255fa2580776af4ceef3ea869535c9d  NEWS
  80d26bc3b1ad4f6969a96a24c9181bf5  README
  b510a5285eb05298b5f3d9f5ae920588  boehm-gc/AmigaOS.c
  2caafacabf758bb76a9dfce1fc544b97  boehm-gc/BCC_MAKEFILE
! cf9548348750e17ea0083dbc732a79d1  boehm-gc/ChangeLog
  c18075e3729cd116028480307a8e845d  boehm-gc/EMX_MAKEFILE
  3b7cc3be9ed3c2135bbda990e8a69303  boehm-gc/MacOS.c
  5cf7764626b7dd7272b2fe11403d1b6a  boehm-gc/MacProjects.sit.hqx
--- 16,46 ----
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! 0da82d838d522e4076f0af89e2e8aa9b  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! e6b4c8634cf482e7e607329110feab48  INSTALL/binaries.html
! 0179491ead3dacd381d82397f8442459  INSTALL/build.html
! b42d0884ad05dd5e2204191fb9fdd40a  INSTALL/configure.html
! 1ca0e2d33dcae6c5fb099d939810a1bb  INSTALL/download.html
! 9edb5dca75f3e2a67e51d65f97885857  INSTALL/finalinstall.html
! 03e5990246402f1d69b80a1422da7817  INSTALL/gfdl.html
! c8ae4ea43a19223131e237d0e914d709  INSTALL/index.html
! ca4bd237667ffa3df845eb057ada2c00  INSTALL/old.html
! 9783a0d0db4ce14973d450b01d990398  INSTALL/prerequisites.html
! b73d08ccd5ccbb77c62f7ef9a4f0f8ab  INSTALL/specific.html
! 34ea2c01b45e92c8f903f14736b26af7  INSTALL/test.html
! 075b40a77cf8c35ecdda8bb5ba827891  LAST_UPDATED
  cd5f112e9356a1c67c34f8b5d26f7370  MAINTAINERS
  970024246430a5feb4c2c064745219ef  Makefile.def
  1b3f7a8b563f58c5a7c6278e58be1c72  Makefile.in
  7b9a0ae00e8eb0afe268caaf603a9e4d  Makefile.tpl
! 3d20b44987649ffc8e00044c5905e64c  NEWS
  80d26bc3b1ad4f6969a96a24c9181bf5  README
  b510a5285eb05298b5f3d9f5ae920588  boehm-gc/AmigaOS.c
  2caafacabf758bb76a9dfce1fc544b97  boehm-gc/BCC_MAKEFILE
! a7b3d81f0c83735f8fb7631a81f1cc63  boehm-gc/ChangeLog
  c18075e3729cd116028480307a8e845d  boehm-gc/EMX_MAKEFILE
  3b7cc3be9ed3c2135bbda990e8a69303  boehm-gc/MacOS.c
  5cf7764626b7dd7272b2fe11403d1b6a  boehm-gc/MacProjects.sit.hqx
*************** b04a1232318128ebd7c630fca10d02e5  boehm-
*** 218,225 ****
  6659351ae2c4d772f3ebf8986f000187  config-ml.in
  c53118f6682ac1db40935d5705145d5a  config.guess
  040359150cf11493f973a46d8a25b06b  config.rpath
! e768d6a5b46753aeb6800eefb4b2540e  config.sub
! 43e84e9f43f28f61ac9f23451e361927  config/ChangeLog
  0fcd4badfe2a2191778bdf5ab94aa40c  config/acinclude.m4
  9238d23c68259d195b332db71892d242  config/acx.m4
  6b030f5cf640bdd401ea739f54a667f8  config/asmcfi.m4
--- 218,225 ----
  6659351ae2c4d772f3ebf8986f000187  config-ml.in
  c53118f6682ac1db40935d5705145d5a  config.guess
  040359150cf11493f973a46d8a25b06b  config.rpath
! 0640fa7bb2c9e2a129023b2d4146a6ea  config.sub
! 67a320561054bfb55749919497d60eeb  config/ChangeLog
  0fcd4badfe2a2191778bdf5ab94aa40c  config/acinclude.m4
  9238d23c68259d195b332db71892d242  config/acx.m4
  6b030f5cf640bdd401ea739f54a667f8  config/asmcfi.m4
*************** b0d2f2e937c16091b330451e6883c4b6  config
*** 304,312 ****
  b6afa5c33fb98edfaf591dd38d198b0d  config/warnings.m4
  7ef51b0adb98e5c5f7aba46d2c7293f1  config/weakref.m4
  e249d18c447a8372fd1ed5f084284d6b  config/zlib.m4
! 5874952f5a7f208ffd14773543ff9370  configure
! 58f9366f520e563310c08ba7db984a36  configure.ac
! 2b6f3f86ab4b35b8037b8293305177b3  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
  e0ea80d7094bf66610f2f60db444f9a1  contrib/analyze_brprob
--- 304,312 ----
  b6afa5c33fb98edfaf591dd38d198b0d  config/warnings.m4
  7ef51b0adb98e5c5f7aba46d2c7293f1  config/weakref.m4
  e249d18c447a8372fd1ed5f084284d6b  config/zlib.m4
! dc2767a18742156ece13aaff9ab34e1d  configure
! e046523f3946ed86d9971864a4d7f76b  configure.ac
! c283b02eb93787925d9f34bf50db74a9  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
  e0ea80d7094bf66610f2f60db444f9a1  contrib/analyze_brprob
*************** db03e57377f9eb202b7b783eb81fe40d  contri
*** 330,336 ****
  2e831f673656f3052f95930c3203cce9  contrib/filter_params.pl
  480dbaa133b74e68d41762d6596bd034  contrib/gcc.doxy
  55236e85d8087042189b701cd05d84be  contrib/gcc_build
! 68189b08923cd7e2ae6b2d16331211a3  contrib/gcc_update
  943aca0ab8b0e1d785c8cf39ac71e8fb  contrib/gennews
  59304fc08afa489baa6b920cc76dc625  contrib/gthr_supp_vxw_5x.c
  fa945bac89ee68b410027dcfe1312f4b  contrib/index-prop
--- 330,336 ----
  2e831f673656f3052f95930c3203cce9  contrib/filter_params.pl
  480dbaa133b74e68d41762d6596bd034  contrib/gcc.doxy
  55236e85d8087042189b701cd05d84be  contrib/gcc_build
! a3ab34d76188a280d9b03da3d054d6f2  contrib/gcc_update
  943aca0ab8b0e1d785c8cf39ac71e8fb  contrib/gennews
  59304fc08afa489baa6b920cc76dc625  contrib/gthr_supp_vxw_5x.c
  fa945bac89ee68b410027dcfe1312f4b  contrib/index-prop
*************** a7318fa2f0580c3a0d5dd4b14e4d0e0d  contri
*** 341,347 ****
  0fb5c8c3cd465d8bd57b55b2548c683a  contrib/paranoia.cc
  9083c56c1c89c5bec355a27f78e49807  contrib/patch_tester.sh
  87a19b40fbd220938cf6c23c42c255e2  contrib/prepare_patch.sh
! cd349550b43bea3c23bd5e2742f12768  contrib/reghunt/ChangeLog
  cf247a580e49d212518de409793db0a8  contrib/reghunt/bin/gcc-build-full
  724e70ea3e80f87f2a201bbe2f1eef37  contrib/reghunt/bin/gcc-build-simple
  3f2318bae7562a4ad1639e686916a545  contrib/reghunt/bin/gcc-cleanup
--- 341,347 ----
  0fb5c8c3cd465d8bd57b55b2548c683a  contrib/paranoia.cc
  9083c56c1c89c5bec355a27f78e49807  contrib/patch_tester.sh
  87a19b40fbd220938cf6c23c42c255e2  contrib/prepare_patch.sh
! 4a33979c9b24048f08547df9bbd79c19  contrib/reghunt/ChangeLog
  cf247a580e49d212518de409793db0a8  contrib/reghunt/bin/gcc-build-full
  724e70ea3e80f87f2a201bbe2f1eef37  contrib/reghunt/bin/gcc-build-simple
  3f2318bae7562a4ad1639e686916a545  contrib/reghunt/bin/gcc-cleanup
*************** f251d49dd87647250fcd74dd50b7835f  contri
*** 400,406 ****
  e2829fc4af4f433a6a328a62d5ce8066  contrib/reghunt/examples/reg-watch
  afd863c2ec84c906e20f9b9787b1f0fe  contrib/reghunt/examples/reg-watch.awk
  8955535523d4b5f48006bcb851ba9b4b  contrib/reghunt/examples/testall
! 5eb0eeb506cbb72d80ec7270fd5cfcc0  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
--- 400,406 ----
  e2829fc4af4f433a6a328a62d5ce8066  contrib/reghunt/examples/reg-watch
  afd863c2ec84c906e20f9b9787b1f0fe  contrib/reghunt/examples/reg-watch.awk
  8955535523d4b5f48006bcb851ba9b4b  contrib/reghunt/examples/testall
! 3eb1badfc587312580c3fab507818c54  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
*************** e00fa8f7dd72b80ca5a64130e85fe4f4  contri
*** 425,431 ****
  d25174fd04b32bbeab5f3cc783277ec1  contrib/vimrc
  7cb42cbdf8becd280d1e16191416fb62  contrib/warn_summary
  8b59f0d0a2dcdced14765c514fbad719  depcomp
! 7f5ef79d39498d120755072c347466f8  fixincludes/ChangeLog
  c23ba4c4f4ca4dfcdd9b4155e4626da7  fixincludes/Makefile.in
  b6e3f4950abc6e254b467063381f6473  fixincludes/README
  455903ad4ff71fa5c5340ef7ae41a0e6  fixincludes/README-fixinc
--- 425,431 ----
  d25174fd04b32bbeab5f3cc783277ec1  contrib/vimrc
  7cb42cbdf8becd280d1e16191416fb62  contrib/warn_summary
  8b59f0d0a2dcdced14765c514fbad719  depcomp
! 8dcef2c8409fdecfeef7104c45499620  fixincludes/ChangeLog
  c23ba4c4f4ca4dfcdd9b4155e4626da7  fixincludes/Makefile.in
  b6e3f4950abc6e254b467063381f6473  fixincludes/README
  455903ad4ff71fa5c5340ef7ae41a0e6  fixincludes/README-fixinc
*************** e06760e2aaa65a20f4f201cf50e62a16  fixinc
*** 438,450 ****
  497da58c4b47627a33f754b61f6eb051  fixincludes/fixinc.in
  9662d8ad173553c438e3ad3fc9db8352  fixincludes/fixincl.c
  e1cd70e73f3c2d2319fd9d210ad6a5ff  fixincludes/fixincl.tpl
! d33530ec7e9f3e90e5d05664f08458d7  fixincludes/fixincl.x
  47da6e634225e1667c26a71bcf234bfa  fixincludes/fixlib.c
  d8aac376a7311e465eb0a98d341103a1  fixincludes/fixlib.h
  5b2c1fd3ef9d44fb6beb1a0d45ddd533  fixincludes/fixopts.c
  ed1415e9dbc8f421fd9288bde0d90ad1  fixincludes/fixtests.c
  6df145c7cea1e2099cf97a0d83564aca  fixincludes/genfixes
! 052121f87ed1928d7b0b7be1850ce33b  fixincludes/inclhack.def
  6e093a147c4e377aa751d74c82d0bd87  fixincludes/mkfixinc.sh
  5f9960cfe65b2e6bef658f770e52dfef  fixincludes/mkheaders.in
  3aa0563cd682ee61ecd9eb6eea0b0bce  fixincludes/procopen.c
--- 438,450 ----
  497da58c4b47627a33f754b61f6eb051  fixincludes/fixinc.in
  9662d8ad173553c438e3ad3fc9db8352  fixincludes/fixincl.c
  e1cd70e73f3c2d2319fd9d210ad6a5ff  fixincludes/fixincl.tpl
! 83114f967cd54b5b60c832c757e01ba5  fixincludes/fixincl.x
  47da6e634225e1667c26a71bcf234bfa  fixincludes/fixlib.c
  d8aac376a7311e465eb0a98d341103a1  fixincludes/fixlib.h
  5b2c1fd3ef9d44fb6beb1a0d45ddd533  fixincludes/fixopts.c
  ed1415e9dbc8f421fd9288bde0d90ad1  fixincludes/fixtests.c
  6df145c7cea1e2099cf97a0d83564aca  fixincludes/genfixes
! 82ed4f7738ae28aefeb366ab5ce195a7  fixincludes/inclhack.def
  6e093a147c4e377aa751d74c82d0bd87  fixincludes/mkfixinc.sh
  5f9960cfe65b2e6bef658f770e52dfef  fixincludes/mkheaders.in
  3aa0563cd682ee61ecd9eb6eea0b0bce  fixincludes/procopen.c
*************** bfb58e3983fc133c965e434e57aed732  fixinc
*** 482,495 ****
  a11561f51aa57e84e571f2073fb6bf60  fixincludes/tests/base/ioLib.h
  c8dd71b57c3a35b0c6760f7d38af6f42  fixincludes/tests/base/iso/math_c99.h
  56aa16fdf3be46d7dc2b462246495f82  fixincludes/tests/base/iso/math_iso.h
! 5b48936adb644e9aa4b78d21297cc193  fixincludes/tests/base/iso/stdio_iso.h
  e1bd28539aceeab13a3028da02f8c4ae  fixincludes/tests/base/iso/stdlib_iso.h
  1ac942b363960bf8a865ffd9e3bf28be  fixincludes/tests/base/linux/vt.h
  8183eabf96be2918f3259a587329a813  fixincludes/tests/base/locale.h
  8ac97a3367b9a99503c5b21430993cd4  fixincludes/tests/base/mach-o/dyld.h
  dbbbc9ead412bbd125f56bc509994066  fixincludes/tests/base/mach-o/swap.h
  8d51a42a0868b670ec996069f42cae57  fixincludes/tests/base/malloc.h
! 1af0b5352f93a74d46e55cee6e40773c  fixincludes/tests/base/math.h
  d2cbc665e9046f8acb42c1271592be47  fixincludes/tests/base/net/if.h
  98099ff70c675f84c19b58da050f3712  fixincludes/tests/base/net/if_arp.h
  a911f5fbb127353024e77149fcf90596  fixincludes/tests/base/netdnet/dnetdb.h
--- 482,496 ----
  a11561f51aa57e84e571f2073fb6bf60  fixincludes/tests/base/ioLib.h
  c8dd71b57c3a35b0c6760f7d38af6f42  fixincludes/tests/base/iso/math_c99.h
  56aa16fdf3be46d7dc2b462246495f82  fixincludes/tests/base/iso/math_iso.h
! cb3e756a4d569b97af1ed7a9d48ff57b  fixincludes/tests/base/iso/stdio_iso.h
! 1c72f8feabf8899114770389de731d90  fixincludes/tests/base/iso/stdlib_c99.h
  e1bd28539aceeab13a3028da02f8c4ae  fixincludes/tests/base/iso/stdlib_iso.h
  1ac942b363960bf8a865ffd9e3bf28be  fixincludes/tests/base/linux/vt.h
  8183eabf96be2918f3259a587329a813  fixincludes/tests/base/locale.h
  8ac97a3367b9a99503c5b21430993cd4  fixincludes/tests/base/mach-o/dyld.h
  dbbbc9ead412bbd125f56bc509994066  fixincludes/tests/base/mach-o/swap.h
  8d51a42a0868b670ec996069f42cae57  fixincludes/tests/base/malloc.h
! 72c7a983f178e7690e3642c6e8408d67  fixincludes/tests/base/math.h
  d2cbc665e9046f8acb42c1271592be47  fixincludes/tests/base/net/if.h
  98099ff70c675f84c19b58da050f3712  fixincludes/tests/base/net/if_arp.h
  a911f5fbb127353024e77149fcf90596  fixincludes/tests/base/netdnet/dnetdb.h
*************** d2f1ddef1ca3edae298e37f7bc892941  fixinc
*** 523,531 ****
  563eddf934e21ec7f85628e18fb1c641  fixincludes/tests/base/stdint-hpux11.h
  cc3783f241fa992a305aced8e1195ee9  fixincludes/tests/base/stdint-newlib.h
  1ee4e2b61ae5781d35271f3181927037  fixincludes/tests/base/stdint.h
! bd72848710b6f098f5e44218bfe3202e  fixincludes/tests/base/stdio.h
  1887d8bc1711dae9922852cda6027877  fixincludes/tests/base/stdio_tag.h
! a35ebd909f0105b249e3af1c1b5826ab  fixincludes/tests/base/stdlib.h
  42a7de17fb8f2ac74bc30c7029199637  fixincludes/tests/base/string.h
  6931e261dc1cecb7983279cf909bd784  fixincludes/tests/base/strings.h
  127183621f8b29d6912c683be6102135  fixincludes/tests/base/sundev/vuid_event.h
--- 524,532 ----
  563eddf934e21ec7f85628e18fb1c641  fixincludes/tests/base/stdint-hpux11.h
  cc3783f241fa992a305aced8e1195ee9  fixincludes/tests/base/stdint-newlib.h
  1ee4e2b61ae5781d35271f3181927037  fixincludes/tests/base/stdint.h
! d47412644cdea4f030ba2744eca6d8ad  fixincludes/tests/base/stdio.h
  1887d8bc1711dae9922852cda6027877  fixincludes/tests/base/stdio_tag.h
! 6b842aa18e09c73db745cbffa3cb34cf  fixincludes/tests/base/stdlib.h
  42a7de17fb8f2ac74bc30c7029199637  fixincludes/tests/base/string.h
  6931e261dc1cecb7983279cf909bd784  fixincludes/tests/base/strings.h
  127183621f8b29d6912c683be6102135  fixincludes/tests/base/sundev/vuid_event.h
*************** a5e817d35ded04a0fb03999b50c0e89e  fixinc
*** 556,567 ****
  955462b555900ecd3934223c64e21fa7  fixincludes/tests/base/types/vxTypesBase.h
  c78e762f2c91f2af991feda7d3d7f4b2  fixincludes/tests/base/unistd.h
  587149fa20a733d9e098696d686977c6  gcc/ABOUT-GCC-NLS
! 6741b8327f57554228448c0c595455be  gcc/BASE-VER
  59530bdf33659b29e73d4adb9f9f6552  gcc/COPYING
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! a9d50c57fe142855dc32e8084d1094ee  gcc/ChangeLog
  a3b63c675afa7a655cc2bfa8a907af79  gcc/ChangeLog-1997
  d9a88529352a010253c2e8fb1ed6023b  gcc/ChangeLog-1998
  240f08f81cb4699e8b49347db38233db  gcc/ChangeLog-1999
--- 557,568 ----
  955462b555900ecd3934223c64e21fa7  fixincludes/tests/base/types/vxTypesBase.h
  c78e762f2c91f2af991feda7d3d7f4b2  fixincludes/tests/base/unistd.h
  587149fa20a733d9e098696d686977c6  gcc/ABOUT-GCC-NLS
! 2a3694a12faeea6cb2e2a93d24763524  gcc/BASE-VER
  59530bdf33659b29e73d4adb9f9f6552  gcc/COPYING
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 0dc353794d6870ab8bb3f9dc259f3380  gcc/ChangeLog
  a3b63c675afa7a655cc2bfa8a907af79  gcc/ChangeLog-1997
  d9a88529352a010253c2e8fb1ed6023b  gcc/ChangeLog-1998
  240f08f81cb4699e8b49347db38233db  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 588,606 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! b052afbc7c95abf8caf1fac822be8435  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
  36698274bb69e2ada20f5cc434f3caa5  gcc/FSFChangeLog.11
  2e751e6a73ca8d8a30485ca6692e2c84  gcc/LANGUAGES
! 6ee67b347506f839bbf836f6cde921de  gcc/Makefile.in
  ec6799501b2eb2923d5de6a66169dbd2  gcc/ONEWS
  120659b070a9b2c969a4b75b395264a3  gcc/README.Portability
  7c2ba8bf83836f2b614b714910a10374  gcc/acinclude.m4
  ae65aa6c66dde3e0d058e94edef41159  gcc/aclocal.m4
  9063d23e571fcde20283b9f34d5e3422  gcc/ada/9drpc.adb
! c49f99b2fd36006d2e53acc3c1605e8a  gcc/ada/ChangeLog
  683be0b07dc4f64f118fd5e8ae9cb30d  gcc/ada/ChangeLog-2001
  7aff25efb203be4136b8776cdc812956  gcc/ada/ChangeLog-2002
  cd2379152000f40157d349018fb9364d  gcc/ada/ChangeLog-2003
--- 589,607 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 2bd49d1a54a9dcc97dc57e3f2dd7913f  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
  36698274bb69e2ada20f5cc434f3caa5  gcc/FSFChangeLog.11
  2e751e6a73ca8d8a30485ca6692e2c84  gcc/LANGUAGES
! 760f59329fa3429abb9ba9a4f3531866  gcc/Makefile.in
  ec6799501b2eb2923d5de6a66169dbd2  gcc/ONEWS
  120659b070a9b2c969a4b75b395264a3  gcc/README.Portability
  7c2ba8bf83836f2b614b714910a10374  gcc/acinclude.m4
  ae65aa6c66dde3e0d058e94edef41159  gcc/aclocal.m4
  9063d23e571fcde20283b9f34d5e3422  gcc/ada/9drpc.adb
! 9d341465f2f8769b221d072f81309b81  gcc/ada/ChangeLog
  683be0b07dc4f64f118fd5e8ae9cb30d  gcc/ada/ChangeLog-2001
  7aff25efb203be4136b8776cdc812956  gcc/ada/ChangeLog-2002
  cd2379152000f40157d349018fb9364d  gcc/ada/ChangeLog-2003
*************** b2c8517ffdfa5ed42812bba69004f6f2  gcc/ad
*** 1604,1625 ****
  d7eca93022b3adc8f4a61dbe910e95d2  gcc/ada/g-zspche.adb
  b45654446bc74bb68ae4adef78906e9b  gcc/ada/g-zspche.ads
  c97edf7ce39a908dcaec55eb49d0abee  gcc/ada/g-zstspl.ads
! 33d32de74caf3d86db4b781e675dd2aa  gcc/ada/gcc-interface/Make-lang.in
! c3a36a4f67d6315f71676376371ac522  gcc/ada/gcc-interface/Makefile.in
  d47cdfac076a7e474979da4139393b39  gcc/ada/gcc-interface/ada-tree.def
  d47dc0c31f258f672bcecc576e71a514  gcc/ada/gcc-interface/ada-tree.h
  51c95420b5900990141d2e5705582197  gcc/ada/gcc-interface/ada.h
  4cbfd794461da0feb1b8661ec623b6c6  gcc/ada/gcc-interface/config-lang.in
  66402a51fb406b0ffee8ab719c87e33a  gcc/ada/gcc-interface/cuintp.c
! 1c72cc459da519f66d71bf281c490d50  gcc/ada/gcc-interface/decl.c
  c413d4d50e9563859f4d751a4404b705  gcc/ada/gcc-interface/gadaint.h
  b5f692cb8a996200b0b74368d2ea8767  gcc/ada/gcc-interface/gigi.h
  551c6c4d04e4f9c63340554e826c7bed  gcc/ada/gcc-interface/lang-specs.h
  f4ffb206fe0e51f054ea66a5daaa32ff  gcc/ada/gcc-interface/lang.opt
  4f4f9150d2ee818c9bfeb1525b8bc214  gcc/ada/gcc-interface/misc.c
  5ff1273ef9fbbe42050bdee94a4c59b5  gcc/ada/gcc-interface/targtyps.c
! 21af3add320aaf7c84678d5c1fdca626  gcc/ada/gcc-interface/trans.c
! 4c50a86cef4642b81a6362663f241efb  gcc/ada/gcc-interface/utils.c
  9040b9059d947fab18e31e45917c903f  gcc/ada/gcc-interface/utils2.c
  68b13816c95338a03ea3b161c2099ea1  gcc/ada/get_scos.adb
  baa8fdaf8d693eb6c5a7e42944887584  gcc/ada/get_scos.ads
--- 1605,1626 ----
  d7eca93022b3adc8f4a61dbe910e95d2  gcc/ada/g-zspche.adb
  b45654446bc74bb68ae4adef78906e9b  gcc/ada/g-zspche.ads
  c97edf7ce39a908dcaec55eb49d0abee  gcc/ada/g-zstspl.ads
! 7da1eddb6818aab1e96c9ef9f698372a  gcc/ada/gcc-interface/Make-lang.in
! a527b75e1a7bffd7532a43e2fc85b74a  gcc/ada/gcc-interface/Makefile.in
  d47cdfac076a7e474979da4139393b39  gcc/ada/gcc-interface/ada-tree.def
  d47dc0c31f258f672bcecc576e71a514  gcc/ada/gcc-interface/ada-tree.h
  51c95420b5900990141d2e5705582197  gcc/ada/gcc-interface/ada.h
  4cbfd794461da0feb1b8661ec623b6c6  gcc/ada/gcc-interface/config-lang.in
  66402a51fb406b0ffee8ab719c87e33a  gcc/ada/gcc-interface/cuintp.c
! 1c5be3f286ea70975ab0dcabf83e082a  gcc/ada/gcc-interface/decl.c
  c413d4d50e9563859f4d751a4404b705  gcc/ada/gcc-interface/gadaint.h
  b5f692cb8a996200b0b74368d2ea8767  gcc/ada/gcc-interface/gigi.h
  551c6c4d04e4f9c63340554e826c7bed  gcc/ada/gcc-interface/lang-specs.h
  f4ffb206fe0e51f054ea66a5daaa32ff  gcc/ada/gcc-interface/lang.opt
  4f4f9150d2ee818c9bfeb1525b8bc214  gcc/ada/gcc-interface/misc.c
  5ff1273ef9fbbe42050bdee94a4c59b5  gcc/ada/gcc-interface/targtyps.c
! e67f1bfaa7b0ac202794040f0db1a104  gcc/ada/gcc-interface/trans.c
! 848028df3bc90b31b64af1ad23e1cb3a  gcc/ada/gcc-interface/utils.c
  9040b9059d947fab18e31e45917c903f  gcc/ada/gcc-interface/utils2.c
  68b13816c95338a03ea3b161c2099ea1  gcc/ada/get_scos.adb
  baa8fdaf8d693eb6c5a7e42944887584  gcc/ada/get_scos.ads
*************** eb4c8837635c9eb468f723f079536a7c  gcc/ad
*** 2597,2632 ****
  d36e0605a7f68f541648e49af4e5d6ef  gcc/ada/symbols.adb
  28a22b1808efb5a1733162bd32c60ad3  gcc/ada/symbols.ads
  e26b70f48ee4c94add7aaf357194e4e2  gcc/ada/sysdep.c
! 2c55aa57650eb30a3706ca849b877bd5  gcc/ada/system-aix.ads
! 846096ddc8a78e9ca82332076253fab8  gcc/ada/system-aix64.ads
  82c74a2538796d1beeca8da504a6d7e4  gcc/ada/system-darwin-ppc.ads
! 1e1ff18fe6ca56610e9441eb07bf857c  gcc/ada/system-darwin-ppc64.ads
  c66a9b1480366153de25dd6bfaaf7667  gcc/ada/system-darwin-x86.ads
  4812519f69754a96fd52969c31dc2f22  gcc/ada/system-darwin-x86_64.ads
  3862b6839d964129c4af05da88d94e00  gcc/ada/system-freebsd-x86.ads
  8d88642b253a265dbb4dc0ca120b8893  gcc/ada/system-freebsd-x86_64.ads
! 38ab27e275dcb6e5e236ba7fc92143ec  gcc/ada/system-hpux-ia64.ads
! ce52ac32fcc58c55a854adcd8ed6ad21  gcc/ada/system-hpux.ads
! c922e708900b8f3272f42cebafe7e309  gcc/ada/system-linux-alpha.ads
! ee9d5ebb7e4c499c0cf83a2c365eaefe  gcc/ada/system-linux-armeb.ads
  cce6f082de2921a93f6df9f5cfc8bf27  gcc/ada/system-linux-armel.ads
! d55a5e20cf1ab4923e03b0a1cc388adb  gcc/ada/system-linux-hppa.ads
! 1db83d650d7ee4be0c13b7e48dad3ac4  gcc/ada/system-linux-ia64.ads
! da3ec01413885aa0914988b820af2f01  gcc/ada/system-linux-mips.ads
! d1752a99af1eede6644030235c70c15f  gcc/ada/system-linux-mips64el.ads
! d46860c67f7a1cb1133c0ee41f8ca418  gcc/ada/system-linux-mipsel.ads
! 7faee0bcd9961b0b9fe8366a372a656b  gcc/ada/system-linux-ppc.ads
! 62d514d6c90ba5d68cdbb05552c5c38e  gcc/ada/system-linux-ppc64.ads
! 7d21f556610d530f88fffd1ab083b996  gcc/ada/system-linux-s390.ads
! 4cf1d83ecef88dd9c32572e00758fe43  gcc/ada/system-linux-s390x.ads
! 10397052685e8154464d29d0be7459a5  gcc/ada/system-linux-sh4.ads
! c19b626467201069ad26262087877992  gcc/ada/system-linux-sparc.ads
! 994d483a54cc88b7fec882095ca2d111  gcc/ada/system-linux-sparcv9.ads
  ef58ee3a78c178181723c67ac440b9e5  gcc/ada/system-linux-x86.ads
  ceaf32efe91b246df0f99e4cef635b6b  gcc/ada/system-linux-x86_64.ads
  9d9a1fdc49600dcf4517d23cc7831ef9  gcc/ada/system-mingw-x86_64.ads
  f8c8f6aa08c1e089ecf805eefdf14d56  gcc/ada/system-mingw.ads
! 3dbc2559414a97bc117a70ffc35c316d  gcc/ada/system-rtems.ads
  79b2cde4b268335c42e8ba5a6bdcd106  gcc/ada/system-solaris-sparc.ads
  7162270cd0dcdd61d004164395ee081f  gcc/ada/system-solaris-sparcv9.ads
  8b041f399d0b1f2dea8a823d8d969edb  gcc/ada/system-solaris-x86.ads
--- 2598,2632 ----
  d36e0605a7f68f541648e49af4e5d6ef  gcc/ada/symbols.adb
  28a22b1808efb5a1733162bd32c60ad3  gcc/ada/symbols.ads
  e26b70f48ee4c94add7aaf357194e4e2  gcc/ada/sysdep.c
! 803bb7ee83aec5b269e307a19c482d2e  gcc/ada/system-aix.ads
! 48bb56164417b8d0de6651e1e3b20250  gcc/ada/system-aix64.ads
  82c74a2538796d1beeca8da504a6d7e4  gcc/ada/system-darwin-ppc.ads
! 6c07c3c5c9702bc81db73c99ebd78dcc  gcc/ada/system-darwin-ppc64.ads
  c66a9b1480366153de25dd6bfaaf7667  gcc/ada/system-darwin-x86.ads
  4812519f69754a96fd52969c31dc2f22  gcc/ada/system-darwin-x86_64.ads
  3862b6839d964129c4af05da88d94e00  gcc/ada/system-freebsd-x86.ads
  8d88642b253a265dbb4dc0ca120b8893  gcc/ada/system-freebsd-x86_64.ads
! 53b570f72d92b70df5f8de1033ed819f  gcc/ada/system-hpux-ia64.ads
! 9ac68a88d141ac8fd8caa58f085099cb  gcc/ada/system-hpux.ads
! a79e95b80050e9e7fc7be8ce97c08812  gcc/ada/system-linux-alpha.ads
! e5b1c5268135264c234b67bc7b71c246  gcc/ada/system-linux-armeb.ads
  cce6f082de2921a93f6df9f5cfc8bf27  gcc/ada/system-linux-armel.ads
! 86aa5d70fecffa5be77914308607e022  gcc/ada/system-linux-hppa.ads
! c96edc9655e04bdab50e20e8dbdfb754  gcc/ada/system-linux-ia64.ads
! 64f78a23b4425bf3d70300fd6ba6d9b2  gcc/ada/system-linux-mips.ads
! 3789df318ce14888f67457d08f9d18f9  gcc/ada/system-linux-mips64el.ads
! 9bd69b92554dc16aa7b2c9d99afe3c40  gcc/ada/system-linux-mipsel.ads
! 0098fc2fb20b4183d936da8a8c15fa02  gcc/ada/system-linux-ppc.ads
! b32a419ea6940429578daa01bb39f25e  gcc/ada/system-linux-s390.ads
! 4c4bab32e2e40d9b416f81b12b8b011a  gcc/ada/system-linux-s390x.ads
! 223c89f7f382c0185a56ab39e7f33ac6  gcc/ada/system-linux-sh4.ads
! cb91bf2a390169cf35e38a5a1c18950e  gcc/ada/system-linux-sparc.ads
! cbab47b3cab3e91194f83a2c215b2b96  gcc/ada/system-linux-sparcv9.ads
  ef58ee3a78c178181723c67ac440b9e5  gcc/ada/system-linux-x86.ads
  ceaf32efe91b246df0f99e4cef635b6b  gcc/ada/system-linux-x86_64.ads
  9d9a1fdc49600dcf4517d23cc7831ef9  gcc/ada/system-mingw-x86_64.ads
  f8c8f6aa08c1e089ecf805eefdf14d56  gcc/ada/system-mingw.ads
! 70d05d208c326927e2b53500f9b4a187  gcc/ada/system-rtems.ads
  79b2cde4b268335c42e8ba5a6bdcd106  gcc/ada/system-solaris-sparc.ads
  7162270cd0dcdd61d004164395ee081f  gcc/ada/system-solaris-sparcv9.ads
  8b041f399d0b1f2dea8a823d8d969edb  gcc/ada/system-solaris-x86.ads
*************** e5c3b54925e6e404c11e8a92570e0365  gcc/al
*** 2705,2746 ****
  a1a14d07c1b6896b6db92c4e57e0b0ba  gcc/alias.h
  011484fc6e4e8c092886ac831906a2f9  gcc/alloc-pool.c
  9d9d811126a83d79287b250b5d8704c7  gcc/alloc-pool.h
! d3a26129abf7137488d3dcbcfd2a0dc4  gcc/asan.c
  6dfcd79551ac61c32d93cb16351d316f  gcc/asan.h
  089b62ecd1f12197e1aa878b0b1a2274  gcc/attribs.c
  4fa0ea38782a314a45a330ae2179368a  gcc/attribs.h
  08da392176c469f2c84c866f7e4d53a2  gcc/auto-inc-dec.c
! 9f7fd4b771b193fbc230f99bcb27e72d  gcc/auto-profile.c
  bbadc045f31bde62eb1120371e19cd07  gcc/auto-profile.h
  f4dab966eeae6075d17599cf784732e4  gcc/basic-block.h
! 0549a751641685ef1da0b43b20e42165  gcc/bb-reorder.c
  2d1e763819e8d86829f561a172a35265  gcc/bb-reorder.h
  578799339be1d4cd368d48b3d2c019c1  gcc/bitmap.c
  44b25165542343bfd30f90f8912dcf63  gcc/bitmap.h
  4845dc480ec80ff08fd9b0a858efa5b7  gcc/bt-load.c
  db081d76b372e7afd7004ad52bbe9964  gcc/builtin-attrs.def
  83a12810cfce380668149ac53d6fe02e  gcc/builtin-types.def
! 1f5ed5f4e9f1ac44baeff8d1ecf276d2  gcc/builtins.c
  bcc91aadefbc7406d6ff24e7ecd29219  gcc/builtins.def
  63ec5d056e40b5cb35c77479668696ca  gcc/builtins.h
! 26fb3c032ac53a37c6bd2a9dbfa88766  gcc/c-family/ChangeLog
  ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-family/ChangeLog.gimple-classes
  bf722634f60d54d84b1483c15c649ee0  gcc/c-family/array-notation-common.c
! 17dd72cbe914028d76749ed5cc130403  gcc/c-family/c-ada-spec.c
  150f75f19875f57820f377ad8834821d  gcc/c-family/c-ada-spec.h
  173ec359583c26887ac3a0b6122befe4  gcc/c-family/c-cilkplus.c
! ecc651c0782e4c87b6cbf19e9ed8740d  gcc/c-family/c-common.c
  001d3042c2fd38b697f88747e2a39442  gcc/c-family/c-common.def
  6abd8e92e44e130c23a1d654a054ce68  gcc/c-family/c-common.h
! 43ebca50428e5e5e338d751c35ec6787  gcc/c-family/c-cppbuiltin.c
  c927eff529e8683eb3b6643cf576c4a5  gcc/c-family/c-dump.c
  fda8d88ee72923ee531c2df5b2d75b86  gcc/c-family/c-format.c
  bc77fba0203f22724ffc1c5c56a12009  gcc/c-family/c-format.h
! 0e6b978147c2895b8308ff8e19e96d69  gcc/c-family/c-gimplify.c
  50bd4d7bb76e4f0d32c18f64f72e6fe1  gcc/c-family/c-lex.c
  b6da13c351a98f2b2aaec6ec0c24f111  gcc/c-family/c-objc.h
! 4e452aa651fcb15d72d456b0be512b38  gcc/c-family/c-omp.c
! 329b885cb62b39fe9ed30f4f77372795  gcc/c-family/c-opts.c
  653c6ae1500794ccc5aada718a0438be  gcc/c-family/c-pch.c
  dd702304e1aace6e7dad540b90e7ab45  gcc/c-family/c-ppoutput.c
  0227e10d7eebbb1805755e5e7d30cff3  gcc/c-family/c-pragma.c
--- 2705,2746 ----
  a1a14d07c1b6896b6db92c4e57e0b0ba  gcc/alias.h
  011484fc6e4e8c092886ac831906a2f9  gcc/alloc-pool.c
  9d9d811126a83d79287b250b5d8704c7  gcc/alloc-pool.h
! c31339f70858d9e55fbebf5ec6976b13  gcc/asan.c
  6dfcd79551ac61c32d93cb16351d316f  gcc/asan.h
  089b62ecd1f12197e1aa878b0b1a2274  gcc/attribs.c
  4fa0ea38782a314a45a330ae2179368a  gcc/attribs.h
  08da392176c469f2c84c866f7e4d53a2  gcc/auto-inc-dec.c
! 282594844601e41e52b94907b944b428  gcc/auto-profile.c
  bbadc045f31bde62eb1120371e19cd07  gcc/auto-profile.h
  f4dab966eeae6075d17599cf784732e4  gcc/basic-block.h
! 07eb4121fe5cb29a05468019fe312f10  gcc/bb-reorder.c
  2d1e763819e8d86829f561a172a35265  gcc/bb-reorder.h
  578799339be1d4cd368d48b3d2c019c1  gcc/bitmap.c
  44b25165542343bfd30f90f8912dcf63  gcc/bitmap.h
  4845dc480ec80ff08fd9b0a858efa5b7  gcc/bt-load.c
  db081d76b372e7afd7004ad52bbe9964  gcc/builtin-attrs.def
  83a12810cfce380668149ac53d6fe02e  gcc/builtin-types.def
! 74a7696dc7cf5847172cbd2af7d1373b  gcc/builtins.c
  bcc91aadefbc7406d6ff24e7ecd29219  gcc/builtins.def
  63ec5d056e40b5cb35c77479668696ca  gcc/builtins.h
! 2dd6a1af47b456d61a6f15ce75ecd49a  gcc/c-family/ChangeLog
  ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-family/ChangeLog.gimple-classes
  bf722634f60d54d84b1483c15c649ee0  gcc/c-family/array-notation-common.c
! c600bbdc1c796118d52414c55c2db688  gcc/c-family/c-ada-spec.c
  150f75f19875f57820f377ad8834821d  gcc/c-family/c-ada-spec.h
  173ec359583c26887ac3a0b6122befe4  gcc/c-family/c-cilkplus.c
! ad2ee4494fef751bee99130bd6439067  gcc/c-family/c-common.c
  001d3042c2fd38b697f88747e2a39442  gcc/c-family/c-common.def
  6abd8e92e44e130c23a1d654a054ce68  gcc/c-family/c-common.h
! 713e29bb56842a22cb36c18b2a52cce2  gcc/c-family/c-cppbuiltin.c
  c927eff529e8683eb3b6643cf576c4a5  gcc/c-family/c-dump.c
  fda8d88ee72923ee531c2df5b2d75b86  gcc/c-family/c-format.c
  bc77fba0203f22724ffc1c5c56a12009  gcc/c-family/c-format.h
! 2db72c636b5adc6243fde93faf7e6a53  gcc/c-family/c-gimplify.c
  50bd4d7bb76e4f0d32c18f64f72e6fe1  gcc/c-family/c-lex.c
  b6da13c351a98f2b2aaec6ec0c24f111  gcc/c-family/c-objc.h
! 079f7b06ddc8eeee4f8f21790c27f42a  gcc/c-family/c-omp.c
! 2adc45deab71e1d17c690b8994ba2f6d  gcc/c-family/c-opts.c
  653c6ae1500794ccc5aada718a0438be  gcc/c-family/c-pch.c
  dd702304e1aace6e7dad540b90e7ab45  gcc/c-family/c-ppoutput.c
  0227e10d7eebbb1805755e5e7d30cff3  gcc/c-family/c-pragma.c
*************** e33ae94e0bed0bc72db4a86cb15b9d9d  gcc/c-
*** 2757,2780 ****
  8a8f0a0d5698aeedf6f8fa5b35377db3  gcc/c-family/cilk.c
  1972187c057ea69a7cfcc47f24a1172d  gcc/c-family/cppspec.c
  fad79055080372de2027c186978488a5  gcc/c-family/stub-objc.c
! 4541d2759a7ade06e6787788eaa5be51  gcc/c/ChangeLog
  b615986ca13fc7c58bc8761b9dbc16ac  gcc/c/Make-lang.in
  7719d892de262867ca62f7fb2733fa91  gcc/c/c-array-notation.c
  a6775531320fcc3d086198f057180920  gcc/c/c-aux-info.c
  3d993a5faaabf6694f64cf4dba56a6b3  gcc/c/c-convert.c
! a05e07d95ce8484cef5c788ec949ed6d  gcc/c/c-decl.c
  03ac4d15416ac9293584217af261c4ad  gcc/c/c-errors.c
  1876a953660c55f216e3ab95a07053b6  gcc/c/c-lang.c
  fb4bf29fb3a70020f0071cae1b59d44a  gcc/c/c-lang.h
! ee7a01239c662b2ebad879087194105a  gcc/c/c-objc-common.c
  4dd9b52f4d06e68ead6c804dda10ed3e  gcc/c/c-objc-common.h
! acd5d2b9db6c69827b70671286cb9723  gcc/c/c-parser.c
  f473d33183ef7239386574b7d0d5f1e4  gcc/c/c-tree.h
! 5c4c60e471c64b4e1b20dcb2229639a6  gcc/c/c-typeck.c
  cf549ade4766d868f24388f42f6f2ad3  gcc/c/config-lang.in
  88cc221f8de100197c5e367a941abb72  gcc/c/gccspec.c
  ae949ec05897086935463455df7d1b7f  gcc/caller-save.c
! 02dfa7e6122f8cc2ebdb7708e8fd75c4  gcc/calls.c
  33274dc1f95e6ba10dbc6032c5b16e26  gcc/calls.h
  a78bbf9a5609b4d3012ee024d26497e6  gcc/ccmp.c
  12bee97b0c70f2098bfbb9a0286a8d07  gcc/ccmp.h
--- 2757,2780 ----
  8a8f0a0d5698aeedf6f8fa5b35377db3  gcc/c-family/cilk.c
  1972187c057ea69a7cfcc47f24a1172d  gcc/c-family/cppspec.c
  fad79055080372de2027c186978488a5  gcc/c-family/stub-objc.c
! 185bfc0470feb6f27413e988100fc969  gcc/c/ChangeLog
  b615986ca13fc7c58bc8761b9dbc16ac  gcc/c/Make-lang.in
  7719d892de262867ca62f7fb2733fa91  gcc/c/c-array-notation.c
  a6775531320fcc3d086198f057180920  gcc/c/c-aux-info.c
  3d993a5faaabf6694f64cf4dba56a6b3  gcc/c/c-convert.c
! 1fbc0b7401ae293ea7a3a2e568290fb4  gcc/c/c-decl.c
  03ac4d15416ac9293584217af261c4ad  gcc/c/c-errors.c
  1876a953660c55f216e3ab95a07053b6  gcc/c/c-lang.c
  fb4bf29fb3a70020f0071cae1b59d44a  gcc/c/c-lang.h
! 8e0d737d72ccd26b18b38a7f63ad0fd6  gcc/c/c-objc-common.c
  4dd9b52f4d06e68ead6c804dda10ed3e  gcc/c/c-objc-common.h
! 443162359bfa964fbf454a5b15c4f283  gcc/c/c-parser.c
  f473d33183ef7239386574b7d0d5f1e4  gcc/c/c-tree.h
! 7397c10a4b50b49a1b16fc7a8a52d04b  gcc/c/c-typeck.c
  cf549ade4766d868f24388f42f6f2ad3  gcc/c/config-lang.in
  88cc221f8de100197c5e367a941abb72  gcc/c/gccspec.c
  ae949ec05897086935463455df7d1b7f  gcc/caller-save.c
! c0acd9873634622516fe4ada5fec3edb  gcc/calls.c
  33274dc1f95e6ba10dbc6032c5b16e26  gcc/calls.h
  a78bbf9a5609b4d3012ee024d26497e6  gcc/ccmp.c
  12bee97b0c70f2098bfbb9a0286a8d07  gcc/ccmp.h
*************** eb3091c13cdb698ee42716904d5d8d1b  gcc/cf
*** 2798,2808 ****
  e47507dd18b9e85279ee24e83bc8330b  gcc/cfgloopmanip.h
  cd67618d45d91ba55c0a5e25b3c94c53  gcc/cfgrtl.c
  ef270e91bc468cbc2129060ad03ac5b4  gcc/cfgrtl.h
! 79bddd97aa4e91b10dfcb0c2189d265d  gcc/cgraph.c
! 3296a4cdd85e40ada93f8bc1d6f94d35  gcc/cgraph.h
  e7c4c02bfa4af237094af1db95864490  gcc/cgraphbuild.c
! 6ed7977b27168c8c0ddbfa8204c41ab9  gcc/cgraphclones.c
! 9c80b78e5d9f44ffc1e2542f78bf662d  gcc/cgraphunit.c
  7199031ce3bff9e1850cac1186ba73d3  gcc/chkp-builtins.def
  435e1ecafd228ed77006349b38348f08  gcc/cif-code.def
  e744cfbcfc6ebe3a0beec02a77db2277  gcc/cilk-builtins.def
--- 2798,2808 ----
  e47507dd18b9e85279ee24e83bc8330b  gcc/cfgloopmanip.h
  cd67618d45d91ba55c0a5e25b3c94c53  gcc/cfgrtl.c
  ef270e91bc468cbc2129060ad03ac5b4  gcc/cfgrtl.h
! 7cad47405de675be0c534569703df4eb  gcc/cgraph.c
! 3d18eeac9a51c4da349b1c80d896bd10  gcc/cgraph.h
  e7c4c02bfa4af237094af1db95864490  gcc/cgraphbuild.c
! c81bf13900a00e0f81f77cc826f73da8  gcc/cgraphclones.c
! baec1e20e5abfbb7c7c3f22c91b9f7e6  gcc/cgraphunit.c
  7199031ce3bff9e1850cac1186ba73d3  gcc/chkp-builtins.def
  435e1ecafd228ed77006349b38348f08  gcc/cif-code.def
  e744cfbcfc6ebe3a0beec02a77db2277  gcc/cilk-builtins.def
*************** a9cd540469e955beccf9632d0e310a9a  gcc/co
*** 2816,2824 ****
  84cb63ea4646d658deba146c8d351bd3  gcc/collect2.c
  488ba67f95318d2251aa33ef1924beac  gcc/collect2.h
  217a4fcc8df81d92ef7132e9139c1a09  gcc/combine-stack-adj.c
! c369a8e8bc8366ed352c8198cfdf7e9c  gcc/combine.c
  4fa636ffb9d6ed2c292cece53b4eae94  gcc/common.md
! fd3097a8127cc7dd2bb42824c1b371fe  gcc/common.opt
  5230030789eabcc9ad9468a26ad03fed  gcc/common/common-target-def.h
  51bba2c2fc28ab5f539fdce790ce2778  gcc/common/common-target.def
  292fc88bf83fdd6b897b311e56c68772  gcc/common/common-target.h
--- 2816,2824 ----
  84cb63ea4646d658deba146c8d351bd3  gcc/collect2.c
  488ba67f95318d2251aa33ef1924beac  gcc/collect2.h
  217a4fcc8df81d92ef7132e9139c1a09  gcc/combine-stack-adj.c
! 9092e89af938ffece2b347324468f9d5  gcc/combine.c
  4fa636ffb9d6ed2c292cece53b4eae94  gcc/common.md
! 9507ddc99aa3b216462a529cb99b166a  gcc/common.opt
  5230030789eabcc9ad9468a26ad03fed  gcc/common/common-target-def.h
  51bba2c2fc28ab5f539fdce790ce2778  gcc/common/common-target.def
  292fc88bf83fdd6b897b311e56c68772  gcc/common/common-target.h
*************** c6bc993ffca29ad40199ac725e4129ba  gcc/co
*** 2838,2844 ****
  de21aba184d6fe01b1425fafbf9b42f4  gcc/common/config/fr30/fr30-common.c
  a99802d2cdaf1f0d7b772a0939cc400c  gcc/common/config/frv/frv-common.c
  a5a291896bad4cba1613699bb74d540d  gcc/common/config/h8300/h8300-common.c
! a9399bfb1c1169e4f02c4bd4bedf4969  gcc/common/config/i386/i386-common.c
  8b574363ccc35dfa73506df1ce7f1623  gcc/common/config/ia64/ia64-common.c
  9f8fc63eb5bcb2ad5c5d8fff15be387d  gcc/common/config/iq2000/iq2000-common.c
  1faf97bdbb08d4d70d2f83f62574310d  gcc/common/config/lm32/lm32-common.c
--- 2838,2844 ----
  de21aba184d6fe01b1425fafbf9b42f4  gcc/common/config/fr30/fr30-common.c
  a99802d2cdaf1f0d7b772a0939cc400c  gcc/common/config/frv/frv-common.c
  a5a291896bad4cba1613699bb74d540d  gcc/common/config/h8300/h8300-common.c
! aa7756ad72e0a0d66b577afc1da83a92  gcc/common/config/i386/i386-common.c
  8b574363ccc35dfa73506df1ce7f1623  gcc/common/config/ia64/ia64-common.c
  9f8fc63eb5bcb2ad5c5d8fff15be387d  gcc/common/config/iq2000/iq2000-common.c
  1faf97bdbb08d4d70d2f83f62574310d  gcc/common/config/lm32/lm32-common.c
*************** c9565e02aca3c43309d43922da62003e  gcc/co
*** 2872,2878 ****
  5d43e788e01591619ace3348388982da  gcc/compare-elim.c
  cc8d9057e6fbfadc93614758de30ffad  gcc/conditions.h
  80a8f1f74c1dd616eebe2da89060b9dc  gcc/config.build
! 5f5a65c28526062108150256f53af228  gcc/config.gcc
  244bdab0d1156cd2f747825fba6d5dac  gcc/config.host
  f5ceb6c214b586e3918824b4dfb538bf  gcc/config.in
  8e697813dc96ca90f5d0f4c196efe2cc  gcc/config/README
--- 2872,2878 ----
  5d43e788e01591619ace3348388982da  gcc/compare-elim.c
  cc8d9057e6fbfadc93614758de30ffad  gcc/conditions.h
  80a8f1f74c1dd616eebe2da89060b9dc  gcc/config.build
! 0765d96472d29b512cd1c413424399b9  gcc/config.gcc
  244bdab0d1156cd2f747825fba6d5dac  gcc/config.host
  f5ceb6c214b586e3918824b4dfb538bf  gcc/config.in
  8e697813dc96ca90f5d0f4c196efe2cc  gcc/config/README
*************** f8c1a9fcf6adf497749d8607a7a58e7c  gcc/co
*** 2882,2887 ****
--- 2882,2888 ----
  93452463f3c41e0d9d4e48324afb3a73  gcc/config/aarch64/aarch64-cost-tables.h
  6d02227df25c9075c02d051af3dc7359  gcc/config/aarch64/aarch64-elf-raw.h
  bfcf3f8c0dd400dfd0f15978ce7e7244  gcc/config/aarch64/aarch64-elf.h
+ c107fe312939ec6f04e3e951ef5d6d43  gcc/config/aarch64/aarch64-freebsd.h
  2b6a1351ae1b75c9c9a7861cc7cf6a2d  gcc/config/aarch64/aarch64-ldpstp.md
  d44e5d845e0f5770fd1660e697731bbf  gcc/config/aarch64/aarch64-linux.h
  39c4ec77ec9e285a5ee6e1e116228c27  gcc/config/aarch64/aarch64-modes.def
*************** f887ce56cadae0b7a8909f2573c4002a  gcc/co
*** 2890,2900 ****
  61a8b9b2c10a7c456b0e9a52148db81e  gcc/config/aarch64/aarch64-protos.h
  73a59990442b890656eb4f57e77b2f8f  gcc/config/aarch64/aarch64-simd-builtin-types.def
  29dab6eef8258c75ae00b6122cd18d2d  gcc/config/aarch64/aarch64-simd-builtins.def
! e5c2aff63546bca5363564fef497a57d  gcc/config/aarch64/aarch64-simd.md
  0f6f9335f7a3655e0e98df770d4e2ade  gcc/config/aarch64/aarch64-tune.md
! 03ff67c9c14256570f4f6b7094b0f3bb  gcc/config/aarch64/aarch64.c
  376ede8fe91e59b9ed7b53d9c6ededf2  gcc/config/aarch64/aarch64.h
! 822e1837a2831dd72411898b543003cf  gcc/config/aarch64/aarch64.md
  cd2f55e144d635b9e23062d3cbbf59ab  gcc/config/aarch64/aarch64.opt
  033496378429ba8283ed14924bb56fca  gcc/config/aarch64/arm_acle.h
  6b19b41154a79cb85313ca10c6a26dd5  gcc/config/aarch64/arm_neon.h
--- 2891,2901 ----
  61a8b9b2c10a7c456b0e9a52148db81e  gcc/config/aarch64/aarch64-protos.h
  73a59990442b890656eb4f57e77b2f8f  gcc/config/aarch64/aarch64-simd-builtin-types.def
  29dab6eef8258c75ae00b6122cd18d2d  gcc/config/aarch64/aarch64-simd-builtins.def
! fc4e1dbfd07bf450d0c9175984c111f0  gcc/config/aarch64/aarch64-simd.md
  0f6f9335f7a3655e0e98df770d4e2ade  gcc/config/aarch64/aarch64-tune.md
! b58fc07197bb197aa74fef4126b65895  gcc/config/aarch64/aarch64.c
  376ede8fe91e59b9ed7b53d9c6ededf2  gcc/config/aarch64/aarch64.h
! 63f0810dde26bfce519cb7b305e03b18  gcc/config/aarch64/aarch64.md
  cd2f55e144d635b9e23062d3cbbf59ab  gcc/config/aarch64/aarch64.opt
  033496378429ba8283ed14924bb56fca  gcc/config/aarch64/arm_acle.h
  6b19b41154a79cb85313ca10c6a26dd5  gcc/config/aarch64/arm_neon.h
*************** d6c2521a147e4423ebabfc83e83517e9  gcc/co
*** 2907,2912 ****
--- 2908,2914 ----
  fdc2e634ca267aa2006c7d036015d75d  gcc/config/aarch64/iterators.md
  980328b815546bd66741288840da6308  gcc/config/aarch64/predicates.md
  1025673e1623cb34c00dd1b9ccb32e2d  gcc/config/aarch64/t-aarch64
+ 0009b53648df6aa7d54ca692f1ee21e7  gcc/config/aarch64/t-aarch64-freebsd
  ca75ca8f7ebc7d5e2e82afceb4c64566  gcc/config/aarch64/t-aarch64-linux
  12431958587d480e944b7caac5ab6704  gcc/config/aarch64/thunderx.md
  488f4d4a08586e03ef8770eb887f159f  gcc/config/alpha/alpha-modes.def
*************** fde6fc7bb4c6ccbd7f4cf863a1c9312a  gcc/co
*** 2955,2961 ****
  b4462319c9c2a304483d6ff2ece72cb0  gcc/config/arm/aarch-cost-tables.h
  5a16d60153c314e0887fbdb81904f47c  gcc/config/arm/aout.h
  3d5875fc1a3934e3a2bc9b5ff1e0c7bc  gcc/config/arm/arm-arches.def
! a5d1af6eb86c00c81345196ba782a3b2  gcc/config/arm/arm-builtins.c
  87927edaa3cae9dd7124803ab8cbbcbb  gcc/config/arm/arm-c.c
  2efc63fb617b7d4dfb77f844de77abc5  gcc/config/arm/arm-cores.def
  cd617b1a4d195f4d1303e1beebea9d32  gcc/config/arm/arm-fixed.md
--- 2957,2963 ----
  b4462319c9c2a304483d6ff2ece72cb0  gcc/config/arm/aarch-cost-tables.h
  5a16d60153c314e0887fbdb81904f47c  gcc/config/arm/aout.h
  3d5875fc1a3934e3a2bc9b5ff1e0c7bc  gcc/config/arm/arm-arches.def
! 8e528886bfab6022c0cfb8c752323f38  gcc/config/arm/arm-builtins.c
  87927edaa3cae9dd7124803ab8cbbcbb  gcc/config/arm/arm-c.c
  2efc63fb617b7d4dfb77f844de77abc5  gcc/config/arm/arm-cores.def
  cd617b1a4d195f4d1303e1beebea9d32  gcc/config/arm/arm-fixed.md
*************** b87c2c6f28fe7a1df71d6e1eb48c8931  gcc/co
*** 2964,2976 ****
  8980ae9359dfd89b544d5e5359183988  gcc/config/arm/arm-ldmstm.ml
  07e0ad1fdbbfe2dd74ae8eb788bb3130  gcc/config/arm/arm-modes.def
  349b15c3cfbf77a6cb24dadbbe38150c  gcc/config/arm/arm-opts.h
! d16c2d9d64b09775ea09de63dded7f97  gcc/config/arm/arm-protos.h
  ce7f93ea6d26ec3cf358766a81ef98ab  gcc/config/arm/arm-simd-builtin-types.def
  b3f125f2bc310c71edd705913e37b06a  gcc/config/arm/arm-tables.opt
  d96960ce9f407c23b00dc2b31c687d3f  gcc/config/arm/arm-tune.md
! d7d8f5c9e046bacce7ee18fde06a833e  gcc/config/arm/arm.c
! 382914dbe5b616efa7aa2c91b7690299  gcc/config/arm/arm.h
! 7558724f4197dac9e1befd5c0c29b18d  gcc/config/arm/arm.md
  af6244d4ae410a1d45df7bd94c8fdc1d  gcc/config/arm/arm.opt
  b7485fbe126aa58857466e2af82aff49  gcc/config/arm/arm1020e.md
  bcd69f56bb87d2a82ef61b5fee4a7448  gcc/config/arm/arm1026ejs.md
--- 2966,2978 ----
  8980ae9359dfd89b544d5e5359183988  gcc/config/arm/arm-ldmstm.ml
  07e0ad1fdbbfe2dd74ae8eb788bb3130  gcc/config/arm/arm-modes.def
  349b15c3cfbf77a6cb24dadbbe38150c  gcc/config/arm/arm-opts.h
! f16a90727368ea8538141f6d9ab8cd12  gcc/config/arm/arm-protos.h
  ce7f93ea6d26ec3cf358766a81ef98ab  gcc/config/arm/arm-simd-builtin-types.def
  b3f125f2bc310c71edd705913e37b06a  gcc/config/arm/arm-tables.opt
  d96960ce9f407c23b00dc2b31c687d3f  gcc/config/arm/arm-tune.md
! 011e8a8c3ff2fd205a80adae3f0adfc1  gcc/config/arm/arm.c
! 9b0e54dd38f8a5e900571d1c920cfe2d  gcc/config/arm/arm.h
! ddf6c620d6a0e6d3e0a9b8a2ea0f9658  gcc/config/arm/arm.md
  af6244d4ae410a1d45df7bd94c8fdc1d  gcc/config/arm/arm.opt
  b7485fbe126aa58857466e2af82aff49  gcc/config/arm/arm1020e.md
  bcd69f56bb87d2a82ef61b5fee4a7448  gcc/config/arm/arm1026ejs.md
*************** bb55086df48ee74578a9a8063456da02  gcc/co
*** 3008,3014 ****
  27111cc3e08d3b555198f7925404d7b7  gcc/config/arm/fa626te.md
  36f93e532e19bd758c65dcaaba81d056  gcc/config/arm/fa726te.md
  7e1f1764135a8855c53c0949a5b7a0f3  gcc/config/arm/fmp626.md
! 12e29df9e65b8f087eb9d12c68852f7e  gcc/config/arm/freebsd.h
  9430e602a820b0ce8ed47fdf5dc4f0a1  gcc/config/arm/genopt.sh
  52e6a4bafd72aad7af6ebe0c6d003751  gcc/config/arm/gentune.sh
  c928ed03c754bda125ad3293867b95a1  gcc/config/arm/iterators.md
--- 3010,3016 ----
  27111cc3e08d3b555198f7925404d7b7  gcc/config/arm/fa626te.md
  36f93e532e19bd758c65dcaaba81d056  gcc/config/arm/fa726te.md
  7e1f1764135a8855c53c0949a5b7a0f3  gcc/config/arm/fmp626.md
! 790ea112222087ccd2731eaa12f00d20  gcc/config/arm/freebsd.h
  9430e602a820b0ce8ed47fdf5dc4f0a1  gcc/config/arm/genopt.sh
  52e6a4bafd72aad7af6ebe0c6d003751  gcc/config/arm/gentune.sh
  c928ed03c754bda125ad3293867b95a1  gcc/config/arm/iterators.md
*************** a8147ef196117c8d7c0ce5ef4305132d  gcc/co
*** 3023,3029 ****
  4930ae39030567dac4a8171a786cb0a4  gcc/config/arm/marvell-pj4.md
  f04d431b6b538cc133807349f2db244e  gcc/config/arm/mmintrin.h
  b9b8452f432845d30b79416c3ca60580  gcc/config/arm/neon-testgen.ml
! 9d733533a20887ba9755ca329fb3d515  gcc/config/arm/neon.md
  7fdfb5a447d98a6dafc5bbcd720a1c3a  gcc/config/arm/neon.ml
  375686adb229df741752e6a11390ba19  gcc/config/arm/netbsd-elf.h
  da4e5f82a7381cc3316efac9910f6178  gcc/config/arm/predicates.md
--- 3025,3031 ----
  4930ae39030567dac4a8171a786cb0a4  gcc/config/arm/marvell-pj4.md
  f04d431b6b538cc133807349f2db244e  gcc/config/arm/mmintrin.h
  b9b8452f432845d30b79416c3ca60580  gcc/config/arm/neon-testgen.ml
! 48d80e26266d99c4068c053de9264985  gcc/config/arm/neon.md
  7fdfb5a447d98a6dafc5bbcd720a1c3a  gcc/config/arm/neon.ml
  375686adb229df741752e6a11390ba19  gcc/config/arm/netbsd-elf.h
  da4e5f82a7381cc3316efac9910f6178  gcc/config/arm/predicates.md
*************** d5cb775684bcd3804b1ff9859c0cebb8  gcc/co
*** 3037,3042 ****
--- 3039,3045 ----
  4dc427c456af5e56b1ac39bda8969af6  gcc/config/arm/t-bpabi
  e3950ec6bd159734835f8f8fb143efc6  gcc/config/arm/t-linux-androideabi
  e9bcd09a4bac438d7ae4cdcccd3e106e  gcc/config/arm/t-linux-eabi
+ c7e2c969d3355e132c146d53fc626607  gcc/config/arm/t-phoenix
  239b0dd4d6670e8f3412c02a263baaae  gcc/config/arm/t-rtems
  8b5587b33cd65efc93c934350383a82b  gcc/config/arm/t-symbian
  6d661187b1e44b2c4db3c996bc179701  gcc/config/arm/t-vxworks
*************** da9960db3d462499465cb5c5b83f22f8  gcc/co
*** 3064,3080 ****
  ec90779779d175a79a879e0eef23c779  gcc/config/avr/avr-modes.def
  2dee5a162cf1fea5e6939416117cc3a3  gcc/config/avr/avr-protos.h
  dfc1c8b9319fafe9915263132fa31de5  gcc/config/avr/avr-stdint.h
! 802d59673206dbb74de020a7066b4733  gcc/config/avr/avr.c
  6245549eebfed524b80bd507a24893be  gcc/config/avr/avr.h
! 8a50c3a4983b693c2b69fa3453a41b7f  gcc/config/avr/avr.md
! d5fbd96597aa92a0a874328fb09583fe  gcc/config/avr/avr.opt
  8ce9c1fd23a80ba5b6722768e912407e  gcc/config/avr/avrlibc.h
  8b3840ee12e663b96a02a967362a70c0  gcc/config/avr/builtins.def
  b17d04f782af6e66382c2e95d411ce17  gcc/config/avr/constraints.md
  963255a736af80590e736a5141501680  gcc/config/avr/driver-avr.c
  a37eebf7912767a83140fd9a8034429b  gcc/config/avr/elf.h
! 0ee9b55a70abe66f70fc7fbd3ee11d25  gcc/config/avr/gen-avr-mmcu-specs.c
! 15f1a2cf57d799f58d87f34bc640a03a  gcc/config/avr/gen-avr-mmcu-texi.c
  6eee6fdb7a0b5d17f13391706b99bd44  gcc/config/avr/genmultilib.awk
  1df98fd54de326af1376b8364d0f1df6  gcc/config/avr/predicates.md
  257139b0180c4e38f55b47492ca72ac4  gcc/config/avr/rtems.h
--- 3067,3083 ----
  ec90779779d175a79a879e0eef23c779  gcc/config/avr/avr-modes.def
  2dee5a162cf1fea5e6939416117cc3a3  gcc/config/avr/avr-protos.h
  dfc1c8b9319fafe9915263132fa31de5  gcc/config/avr/avr-stdint.h
! 302727e68feabf53e90fd0d9c4bd8e25  gcc/config/avr/avr.c
  6245549eebfed524b80bd507a24893be  gcc/config/avr/avr.h
! b8664378d5f092e0a7214745ffff4a3a  gcc/config/avr/avr.md
! 6db95776955870f2c2d278458363266d  gcc/config/avr/avr.opt
  8ce9c1fd23a80ba5b6722768e912407e  gcc/config/avr/avrlibc.h
  8b3840ee12e663b96a02a967362a70c0  gcc/config/avr/builtins.def
  b17d04f782af6e66382c2e95d411ce17  gcc/config/avr/constraints.md
  963255a736af80590e736a5141501680  gcc/config/avr/driver-avr.c
  a37eebf7912767a83140fd9a8034429b  gcc/config/avr/elf.h
! adbb86ec1234ef91fc052dccef4260ba  gcc/config/avr/gen-avr-mmcu-specs.c
! 74514f79c6664cf8ec07641b5c8a5ea7  gcc/config/avr/gen-avr-mmcu-texi.c
  6eee6fdb7a0b5d17f13391706b99bd44  gcc/config/avr/genmultilib.awk
  1df98fd54de326af1376b8364d0f1df6  gcc/config/avr/predicates.md
  257139b0180c4e38f55b47492ca72ac4  gcc/config/avr/rtems.h
*************** b0260f0cd056773dca07771a2bd090c9  gcc/co
*** 3241,3260 ****
  00f5f50fe98f7d529b7f5c443feb74d9  gcc/config/i386/athlon.md
  10ba948d9390ba7a11bb628d8928d747  gcc/config/i386/atom.md
  0951f51e6fda98a470f64ebe10b43cbf  gcc/config/i386/att.h
! e72f542bcc10f631fba5816f68f8073c  gcc/config/i386/avx2intrin.h
! 0bb80525a2c91a271003f8b0b79db58f  gcc/config/i386/avx512bwintrin.h
  4936c05e70cd1d20379dc5f2ce416c29  gcc/config/i386/avx512cdintrin.h
! ebe3fc6dea2a58353ff9a1d45dc1a717  gcc/config/i386/avx512dqintrin.h
  b7dc55ef9e455c09d7a6a29cc7deb0b4  gcc/config/i386/avx512erintrin.h
! ee92244e10e036c45c2015ab0ad17fd2  gcc/config/i386/avx512fintrin.h
! f2f4bce727e69a6be5787830728b778e  gcc/config/i386/avx512ifmaintrin.h
! b6eb219a4c14634fe36422f54fef8499  gcc/config/i386/avx512ifmavlintrin.h
! 43894f67eed7550cb72907d87e29e641  gcc/config/i386/avx512pfintrin.h
! 0a552f8ce6b17be0c3a9e972071912d3  gcc/config/i386/avx512vbmiintrin.h
! 90894debb86724acb98df668f588777a  gcc/config/i386/avx512vbmivlintrin.h
! 858c8c8c328514838bf9ef2630c300c8  gcc/config/i386/avx512vlbwintrin.h
! b8e6b0410552170a66ac6f7041679d64  gcc/config/i386/avx512vldqintrin.h
! 096c9b11f8873078c8463b70610cb24e  gcc/config/i386/avx512vlintrin.h
  4deaddc5cb7151363925bddc788fd6fa  gcc/config/i386/avxintrin.h
  e7b014f55eaf1884f45368d2a1e8ef24  gcc/config/i386/avxmath.h
  9a2527c55dea3cdd1caf5e2044d206f8  gcc/config/i386/bdver1.md
--- 3244,3263 ----
  00f5f50fe98f7d529b7f5c443feb74d9  gcc/config/i386/athlon.md
  10ba948d9390ba7a11bb628d8928d747  gcc/config/i386/atom.md
  0951f51e6fda98a470f64ebe10b43cbf  gcc/config/i386/att.h
! aab762ff8b934af2ebb3c56ff41de92b  gcc/config/i386/avx2intrin.h
! 1cd1ec2f53f3c03875599fca18913d30  gcc/config/i386/avx512bwintrin.h
  4936c05e70cd1d20379dc5f2ce416c29  gcc/config/i386/avx512cdintrin.h
! 32f98b9c8e1cebbcb3dd2e372fa0c1bf  gcc/config/i386/avx512dqintrin.h
  b7dc55ef9e455c09d7a6a29cc7deb0b4  gcc/config/i386/avx512erintrin.h
! beeeecd47beb939130343fa6afeb1a50  gcc/config/i386/avx512fintrin.h
! ad0b9d11e334f1a25eba721f27ea0df9  gcc/config/i386/avx512ifmaintrin.h
! eb324ab84dab73ffbbfcc51902811950  gcc/config/i386/avx512ifmavlintrin.h
! 004d37922430eeba8789678248c2d8cf  gcc/config/i386/avx512pfintrin.h
! 588eaa2fd0cd743d0a2fad62a92db6be  gcc/config/i386/avx512vbmiintrin.h
! 1ecf6722edfed2f350c4fdbb8d06e07b  gcc/config/i386/avx512vbmivlintrin.h
! eefe8d723c2e9d60d2535065bbd2f351  gcc/config/i386/avx512vlbwintrin.h
! 9e9563538f4cf8ba80978238c8c56de3  gcc/config/i386/avx512vldqintrin.h
! a990e5ab8fcf0b16d1c0c3378be7b01f  gcc/config/i386/avx512vlintrin.h
  4deaddc5cb7151363925bddc788fd6fa  gcc/config/i386/avxintrin.h
  e7b014f55eaf1884f45368d2a1e8ef24  gcc/config/i386/avxmath.h
  9a2527c55dea3cdd1caf5e2044d206f8  gcc/config/i386/bdver1.md
*************** e3501309690598fe16f5f852260fe78b  gcc/co
*** 3270,3276 ****
  8710f59dc0b3d3fc9352b6084eb1cb21  gcc/config/i386/clwbintrin.h
  01c65a5fecd17da6e227efc1fb9098ef  gcc/config/i386/constraints.md
  fca9260052870589f4127f3328ee116a  gcc/config/i386/core2.md
! 9ebab82b173d5474669d36dba7c14e32  gcc/config/i386/cpuid.h
  12a2a897a7dab501fbb6f5414a4f2737  gcc/config/i386/cross-stdarg.h
  60aa44c1384599ceac7c971e49cc7648  gcc/config/i386/crtdll.h
  34fa05333fd81f0991bdb2b762bae89e  gcc/config/i386/cygming.h
--- 3273,3279 ----
  8710f59dc0b3d3fc9352b6084eb1cb21  gcc/config/i386/clwbintrin.h
  01c65a5fecd17da6e227efc1fb9098ef  gcc/config/i386/constraints.md
  fca9260052870589f4127f3328ee116a  gcc/config/i386/core2.md
! ad77c30b4d6d584f5ea0a8ca0070025c  gcc/config/i386/cpuid.h
  12a2a897a7dab501fbb6f5414a4f2737  gcc/config/i386/cross-stdarg.h
  60aa44c1384599ceac7c971e49cc7648  gcc/config/i386/crtdll.h
  34fa05333fd81f0991bdb2b762bae89e  gcc/config/i386/cygming.h
*************** fea2485c46acea8b373670fe25787a28  gcc/co
*** 3285,3291 ****
  f8f286d859f8d73d76a735c97eb3d2ec  gcc/config/i386/djgpp.h
  a0c0c141031d5cd5396695edcf5121cc  gcc/config/i386/djgpp.opt
  edccd8464a3b27bea1396b0a5b751095  gcc/config/i386/dragonfly.h
! 16929306bf5cd13599e4a1818e75d4db  gcc/config/i386/driver-i386.c
  80a9694c4eb1d7e135e09025acbd1641  gcc/config/i386/emmintrin.h
  fe2a761ddd30c85e4c03dac3f68f9266  gcc/config/i386/f16cintrin.h
  d7f8b633706b9312ab9188509aa49c91  gcc/config/i386/fma4intrin.h
--- 3288,3294 ----
  f8f286d859f8d73d76a735c97eb3d2ec  gcc/config/i386/djgpp.h
  a0c0c141031d5cd5396695edcf5121cc  gcc/config/i386/djgpp.opt
  edccd8464a3b27bea1396b0a5b751095  gcc/config/i386/dragonfly.h
! 8175105dd20f0b16fb48b8223a821375  gcc/config/i386/driver-i386.c
  80a9694c4eb1d7e135e09025acbd1641  gcc/config/i386/emmintrin.h
  fe2a761ddd30c85e4c03dac3f68f9266  gcc/config/i386/f16cintrin.h
  d7f8b633706b9312ab9188509aa49c91  gcc/config/i386/fma4intrin.h
*************** ae0fd559369affbf3aab054ecc19e6d3  gcc/co
*** 3295,3301 ****
  3f42bf98424664d638c47224e45b8bad  gcc/config/i386/fxsrintrin.h
  0342b60c3e348600fd59717bf42accce  gcc/config/i386/gas.h
  b5cab3ad22f3bba0d860a4491e1d9cfe  gcc/config/i386/geode.md
! 830e24da9ae6357a3bfb6294d2765957  gcc/config/i386/gmm_malloc.h
  a682d269753876b5847eaeb9b25340d5  gcc/config/i386/gnu-user-common.h
  b7c38e5d2566fb5a72ee8b486239a383  gcc/config/i386/gnu-user.h
  eea5495df289538e9844b565dc53d837  gcc/config/i386/gnu-user64.h
--- 3298,3304 ----
  3f42bf98424664d638c47224e45b8bad  gcc/config/i386/fxsrintrin.h
  0342b60c3e348600fd59717bf42accce  gcc/config/i386/gas.h
  b5cab3ad22f3bba0d860a4491e1d9cfe  gcc/config/i386/geode.md
! e0ed8d7ce2598959b9278c8264b75ea9  gcc/config/i386/gmm_malloc.h
  a682d269753876b5847eaeb9b25340d5  gcc/config/i386/gnu-user-common.h
  b7c38e5d2566fb5a72ee8b486239a383  gcc/config/i386/gnu-user.h
  eea5495df289538e9844b565dc53d837  gcc/config/i386/gnu-user64.h
*************** b59c7bcbecb519bf3e7bb32a70182c32  gcc/co
*** 3305,3322 ****
  3d45d9fbdfd9bf14da3b7ee2c4fe88b5  gcc/config/i386/host-i386-darwin.c
  8c13e46f3eb24fd5bdc30f8cb633fddb  gcc/config/i386/host-mingw32.c
  5aa6a668e89002b5abc3164dd6b3e1f3  gcc/config/i386/i386-builtin-types.awk
! 469ab764c33565da6bf7b1dba6663f5b  gcc/config/i386/i386-builtin-types.def
! b2f20584abf29c23881e9da73008263f  gcc/config/i386/i386-c.c
  0595e51f213632c7f50bb959df2d3e96  gcc/config/i386/i386-interix.h
  0536004db2ddeee0a4b62a9ee9bd1c57  gcc/config/i386/i386-modes.def
  fcde3a61941b8ab3f8855e592b6e695f  gcc/config/i386/i386-opts.h
  c3d4e075f6dac54c6f6bcd547011cc4e  gcc/config/i386/i386-protos.h
! 24ce00a9807db6ee7fc3e5396ff18714  gcc/config/i386/i386.c
! 00a8bfef99e94da77367ea48b7cd83b2  gcc/config/i386/i386.h
! 29043b8541a7bedbef92006cf24e4f92  gcc/config/i386/i386.md
! bfbaa969df039e91077f14916737c8b6  gcc/config/i386/i386.opt
  daedf27864f22a5722370a6beaba946b  gcc/config/i386/i386elf.h
! 61acb48cae5be4a22d2819eee9b145df  gcc/config/i386/ia32intrin.h
  d666ef5a14826040889f7b201554a148  gcc/config/i386/immintrin.h
  e0460dedf05e208d3b31473e8679003f  gcc/config/i386/intelmic-mkoffload.c
  8d5c3fff8280830c19ee4e50bb6fb4ed  gcc/config/i386/intelmic-offload.h
--- 3308,3325 ----
  3d45d9fbdfd9bf14da3b7ee2c4fe88b5  gcc/config/i386/host-i386-darwin.c
  8c13e46f3eb24fd5bdc30f8cb633fddb  gcc/config/i386/host-mingw32.c
  5aa6a668e89002b5abc3164dd6b3e1f3  gcc/config/i386/i386-builtin-types.awk
! faac37fcd29318260dbbdeda565e3282  gcc/config/i386/i386-builtin-types.def
! 85175fcfbdfa3769541c8343af2ee09c  gcc/config/i386/i386-c.c
  0595e51f213632c7f50bb959df2d3e96  gcc/config/i386/i386-interix.h
  0536004db2ddeee0a4b62a9ee9bd1c57  gcc/config/i386/i386-modes.def
  fcde3a61941b8ab3f8855e592b6e695f  gcc/config/i386/i386-opts.h
  c3d4e075f6dac54c6f6bcd547011cc4e  gcc/config/i386/i386-protos.h
! d95535280c9d864b7e1ebf5a96db6980  gcc/config/i386/i386.c
! 07020b5906b070812efc1b09e6264802  gcc/config/i386/i386.h
! 773ec35a3034943850b2a356b9a64bcd  gcc/config/i386/i386.md
! 6fe4a20a4225237c4396f142735f1f94  gcc/config/i386/i386.opt
  daedf27864f22a5722370a6beaba946b  gcc/config/i386/i386elf.h
! 62d42e6f12e89b4c2be53c704cbf13db  gcc/config/i386/ia32intrin.h
  d666ef5a14826040889f7b201554a148  gcc/config/i386/immintrin.h
  e0460dedf05e208d3b31473e8679003f  gcc/config/i386/intelmic-mkoffload.c
  8d5c3fff8280830c19ee4e50bb6fb4ed  gcc/config/i386/intelmic-offload.h
*************** b5df27f7caa40218efb4eb7850be5b6b  gcc/co
*** 3329,3335 ****
  301cb765672f86cb574af3aa8cc15339  gcc/config/i386/linux-common.h
  a0575c83924f631babb6282dae94fdfa  gcc/config/i386/linux.h
  3f1bbd7d0fab28481f4d13252f8489ec  gcc/config/i386/linux64.h
! 3b5358f68ed15171ea28e232535b2d23  gcc/config/i386/lwpintrin.h
  0f5428b87f33c6c9030c140a3812f394  gcc/config/i386/lynx.h
  8db7d3ff4ebee9d25a1a90fb6b148fa5  gcc/config/i386/lzcntintrin.h
  d94057995c5671c18dcbfa2ddabda006  gcc/config/i386/mingw-pthread.h
--- 3332,3338 ----
  301cb765672f86cb574af3aa8cc15339  gcc/config/i386/linux-common.h
  a0575c83924f631babb6282dae94fdfa  gcc/config/i386/linux.h
  3f1bbd7d0fab28481f4d13252f8489ec  gcc/config/i386/linux64.h
! 30d6de5c7c89277495398dfe703a643d  gcc/config/i386/lwpintrin.h
  0f5428b87f33c6c9030c140a3812f394  gcc/config/i386/lynx.h
  8db7d3ff4ebee9d25a1a90fb6b148fa5  gcc/config/i386/lzcntintrin.h
  d94057995c5671c18dcbfa2ddabda006  gcc/config/i386/mingw-pthread.h
*************** d94057995c5671c18dcbfa2ddabda006  gcc/co
*** 3340,3346 ****
  c08ff42f0a63ec3bc47e8f0c5338dfc0  gcc/config/i386/mingw32.h
  8e4410429bcce0983d35abcff6c53ce8  gcc/config/i386/mm3dnow.h
  8a2071b669fa5d3504f80288ea4210ed  gcc/config/i386/mmintrin.h
! 2a412a464e506eca92b93fb38d1c6031  gcc/config/i386/mmx.md
  a38581c639fdbe461a422d129ecacae8  gcc/config/i386/msformat-c.c
  ab7db06dca141a7b17fcb6c858941f14  gcc/config/i386/mwaitxintrin.h
  afc2499b56627c0cf4c0e77b0a3b5393  gcc/config/i386/netbsd-elf.h
--- 3343,3349 ----
  c08ff42f0a63ec3bc47e8f0c5338dfc0  gcc/config/i386/mingw32.h
  8e4410429bcce0983d35abcff6c53ce8  gcc/config/i386/mm3dnow.h
  8a2071b669fa5d3504f80288ea4210ed  gcc/config/i386/mmintrin.h
! d6718600f477cba5b9aa6fadc71c4bbb  gcc/config/i386/mmx.md
  a38581c639fdbe461a422d129ecacae8  gcc/config/i386/msformat-c.c
  ab7db06dca141a7b17fcb6c858941f14  gcc/config/i386/mwaitxintrin.h
  afc2499b56627c0cf4c0e77b0a3b5393  gcc/config/i386/netbsd-elf.h
*************** b4b34805ca26801fbfee48ffd2629b48  gcc/co
*** 3350,3358 ****
  7a3519417d5a1d75bf867aec8c0b046c  gcc/config/i386/nto.opt
  865ca3a1801a741ddbbf9bf3c22cfc8d  gcc/config/i386/openbsd.h
  a578d1bf36b5a746c9980b387984d957  gcc/config/i386/openbsdelf.h
- 47005d6f526e35f61502cee8a32e5fc8  gcc/config/i386/pcommitintrin.h
  6d0ffa971387d50b702d83ebbb175da4  gcc/config/i386/pentium.md
! 2ba65de49cc4c8ec36c0a8a02a9449f0  gcc/config/i386/pmm_malloc.h
  c7727d255f52a991603d7ab9bf382999  gcc/config/i386/pmmintrin.h
  c0f25640cfe6e819cda04d103e8b0d8e  gcc/config/i386/popcntintrin.h
  8dd75ae9d4073a8e5cb0dff4c80060ed  gcc/config/i386/ppro.md
--- 3353,3360 ----
  7a3519417d5a1d75bf867aec8c0b046c  gcc/config/i386/nto.opt
  865ca3a1801a741ddbbf9bf3c22cfc8d  gcc/config/i386/openbsd.h
  a578d1bf36b5a746c9980b387984d957  gcc/config/i386/openbsdelf.h
  6d0ffa971387d50b702d83ebbb175da4  gcc/config/i386/pentium.md
! b8328b3e0ad79b78abb04ab8e6e6f868  gcc/config/i386/pmm_malloc.h
  c7727d255f52a991603d7ab9bf382999  gcc/config/i386/pmmintrin.h
  c0f25640cfe6e819cda04d103e8b0d8e  gcc/config/i386/popcntintrin.h
  8dd75ae9d4073a8e5cb0dff4c80060ed  gcc/config/i386/ppro.md
*************** ba072d293e2d481f243934e2af557d25  gcc/co
*** 3360,3376 ****
  733892781931e1733a7a1dca931ae5c9  gcc/config/i386/prfchwintrin.h
  58605cbefcb96eef2d8a3bd82efbfffb  gcc/config/i386/rdos.h
  042ea5c9468f82955a18a6d4839a4cf0  gcc/config/i386/rdos64.h
! 3a97ea9d896684a58d2ebb51b89492f6  gcc/config/i386/rdseedintrin.h
  463e85bab8ec5803bb1dceb21c0122ad  gcc/config/i386/rtemself.h
! 5e13ac324c3df68f29da62535b6cbbba  gcc/config/i386/rtmintrin.h
  0a16c415d3bbf69d5f37bc8cc627ecce  gcc/config/i386/shaintrin.h
  e105dc3e1f37e3678bc591dfe5337ab1  gcc/config/i386/slm.md
  1d3ad3d2ecb926183e5ae934cff59f4d  gcc/config/i386/smmintrin.h
  017f3647ba917bb1344c7023eb7f39ed  gcc/config/i386/sol2.h
! 2299225d2775726e5c9af6642261046a  gcc/config/i386/sse.md
  3ede7749b4c8d7ada5a2bad4c09bd03f  gcc/config/i386/ssemath.h
  e6cd31e6a4e2c0b685f785e6a5f6e39e  gcc/config/i386/stringop.def
- a4b1fd10e33ee771b89d4761b8f8d327  gcc/config/i386/stringop.opt
  ec280d74eadf8b72a16316dd63a7a7c3  gcc/config/i386/subst.md
  04a444b18c29f930b94f85cd34c697fb  gcc/config/i386/sync.md
  653c2c63c0873ea9ca4c7603d8ed9ec8  gcc/config/i386/sysv4.h
--- 3362,3377 ----
  733892781931e1733a7a1dca931ae5c9  gcc/config/i386/prfchwintrin.h
  58605cbefcb96eef2d8a3bd82efbfffb  gcc/config/i386/rdos.h
  042ea5c9468f82955a18a6d4839a4cf0  gcc/config/i386/rdos64.h
! dc3cb9f9abfd4975be38e3236cfe91ce  gcc/config/i386/rdseedintrin.h
  463e85bab8ec5803bb1dceb21c0122ad  gcc/config/i386/rtemself.h
! d32763cd36baf017dd5faedb938092a3  gcc/config/i386/rtmintrin.h
  0a16c415d3bbf69d5f37bc8cc627ecce  gcc/config/i386/shaintrin.h
  e105dc3e1f37e3678bc591dfe5337ab1  gcc/config/i386/slm.md
  1d3ad3d2ecb926183e5ae934cff59f4d  gcc/config/i386/smmintrin.h
  017f3647ba917bb1344c7023eb7f39ed  gcc/config/i386/sol2.h
! d0960a5111f1c3bda8971ee55c32068b  gcc/config/i386/sse.md
  3ede7749b4c8d7ada5a2bad4c09bd03f  gcc/config/i386/ssemath.h
  e6cd31e6a4e2c0b685f785e6a5f6e39e  gcc/config/i386/stringop.def
  ec280d74eadf8b72a16316dd63a7a7c3  gcc/config/i386/subst.md
  04a444b18c29f930b94f85cd34c697fb  gcc/config/i386/sync.md
  653c2c63c0873ea9ca4c7603d8ed9ec8  gcc/config/i386/sysv4.h
*************** a6110be74ddfc65049872be187c866ce  gcc/co
*** 3407,3415 ****
  bae69273c5e47d61e99558ca73c4fabd  gcc/config/i386/x-darwin
  12e09c6fa27c603c6db59fbfc2a6b089  gcc/config/i386/x-i386
  7757edcd71447a5104d696e12c4b4c81  gcc/config/i386/x-mingw32
! 959abaa4c3bd9ff2b54409dcd184c5c6  gcc/config/i386/x86-64.h
  db708f4de1408a87622f1a4d951fb1ca  gcc/config/i386/x86-tune.def
! 7ad5c5eca2001da715e96cc38a8074cf  gcc/config/i386/x86intrin.h
  a25b8f30d6d2c9d3556892edd0930cd5  gcc/config/i386/xm-cygwin.h
  fedb4cb8da98643a4822ea1d3987b454  gcc/config/i386/xm-djgpp.h
  d3b975882353c4539540ad8cf626e2ce  gcc/config/i386/xm-mingw32.h
--- 3408,3416 ----
  bae69273c5e47d61e99558ca73c4fabd  gcc/config/i386/x-darwin
  12e09c6fa27c603c6db59fbfc2a6b089  gcc/config/i386/x-i386
  7757edcd71447a5104d696e12c4b4c81  gcc/config/i386/x-mingw32
! 5422a9338fee82242008769625b5c238  gcc/config/i386/x86-64.h
  db708f4de1408a87622f1a4d951fb1ca  gcc/config/i386/x86-tune.def
! 396ce8f3c4310884c5262d7087709d2a  gcc/config/i386/x86intrin.h
  a25b8f30d6d2c9d3556892edd0930cd5  gcc/config/i386/xm-cygwin.h
  fedb4cb8da98643a4822ea1d3987b454  gcc/config/i386/xm-djgpp.h
  d3b975882353c4539540ad8cf626e2ce  gcc/config/i386/xm-mingw32.h
*************** efcb4ce0481e92bd74083ca1e139edf6  gcc/co
*** 3744,3750 ****
  a14aeb7d18a40ea2c9569d8858b0cb86  gcc/config/nds32/nds32-protos.h
  bc5d70d2b626a5f71bd4d4ed5f4319e9  gcc/config/nds32/nds32.c
  d585e70fd2d82d33d108ce3a5c103b34  gcc/config/nds32/nds32.h
! bb38427d2cfecb11da3cdffc6d468f7a  gcc/config/nds32/nds32.md
  06fb413ae15afb7248236fe06e91ca0c  gcc/config/nds32/nds32.opt
  e54b605a7dbb08c68b092077ecc4ef6e  gcc/config/nds32/nds32_intrinsic.h
  2cc04688f7b247c63c935d078beb8e6f  gcc/config/nds32/pipelines.md
--- 3745,3751 ----
  a14aeb7d18a40ea2c9569d8858b0cb86  gcc/config/nds32/nds32-protos.h
  bc5d70d2b626a5f71bd4d4ed5f4319e9  gcc/config/nds32/nds32.c
  d585e70fd2d82d33d108ce3a5c103b34  gcc/config/nds32/nds32.h
! b70bf45dc7e4931ecdb62430013ec4b3  gcc/config/nds32/nds32.md
  06fb413ae15afb7248236fe06e91ca0c  gcc/config/nds32/nds32.opt
  e54b605a7dbb08c68b092077ecc4ef6e  gcc/config/nds32/nds32_intrinsic.h
  2cc04688f7b247c63c935d078beb8e6f  gcc/config/nds32/pipelines.md
*************** f2f82ddd29bb854d065d82aa62b0a021  gcc/co
*** 3785,3791 ****
  6b26d5d3ff3a79dd827a88f892e0b2b6  gcc/config/openbsd.opt
  7d69f6873c16b8c3223922031031eb0f  gcc/config/pa/constraints.md
  8ab8f3e04923ea640a65e3b19b67da1f  gcc/config/pa/elf.h
! 1325280e4f80c08b7024e8cdccb553d1  gcc/config/pa/pa-64.h
  4957e7e4320aab5af1a8cde6eb37814b  gcc/config/pa/pa-hpux.h
  8fadce90969f5865338d7ac1cb63f9ba  gcc/config/pa/pa-hpux.opt
  e7d4eb2e8de5d84d28b97fb106c2971a  gcc/config/pa/pa-hpux10.h
--- 3786,3792 ----
  6b26d5d3ff3a79dd827a88f892e0b2b6  gcc/config/openbsd.opt
  7d69f6873c16b8c3223922031031eb0f  gcc/config/pa/constraints.md
  8ab8f3e04923ea640a65e3b19b67da1f  gcc/config/pa/elf.h
! 5162998eb9898f006d5e73141a0f190b  gcc/config/pa/pa-64.h
  4957e7e4320aab5af1a8cde6eb37814b  gcc/config/pa/pa-hpux.h
  8fadce90969f5865338d7ac1cb63f9ba  gcc/config/pa/pa-hpux.opt
  e7d4eb2e8de5d84d28b97fb106c2971a  gcc/config/pa/pa-hpux10.h
*************** dbd19b8d99a7394dd85a52eeade6ecbc  gcc/co
*** 3803,3809 ****
  c68d02fd5106c675bddc293ac697311d  gcc/config/pa/pa-opts.h
  2e2d21b45ee74f94060493cde2d83ac8  gcc/config/pa/pa-protos.h
  b6b8fa1a99a367bf57672bd84f74f9a2  gcc/config/pa/pa.c
! 2448916772a338b27908d6a8c8c08483  gcc/config/pa/pa.h
  54e4d58e22cb34811a632243df5ce9c7  gcc/config/pa/pa.md
  9d249d72c9096863936e136d45fabf64  gcc/config/pa/pa.opt
  222ae0649ede14febec61a70255326de  gcc/config/pa/pa32-linux.h
--- 3804,3810 ----
  c68d02fd5106c675bddc293ac697311d  gcc/config/pa/pa-opts.h
  2e2d21b45ee74f94060493cde2d83ac8  gcc/config/pa/pa-protos.h
  b6b8fa1a99a367bf57672bd84f74f9a2  gcc/config/pa/pa.c
! 53be487f5fac638d670c2ccaf704363e  gcc/config/pa/pa.h
  54e4d58e22cb34811a632243df5ce9c7  gcc/config/pa/pa.md
  9d249d72c9096863936e136d45fabf64  gcc/config/pa/pa.opt
  222ae0649ede14febec61a70255326de  gcc/config/pa/pa32-linux.h
*************** e09f6c3bf726f2bfd6de8b0e9c86c64a  gcc/co
*** 3827,3841 ****
  b966c76e059535d68fd33aee5ec3b3c4  gcc/config/pdp11/pdp11.opt
  77785f3c0e28619b7492de88602b8d9a  gcc/config/pdp11/predicates.md
  158b6c7188210226d224bc14a0870620  gcc/config/pdp11/t-pdp11
  6e63ccd3726ddf197b6f101db1742249  gcc/config/print-sysroot-suffix.sh
  19a920b237b4d7c5c75574e44f50c9a4  gcc/config/rl78/constraints.md
  00ba3d9b723fd3d0550a89585db3e926  gcc/config/rl78/predicates.md
  4b1fd223f86f7d784d489fd9fcc03945  gcc/config/rl78/rl78-c.c
! 4420152dd94121c743e5d797e7ef4319  gcc/config/rl78/rl78-expand.md
  f4128845cbfea71c6559842238dbe5d1  gcc/config/rl78/rl78-opts.h
  34ad90b30fdf56b4d3726b904cf11f1f  gcc/config/rl78/rl78-protos.h
! c111eb9cd5b8e19cc8987389e4064f77  gcc/config/rl78/rl78-real.md
! 4ceb455f76dad299c4ba022234f1c981  gcc/config/rl78/rl78-virt.md
  0cfcc0de7260e55936a4ed294500f33a  gcc/config/rl78/rl78.c
  514aa983f65c50c065bb4c39caca0498  gcc/config/rl78/rl78.h
  fc6268b9639f6b659ceefb24a0a25c94  gcc/config/rl78/rl78.md
--- 3828,3843 ----
  b966c76e059535d68fd33aee5ec3b3c4  gcc/config/pdp11/pdp11.opt
  77785f3c0e28619b7492de88602b8d9a  gcc/config/pdp11/predicates.md
  158b6c7188210226d224bc14a0870620  gcc/config/pdp11/t-pdp11
+ 3d4953a89b7bc3a9a40717a59ddabe7b  gcc/config/phoenix.h
  6e63ccd3726ddf197b6f101db1742249  gcc/config/print-sysroot-suffix.sh
  19a920b237b4d7c5c75574e44f50c9a4  gcc/config/rl78/constraints.md
  00ba3d9b723fd3d0550a89585db3e926  gcc/config/rl78/predicates.md
  4b1fd223f86f7d784d489fd9fcc03945  gcc/config/rl78/rl78-c.c
! 4b54162336b3e80831d877672c2541bb  gcc/config/rl78/rl78-expand.md
  f4128845cbfea71c6559842238dbe5d1  gcc/config/rl78/rl78-opts.h
  34ad90b30fdf56b4d3726b904cf11f1f  gcc/config/rl78/rl78-protos.h
! 0c8e34a518717cea7b4a4f1a938bebd1  gcc/config/rl78/rl78-real.md
! b660d56bc0324fca64493359aed62c16  gcc/config/rl78/rl78-virt.md
  0cfcc0de7260e55936a4ed294500f33a  gcc/config/rl78/rl78.c
  514aa983f65c50c065bb4c39caca0498  gcc/config/rl78/rl78.h
  fc6268b9639f6b659ceefb24a0a25c94  gcc/config/rl78/rl78.md
*************** bf1281e85188416fb3c536e3dd09a329  gcc/co
*** 3864,3870 ****
  b648f4e9a3ac8fa18b30372e9c64a281  gcc/config/rs6000/aix61.h
  8b6cda1854bf876da30deebc9bd2e1ae  gcc/config/rs6000/aix64.opt
  41d29ed56192ef27453dee7ce89ee7f7  gcc/config/rs6000/altivec.h
! 56b94927d02598af4f6c218ac57ceb4c  gcc/config/rs6000/altivec.md
  5952cf6449f03e6fd89ecea89d5a3f57  gcc/config/rs6000/biarch64.h
  46d4506973bee3c7ae5988723d24695c  gcc/config/rs6000/cell.md
  2f33b542dec1e0b08fa3d56649f42299  gcc/config/rs6000/constraints.md
--- 3866,3872 ----
  b648f4e9a3ac8fa18b30372e9c64a281  gcc/config/rs6000/aix61.h
  8b6cda1854bf876da30deebc9bd2e1ae  gcc/config/rs6000/aix64.opt
  41d29ed56192ef27453dee7ce89ee7f7  gcc/config/rs6000/altivec.h
! f6bf4110294956afe8780507e9a68f0e  gcc/config/rs6000/altivec.md
  5952cf6449f03e6fd89ecea89d5a3f57  gcc/config/rs6000/biarch64.h
  46d4506973bee3c7ae5988723d24695c  gcc/config/rs6000/cell.md
  2f33b542dec1e0b08fa3d56649f42299  gcc/config/rs6000/constraints.md
*************** d3d79029594a6aca5ec3a4d1c887fdf3  gcc/co
*** 3876,3882 ****
  6eaf34684f54fe653cabe59ef4deca36  gcc/config/rs6000/darwin7.h
  84b7ba46e65bc9abb5617a1016d1ec4d  gcc/config/rs6000/darwin8.h
  f52ff97bc4fac70d3899553b99647de8  gcc/config/rs6000/default64.h
! f8b86b5eed3c097f1bb39511768ea322  gcc/config/rs6000/dfp.md
  6a61b13e7ef97ec4ed09217709819256  gcc/config/rs6000/driver-rs6000.c
  b1a606e933e9a6831fdd32e091f13165  gcc/config/rs6000/e300c2c3.md
  3c0a49ad14740b7724827fe0b2b879fa  gcc/config/rs6000/e500.h
--- 3878,3884 ----
  6eaf34684f54fe653cabe59ef4deca36  gcc/config/rs6000/darwin7.h
  84b7ba46e65bc9abb5617a1016d1ec4d  gcc/config/rs6000/darwin8.h
  f52ff97bc4fac70d3899553b99647de8  gcc/config/rs6000/default64.h
! e42b78e3645340c28b2d55960e379f8f  gcc/config/rs6000/dfp.md
  6a61b13e7ef97ec4ed09217709819256  gcc/config/rs6000/driver-rs6000.c
  b1a606e933e9a6831fdd32e091f13165  gcc/config/rs6000/e300c2c3.md
  3c0a49ad14740b7724827fe0b2b879fa  gcc/config/rs6000/e500.h
*************** ecd74625764a2b4718ac37837e8442e5  gcc/co
*** 3915,3933 ****
  cd55670102b2a9ef3ea856c4c0fb2ba6  gcc/config/rs6000/power8.md
  b409b61409844cab129e5a77eaf163d7  gcc/config/rs6000/ppc-asm.h
  cfd7414742451c6f011957f9f2e1b3f9  gcc/config/rs6000/ppu_intrinsics.h
! 0f93d61cd6bffe78b903bc70bf86dff0  gcc/config/rs6000/predicates.md
  e385a2129c0978046deffd1496417c78  gcc/config/rs6000/rs6000-builtin.def
! e6328ce034cf87ad14cf70a765a79b29  gcc/config/rs6000/rs6000-c.c
  02659e20870aef2cb61ee694d4ceca1c  gcc/config/rs6000/rs6000-cpus.def
  ca9cce7eceaae7905883313d424a065a  gcc/config/rs6000/rs6000-linux.c
  47e3c5fbc504bfe4dfbc11909e098db4  gcc/config/rs6000/rs6000-modes.def
  149c241d531b4183fe25223e6d6dba59  gcc/config/rs6000/rs6000-opts.h
  695a92733d70b8b317df1b06b34c3d38  gcc/config/rs6000/rs6000-protos.h
  db5cdcfe6297550b83dca0939d147757  gcc/config/rs6000/rs6000-tables.opt
! 4f60aa9002665674df115f423aca8e10  gcc/config/rs6000/rs6000.c
  8d5a724208a1ecc4f4058cf625847dfc  gcc/config/rs6000/rs6000.h
! 3f36907078b5581e548939c1b297fb60  gcc/config/rs6000/rs6000.md
! 4607c6002dd083a4d7f1e2eb909c9c10  gcc/config/rs6000/rs6000.opt
  afe511915e25cc2df8d24f22a4dacf59  gcc/config/rs6000/rs64.md
  6d67852323b959ae3981f79cbe95d969  gcc/config/rs6000/rtems.h
  350faafa367b016d44e959968d98482e  gcc/config/rs6000/secureplt.h
--- 3917,3935 ----
  cd55670102b2a9ef3ea856c4c0fb2ba6  gcc/config/rs6000/power8.md
  b409b61409844cab129e5a77eaf163d7  gcc/config/rs6000/ppc-asm.h
  cfd7414742451c6f011957f9f2e1b3f9  gcc/config/rs6000/ppu_intrinsics.h
! d525dee92cb5ac8a3b931d538d71d10a  gcc/config/rs6000/predicates.md
  e385a2129c0978046deffd1496417c78  gcc/config/rs6000/rs6000-builtin.def
! d01fe3eeefc5bcb9bd54fd57d0b0d9a4  gcc/config/rs6000/rs6000-c.c
  02659e20870aef2cb61ee694d4ceca1c  gcc/config/rs6000/rs6000-cpus.def
  ca9cce7eceaae7905883313d424a065a  gcc/config/rs6000/rs6000-linux.c
  47e3c5fbc504bfe4dfbc11909e098db4  gcc/config/rs6000/rs6000-modes.def
  149c241d531b4183fe25223e6d6dba59  gcc/config/rs6000/rs6000-opts.h
  695a92733d70b8b317df1b06b34c3d38  gcc/config/rs6000/rs6000-protos.h
  db5cdcfe6297550b83dca0939d147757  gcc/config/rs6000/rs6000-tables.opt
! 8124edc93f06a297b46aa2f54a1c48c1  gcc/config/rs6000/rs6000.c
  8d5a724208a1ecc4f4058cf625847dfc  gcc/config/rs6000/rs6000.h
! a4bf28479ce1edca42e816c8fdb98527  gcc/config/rs6000/rs6000.md
! 8323a2213a3c258aa620ed863769a2be  gcc/config/rs6000/rs6000.opt
  afe511915e25cc2df8d24f22a4dacf59  gcc/config/rs6000/rs64.md
  6d67852323b959ae3981f79cbe95d969  gcc/config/rs6000/rtems.h
  350faafa367b016d44e959968d98482e  gcc/config/rs6000/secureplt.h
*************** f11925c88524d2fd457bf77944da1302  gcc/co
*** 3966,3973 ****
  2ab98352654d265da592306ab6e439fd  gcc/config/rs6000/t-xilinx
  72067f4046e2d66876186dfa091b2636  gcc/config/rs6000/titan.md
  42504c2ef22746e861059312c3492c00  gcc/config/rs6000/vec_types.h
! 09f69e2fcb69bc7cc10ce77e8df86c18  gcc/config/rs6000/vector.md
! dd0ed2e45d3b3ea97a664cb92a00f82a  gcc/config/rs6000/vsx.md
  0c7d72b259870d8be6012f350136854c  gcc/config/rs6000/vxworks.h
  1ae3a28589baa5fb1f1efe7e75c1107b  gcc/config/rs6000/vxworksae.h
  cb78b51b1406240d997249e705591527  gcc/config/rs6000/vxworksmils.h
--- 3968,3975 ----
  2ab98352654d265da592306ab6e439fd  gcc/config/rs6000/t-xilinx
  72067f4046e2d66876186dfa091b2636  gcc/config/rs6000/titan.md
  42504c2ef22746e861059312c3492c00  gcc/config/rs6000/vec_types.h
! 781267551a7657b797686f9a0d3dc20b  gcc/config/rs6000/vector.md
! 69c523d0f8389b5875358760e6c62167  gcc/config/rs6000/vsx.md
  0c7d72b259870d8be6012f350136854c  gcc/config/rs6000/vxworks.h
  1ae3a28589baa5fb1f1efe7e75c1107b  gcc/config/rs6000/vxworksae.h
  cb78b51b1406240d997249e705591527  gcc/config/rs6000/vxworksmils.h
*************** cfb3b7da071260e3d0eadb52c0335762  gcc/co
*** 4008,4019 ****
  060bacb82e02c9d7e6ebd34357df49f4  gcc/config/s390/s390-builtins.def
  892ffdc8d427ae0fa334e6416bd74307  gcc/config/s390/s390-builtins.h
  b8c55f8000968a13283554455e8aae27  gcc/config/s390/s390-c.c
! 4efe80ced85e6d5ded1a54bca70824dd  gcc/config/s390/s390-modes.def
  af851b7231b43cfc7ea2a5cc69b945f7  gcc/config/s390/s390-opts.h
  5047b00d5b6ebe9b578f6b442c28255c  gcc/config/s390/s390-protos.h
! 5c08ac1d49f9a668a11e0b0540da6097  gcc/config/s390/s390.c
  108ef364e95bf7060e670f50c8fd38fa  gcc/config/s390/s390.h
! 24c673dd68d9281d7f43f561e4c6df91  gcc/config/s390/s390.md
  013a72cc3bada0279bb8e2a03231465e  gcc/config/s390/s390.opt
  1df5b0729d0722c9a4174d7d83d0dc21  gcc/config/s390/s390intrin.h
  816c30c9d2dc91264478fe08d3dd2650  gcc/config/s390/s390x.h
--- 4010,4021 ----
  060bacb82e02c9d7e6ebd34357df49f4  gcc/config/s390/s390-builtins.def
  892ffdc8d427ae0fa334e6416bd74307  gcc/config/s390/s390-builtins.h
  b8c55f8000968a13283554455e8aae27  gcc/config/s390/s390-c.c
! 0577b906af4351c385aab7622b211375  gcc/config/s390/s390-modes.def
  af851b7231b43cfc7ea2a5cc69b945f7  gcc/config/s390/s390-opts.h
  5047b00d5b6ebe9b578f6b442c28255c  gcc/config/s390/s390-protos.h
! 0c2a34e1f2cec1881a03195a001c9093  gcc/config/s390/s390.c
  108ef364e95bf7060e670f50c8fd38fa  gcc/config/s390/s390.h
! 775bf41bdc4bb6f423cd277ec7001712  gcc/config/s390/s390.md
  013a72cc3bada0279bb8e2a03231465e  gcc/config/s390/s390.opt
  1df5b0729d0722c9a4174d7d83d0dc21  gcc/config/s390/s390intrin.h
  816c30c9d2dc91264478fe08d3dd2650  gcc/config/s390/s390x.h
*************** a22fdd36012b46039c6d3753876aedee  gcc/co
*** 4024,4030 ****
  b781130f84559c48a529a31501aa4f36  gcc/config/s390/tpf.opt
  35e32703631204cb3efd823e3cb23401  gcc/config/s390/vecintrin.h
  6f457d5f18623f6f6b5d95ee34d179f2  gcc/config/s390/vector.md
! af7493c7d7faec01800d1dce594d06c6  gcc/config/s390/vx-builtins.md
  19ca86f8a1c4aabdac3693f3185a58d9  gcc/config/sh/constraints.md
  e634bc0a7498a9646068a25e19f266fe  gcc/config/sh/divcost-analysis
  f9ecb7ed332092641193742f392240b7  gcc/config/sh/divtab-sh4-300.c
--- 4026,4032 ----
  b781130f84559c48a529a31501aa4f36  gcc/config/s390/tpf.opt
  35e32703631204cb3efd823e3cb23401  gcc/config/s390/vecintrin.h
  6f457d5f18623f6f6b5d95ee34d179f2  gcc/config/s390/vector.md
! 5c1f91cf1b3aa105fb5ff1c42b03095b  gcc/config/s390/vx-builtins.md
  19ca86f8a1c4aabdac3693f3185a58d9  gcc/config/sh/constraints.md
  e634bc0a7498a9646068a25e19f266fe  gcc/config/sh/divcost-analysis
  f9ecb7ed332092641193742f392240b7  gcc/config/sh/divtab-sh4-300.c
*************** b26d21e9f6e46519916ee1762fcb2bdb  gcc/co
*** 4041,4050 ****
  6f06183109e4cecafda2d0172a99d2b5  gcc/config/sh/rtems.h
  e90cf3deb43456727d13d98e4373de8a  gcc/config/sh/rtemself.h
  a1f2be25e7def1af3303f4db38e19b73  gcc/config/sh/sh-c.c
! 836e7d7561de75df2fbbfcf292915268  gcc/config/sh/sh-mem.cc
  1a8a0f1811d317a447dad6e06f768f43  gcc/config/sh/sh-modes.def
  a9ed91e97940274b262c401fbb92af1f  gcc/config/sh/sh-protos.h
! 87ef37179195dcea104bdb7924ba7c4f  gcc/config/sh/sh.c
  8acdb096d4738a7fe759cf65c5846668  gcc/config/sh/sh.h
  e434fd5ded379df9515ac9289255838a  gcc/config/sh/sh.md
  e51857b4a25d0efe072817569a945917  gcc/config/sh/sh.opt
--- 4043,4052 ----
  6f06183109e4cecafda2d0172a99d2b5  gcc/config/sh/rtems.h
  e90cf3deb43456727d13d98e4373de8a  gcc/config/sh/rtemself.h
  a1f2be25e7def1af3303f4db38e19b73  gcc/config/sh/sh-c.c
! 12ab8bf62cb7178a681d2a16d26b9af2  gcc/config/sh/sh-mem.cc
  1a8a0f1811d317a447dad6e06f768f43  gcc/config/sh/sh-modes.def
  a9ed91e97940274b262c401fbb92af1f  gcc/config/sh/sh-protos.h
! 5508ab8a6ad6d2e9e9c18fac277b8664  gcc/config/sh/sh.c
  8acdb096d4738a7fe759cf65c5846668  gcc/config/sh/sh.h
  e434fd5ded379df9515ac9289255838a  gcc/config/sh/sh.md
  e51857b4a25d0efe072817569a945917  gcc/config/sh/sh.opt
*************** dffaad383271c87c9971daaa72a7ddbe  gcc/co
*** 4054,4060 ****
  6e0433e452d1ded0f054f4f53a7cd636  gcc/config/sh/sh4a.md
  6575bd755bced7ac56fbd35f95a56481  gcc/config/sh/sh64.h
  60c7f5059ba69e47a1a128fb2f132b47  gcc/config/sh/sh_optimize_sett_clrt.cc
! be474c7653a11337c844fb6187a5034f  gcc/config/sh/sh_treg_combine.cc
  47368903c836483f38b16bfea6a49e0d  gcc/config/sh/shmedia.h
  98d86b24c78f1325dfd3687e283cfb13  gcc/config/sh/shmedia.md
  dd6af26779e40dcce2c1288d77d7945a  gcc/config/sh/sshmedia.h
--- 4056,4062 ----
  6e0433e452d1ded0f054f4f53a7cd636  gcc/config/sh/sh4a.md
  6575bd755bced7ac56fbd35f95a56481  gcc/config/sh/sh64.h
  60c7f5059ba69e47a1a128fb2f132b47  gcc/config/sh/sh_optimize_sett_clrt.cc
! 81959f1b36f45ec9c776b3b1a142bc26  gcc/config/sh/sh_treg_combine.cc
  47368903c836483f38b16bfea6a49e0d  gcc/config/sh/shmedia.h
  98d86b24c78f1325dfd3687e283cfb13  gcc/config/sh/shmedia.md
  dd6af26779e40dcce2c1288d77d7945a  gcc/config/sh/sshmedia.h
*************** c2e93efa41c288ae579502de444c6a65  gcc/co
*** 4104,4112 ****
  3fb56d730dc139eab2e9e90475e4fe36  gcc/config/sparc/sparc-modes.def
  93f942a0f107322f75b9616e76070cfe  gcc/config/sparc/sparc-opts.h
  828b560b0d6b8c4dd5c06a3ee9afe4ec  gcc/config/sparc/sparc-protos.h
! 5f5d36b54027cd47587a5eb5b471139a  gcc/config/sparc/sparc.c
  937f7a829a27ca3a3e3e3a784449436d  gcc/config/sparc/sparc.h
! a7896aabe77bd6f41a510e51cee629c1  gcc/config/sparc/sparc.md
  346a2335f5deaaa18572faa44a26ca47  gcc/config/sparc/sparc.opt
  b31b0ff0a45f969d6e5dc6b7eac92b96  gcc/config/sparc/sparclet.md
  92cd12eccf668b5fbb3158e3c1999085  gcc/config/sparc/supersparc.md
--- 4106,4114 ----
  3fb56d730dc139eab2e9e90475e4fe36  gcc/config/sparc/sparc-modes.def
  93f942a0f107322f75b9616e76070cfe  gcc/config/sparc/sparc-opts.h
  828b560b0d6b8c4dd5c06a3ee9afe4ec  gcc/config/sparc/sparc-protos.h
! 4cc8a8d8396d82150e99ac2d0bb3561c  gcc/config/sparc/sparc.c
  937f7a829a27ca3a3e3e3a784449436d  gcc/config/sparc/sparc.h
! 3432fc32324e60965d1065a8476caca2  gcc/config/sparc/sparc.md
  346a2335f5deaaa18572faa44a26ca47  gcc/config/sparc/sparc.opt
  b31b0ff0a45f969d6e5dc6b7eac92b96  gcc/config/sparc/sparclet.md
  92cd12eccf668b5fbb3158e3c1999085  gcc/config/sparc/supersparc.md
*************** cfd064ab987fb08662de0902cbc81306  gcc/co
*** 4284,4292 ****
  c5ee6a235e6e0f65fe5ef344d7420beb  gcc/config/xtensa/predicates.md
  13c1600e0881a65f5ab4ca414e83d67f  gcc/config/xtensa/t-xtensa
  9cb475642d319b89cf7c565c149e79d8  gcc/config/xtensa/xtensa-protos.h
! cc6fb209fa143d18893dea5600b4999f  gcc/config/xtensa/xtensa.c
! a755f15366530860e5142ee78d6d468b  gcc/config/xtensa/xtensa.h
! e122336e286a995fa6bb129b6b042d4f  gcc/config/xtensa/xtensa.md
  74a14a35ae97d7c3c9b692999e1c30a5  gcc/config/xtensa/xtensa.opt
  41dc38f39a10ef48995c6e74e44ecdf3  gcc/configure
  5dc1c46ffd4f1346be87506c9ab6ae34  gcc/configure.ac
--- 4286,4294 ----
  c5ee6a235e6e0f65fe5ef344d7420beb  gcc/config/xtensa/predicates.md
  13c1600e0881a65f5ab4ca414e83d67f  gcc/config/xtensa/t-xtensa
  9cb475642d319b89cf7c565c149e79d8  gcc/config/xtensa/xtensa-protos.h
! 369d50bf12e338733aa4029b562f7118  gcc/config/xtensa/xtensa.c
! 0daf622a732b2f603432f36ecd8bc912  gcc/config/xtensa/xtensa.h
! 9f52f0028e69eb8461d3db3d80e6c579  gcc/config/xtensa/xtensa.md
  74a14a35ae97d7c3c9b692999e1c30a5  gcc/config/xtensa/xtensa.opt
  41dc38f39a10ef48995c6e74e44ecdf3  gcc/configure
  5dc1c46ffd4f1346be87506c9ab6ae34  gcc/configure.ac
*************** b69f872a79a3f8e718ec4f1c6b8599fc  gcc/co
*** 4295,4303 ****
  47496161de9c7fcd9fb836e6bdfd84f3  gcc/convert.c
  560935e4d05616b019e3aabc3eb3e249  gcc/convert.h
  55158952f4f6a088c5161bf605a95ad8  gcc/coretypes.h
! 31450b12de7205cd1cb0865cda6e4b52  gcc/coverage.c
! b01856dfc25f61629dfe6c74589c750b  gcc/coverage.h
! 4483ced400311387e08104b90d91c731  gcc/cp/ChangeLog
  d271e3663538ba1f3281cab3838e92cd  gcc/cp/ChangeLog-1993
  f5a44adbc05521162350ca409d1d95ce  gcc/cp/ChangeLog-1994
  ac55db48d964cb5469ff03c1cd3ee04d  gcc/cp/ChangeLog-1995
--- 4297,4305 ----
  47496161de9c7fcd9fb836e6bdfd84f3  gcc/convert.c
  560935e4d05616b019e3aabc3eb3e249  gcc/convert.h
  55158952f4f6a088c5161bf605a95ad8  gcc/coretypes.h
! 2191d9522bf81246d317765d4a290433  gcc/coverage.c
! 3a0647130234c9e76d38e07967e0f63c  gcc/coverage.h
! f43be459488ec149d47c785d3398064d  gcc/cp/ChangeLog
  d271e3663538ba1f3281cab3838e92cd  gcc/cp/ChangeLog-1993
  f5a44adbc05521162350ca409d1d95ce  gcc/cp/ChangeLog-1994
  ac55db48d964cb5469ff03c1cd3ee04d  gcc/cp/ChangeLog-1995
*************** c1c7801b9b0f379e702a4f6cb83972e7  gcc/cp
*** 4324,4338 ****
  9aa3cd9f75c785de9f51446e3f295515  gcc/cp/ChangeLog.tree-ssa
  a35afb6f28485d83b11acc636ce0379c  gcc/cp/Make-lang.in
  5f11793a1e6386d649740ef916b77c05  gcc/cp/NEWS
! 548ccbb407885b7cc52ebabc0cc79a84  gcc/cp/call.c
  352c265b6d2007069d76ce309f20515d  gcc/cp/cfns.gperf
  0bcfb2ea91871c488b2040f78c3be957  gcc/cp/cfns.h
! a88cd1d133409093083900d429a57da7  gcc/cp/class.c
  dad5f05a7295bc94cfa76b77f4511a37  gcc/cp/config-lang.in
! 5f0c95122f904ea9a7e4ade74772e214  gcc/cp/constexpr.c
  2d638c0370427eddd5d4c840c6a0f321  gcc/cp/cp-array-notation.c
  6baea5a04ad796017eff7b170ee38ba7  gcc/cp/cp-cilkplus.c
! 220d44f54f7cd405ab9b803c018655ca  gcc/cp/cp-gimplify.c
  8262f495460c80092155872364535d99  gcc/cp/cp-lang.c
  23cc08261a09f111af34b468b718b52b  gcc/cp/cp-objcp-common.c
  d7e0e1f83044eba73c84c0d35e56763a  gcc/cp/cp-objcp-common.h
--- 4326,4340 ----
  9aa3cd9f75c785de9f51446e3f295515  gcc/cp/ChangeLog.tree-ssa
  a35afb6f28485d83b11acc636ce0379c  gcc/cp/Make-lang.in
  5f11793a1e6386d649740ef916b77c05  gcc/cp/NEWS
! 290bcbd3d2ebbb9a7f64351ba512fb30  gcc/cp/call.c
  352c265b6d2007069d76ce309f20515d  gcc/cp/cfns.gperf
  0bcfb2ea91871c488b2040f78c3be957  gcc/cp/cfns.h
! 98c3a36e80e713db2cc0c36fb438c987  gcc/cp/class.c
  dad5f05a7295bc94cfa76b77f4511a37  gcc/cp/config-lang.in
! 03ae2c99615baa9e637c91c76fa34dd2  gcc/cp/constexpr.c
  2d638c0370427eddd5d4c840c6a0f321  gcc/cp/cp-array-notation.c
  6baea5a04ad796017eff7b170ee38ba7  gcc/cp/cp-cilkplus.c
! 9674bf46b13e615d3754b60bff36f6a1  gcc/cp/cp-gimplify.c
  8262f495460c80092155872364535d99  gcc/cp/cp-lang.c
  23cc08261a09f111af34b468b718b52b  gcc/cp/cp-objcp-common.c
  d7e0e1f83044eba73c84c0d35e56763a  gcc/cp/cp-objcp-common.h
*************** d7e0e1f83044eba73c84c0d35e56763a  gcc/cp
*** 4342,4377 ****
  1e3a65ca8e2459379ff5090c6ec456a0  gcc/cp/cvt.c
  6da130fdedbec68dc9e0d046433d14f4  gcc/cp/cxx-pretty-print.c
  20a57d655e4d2d3183849af2faede75b  gcc/cp/cxx-pretty-print.h
! 0bd59bd741816d205e5b9016d15640da  gcc/cp/decl.c
  1668d1f49273e2e676d9b5f1234568ca  gcc/cp/decl.h
  58fcafabfd995738d5f31a58afc07cd0  gcc/cp/decl2.c
  556e8982c998ffa19d4f15920516a53c  gcc/cp/dump.c
! 209c351bdb14a02156fc95ca33a18bd3  gcc/cp/error.c
  d9306d2dcd7aa71b259b6a1b49ae9e3a  gcc/cp/except.c
  a19b5642a6fa5947c562b382923ed923  gcc/cp/expr.c
  a342cbf63ac4fe18b1b86c6ff3548dd8  gcc/cp/friend.c
  42e59479800fef67acec53d0631e2bde  gcc/cp/g++spec.c
! 466a3e249c420a7600f3503fbf7761bc  gcc/cp/init.c
  8d9a9f4d9ca662ec21a80540015e9d1b  gcc/cp/lambda.c
  dfde77f68151e87026af48b761aca689  gcc/cp/lang-specs.h
  4dfedff05d91465160b7c3f098971188  gcc/cp/lex.c
! 6b16dbdfb02a80f5002597e38c53b037  gcc/cp/mangle.c
  f1b9736aa9f12ebfb99f1d868a0abe86  gcc/cp/method.c
! 9bae650ba882bcfa7a9864b54bc967c4  gcc/cp/name-lookup.c
  0e08e75ed3219873fa76700070ae4abe  gcc/cp/name-lookup.h
  c942b0cde1e9b504e5b7765387c9fc46  gcc/cp/operators.def
  c241dc64f510e67d41a06e0c05e9331d  gcc/cp/optimize.c
! ab6cd6a6816d190444b6fa0123eee02a  gcc/cp/parser.c
  6237b196d1cc139d803af821f62682d3  gcc/cp/parser.h
! f105d053c30b6e5227056e2f849f3134  gcc/cp/pt.c
  3b45a396f99a5effe46a093aef55a1e1  gcc/cp/ptree.c
  9b9c6628cd989728622afbd5b1535c6b  gcc/cp/repo.c
  de20aee2e1cc629d6436a2c8496bb598  gcc/cp/rtti.c
  25f26bbe516fc5327993de6152d67af4  gcc/cp/search.c
! f65b100dc3a8a1da9bee207706611e4a  gcc/cp/semantics.c
! 9c65c9064bb715902f00e804f68d0de6  gcc/cp/tree.c
  8b05dc6f4c2e308039c086564649d3ba  gcc/cp/type-utils.h
! 1d3c42933b6c792e690279ce05dff100  gcc/cp/typeck.c
  130e41e91946a3e13931f30f881c6dbb  gcc/cp/typeck2.c
  5193c6e43c9b47293bb84da8b33597ca  gcc/cp/vtable-class-hierarchy.c
  4871eb4df13d7d829c2d51708f5ead75  gcc/cppbuiltin.c
--- 4344,4379 ----
  1e3a65ca8e2459379ff5090c6ec456a0  gcc/cp/cvt.c
  6da130fdedbec68dc9e0d046433d14f4  gcc/cp/cxx-pretty-print.c
  20a57d655e4d2d3183849af2faede75b  gcc/cp/cxx-pretty-print.h
! 5897b4b550743266d3848dba396bdfa8  gcc/cp/decl.c
  1668d1f49273e2e676d9b5f1234568ca  gcc/cp/decl.h
  58fcafabfd995738d5f31a58afc07cd0  gcc/cp/decl2.c
  556e8982c998ffa19d4f15920516a53c  gcc/cp/dump.c
! e9229d46cb36c2c6833818bb68454901  gcc/cp/error.c
  d9306d2dcd7aa71b259b6a1b49ae9e3a  gcc/cp/except.c
  a19b5642a6fa5947c562b382923ed923  gcc/cp/expr.c
  a342cbf63ac4fe18b1b86c6ff3548dd8  gcc/cp/friend.c
  42e59479800fef67acec53d0631e2bde  gcc/cp/g++spec.c
! b5e39318ef37f628711be0f94e46f2c7  gcc/cp/init.c
  8d9a9f4d9ca662ec21a80540015e9d1b  gcc/cp/lambda.c
  dfde77f68151e87026af48b761aca689  gcc/cp/lang-specs.h
  4dfedff05d91465160b7c3f098971188  gcc/cp/lex.c
! e2d445431f15b7641f9d98dbd9becd13  gcc/cp/mangle.c
  f1b9736aa9f12ebfb99f1d868a0abe86  gcc/cp/method.c
! ae7f5569dc9edf185ca90e3a1d4f66b7  gcc/cp/name-lookup.c
  0e08e75ed3219873fa76700070ae4abe  gcc/cp/name-lookup.h
  c942b0cde1e9b504e5b7765387c9fc46  gcc/cp/operators.def
  c241dc64f510e67d41a06e0c05e9331d  gcc/cp/optimize.c
! 60ffd15663bdf876c32c3339f80117de  gcc/cp/parser.c
  6237b196d1cc139d803af821f62682d3  gcc/cp/parser.h
! c7534ccc1ec4ff19527ba1c6abada758  gcc/cp/pt.c
  3b45a396f99a5effe46a093aef55a1e1  gcc/cp/ptree.c
  9b9c6628cd989728622afbd5b1535c6b  gcc/cp/repo.c
  de20aee2e1cc629d6436a2c8496bb598  gcc/cp/rtti.c
  25f26bbe516fc5327993de6152d67af4  gcc/cp/search.c
! e32d731619b85159251d989aa3c3404c  gcc/cp/semantics.c
! 5bda0bb9c2b975d8971f424a9dc1c466  gcc/cp/tree.c
  8b05dc6f4c2e308039c086564649d3ba  gcc/cp/type-utils.h
! d3d5b038b027d60f614657a0d3eed416  gcc/cp/typeck.c
  130e41e91946a3e13931f30f881c6dbb  gcc/cp/typeck2.c
  5193c6e43c9b47293bb84da8b33597ca  gcc/cp/vtable-class-hierarchy.c
  4871eb4df13d7d829c2d51708f5ead75  gcc/cppbuiltin.c
*************** b51bd14f795b60d37179a504a23bffdb  gcc/cp
*** 4380,4390 ****
  b747029f386b6e45beb42096b365930b  gcc/cppdefault.h
  8d31cc983db2a45e9de8efcd1fb92e5c  gcc/cprop.c
  a89ef7e7b0cfb3017e85f60858f46e9a  gcc/cse.c
! cf7835be85d7d4c8a60e88c5fe74c0a2  gcc/cselib.c
  01e16506b0d09fd5e45580729e60fa17  gcc/cselib.h
  1ded054093de910d9786c62bc4fe8cc6  gcc/cstamp-h.in
! 356e890d657af55873d01731b58f104d  gcc/data-streamer-in.c
! af36f021b621e0a92ef79b975da08301  gcc/data-streamer-out.c
  13769a7879f5a79afd282dac0147be84  gcc/data-streamer.c
  101a4e32486e78e4840a6565b185783c  gcc/data-streamer.h
  bfb65567701868d8a65af35d18c56d43  gcc/dbgcnt.c
--- 4382,4392 ----
  b747029f386b6e45beb42096b365930b  gcc/cppdefault.h
  8d31cc983db2a45e9de8efcd1fb92e5c  gcc/cprop.c
  a89ef7e7b0cfb3017e85f60858f46e9a  gcc/cse.c
! 70102126363e224214d10f289b721fd8  gcc/cselib.c
  01e16506b0d09fd5e45580729e60fa17  gcc/cselib.h
  1ded054093de910d9786c62bc4fe8cc6  gcc/cstamp-h.in
! 31a7538e243bc920e621bf109ce718d4  gcc/data-streamer-in.c
! 680d1e5df139a36f25073ea469d16d94  gcc/data-streamer-out.c
  13769a7879f5a79afd282dac0147be84  gcc/data-streamer.c
  101a4e32486e78e4840a6565b185783c  gcc/data-streamer.h
  bfb65567701868d8a65af35d18c56d43  gcc/dbgcnt.c
*************** a1b544e6774f10bdfc2440052daf0c8a  gcc/df
*** 4408,4417 ****
  6331114b9e736f95bdfc9005bacf214f  gcc/diagnostic-color.c
  46cb891ca5a35344946f12490dc2eb61  gcc/diagnostic-color.h
  8a4857f6557756cfcdc4537f8fba0d5a  gcc/diagnostic-core.h
! 34b3cf16b32816f7a6b87124518c5c36  gcc/diagnostic.c
  b0ab0f79edb20523f7d1502fbb3e67fe  gcc/diagnostic.def
  d0c066e7c7f55d0e632d6b9c5b079e75  gcc/diagnostic.h
! c4c525e50383ecf22697ade0e30c511f  gcc/doc/aot-compile.1
  88d1fbe4975d0d30ee814dc6ac3fcce4  gcc/doc/avr-mmcu.texi
  bf34f154574511ea73ca5662f2f7f5ef  gcc/doc/bugreport.texi
  9fca288b41d5e44fd8b8a66184e3465e  gcc/doc/cfg.texi
--- 4410,4419 ----
  6331114b9e736f95bdfc9005bacf214f  gcc/diagnostic-color.c
  46cb891ca5a35344946f12490dc2eb61  gcc/diagnostic-color.h
  8a4857f6557756cfcdc4537f8fba0d5a  gcc/diagnostic-core.h
! ff4f87c381d6b2006af6b19055ce439d  gcc/diagnostic.c
  b0ab0f79edb20523f7d1502fbb3e67fe  gcc/diagnostic.def
  d0c066e7c7f55d0e632d6b9c5b079e75  gcc/diagnostic.h
! d40b196ba99429edecb0aaa46eb99ee3  gcc/doc/aot-compile.1
  88d1fbe4975d0d30ee814dc6ac3fcce4  gcc/doc/avr-mmcu.texi
  bf34f154574511ea73ca5662f2f7f5ef  gcc/doc/bugreport.texi
  9fca288b41d5e44fd8b8a66184e3465e  gcc/doc/cfg.texi
*************** e88587ef3e9b9ec8b225f91d251ba635  gcc/do
*** 4421,4460 ****
  eaf48a30b0911d6d00e0d7597a827dd6  gcc/doc/configterms.texi
  cd13f7cd1727d7e2f2b18240ce05199e  gcc/doc/contrib.texi
  9904428ed8794257df66ee09fb377c5c  gcc/doc/contribute.texi
! 17bd45107288e4b84981a647326738ad  gcc/doc/cpp.1
! 3dddde5fcd99b38107f18532984831ed  gcc/doc/cpp.info
  a79445765ec2d5c7c1cacf6f1fb87511  gcc/doc/cpp.texi
  86ee372f49b7f7ad9ff8ae436c43822d  gcc/doc/cppenv.texi
! f5efaa46c27ef3a6fa551fdc0061a3f2  gcc/doc/cppinternals.info
  76eda89efeb575bff228598230bd3c50  gcc/doc/cppinternals.texi
  f4b406eb44b3d589d1c7cb6cf6ee1875  gcc/doc/cppopts.texi
! cbe5a154cd266c567dc17efd8b18c4da  gcc/doc/extend.texi
  c6f99f2a7e803ce78a7ebd60090796c1  gcc/doc/fragments.texi
  ff8fba090979c42e8bfa096c201fe690  gcc/doc/frontends.texi
! a87dc5da0bbf6c3f59fd68dd08fb2aae  gcc/doc/fsf-funding.7
! b1f848ac18ff25f81231b898eae950e1  gcc/doc/g++.1
! c2863940e46c95afb3ca302e9e6084ff  gcc/doc/gc-analyze.1
! b1f848ac18ff25f81231b898eae950e1  gcc/doc/gcc.1
! 1426b7e06b3699ad881f236cc6909e6e  gcc/doc/gcc.info
! c7513d9fe3a5c9210dce80ddcb3b91ca  gcc/doc/gcc.texi
! d4a0020a7ba788ff82312cf8a341bdf0  gcc/doc/gccinstall.info
! 8234c184e04afea06867bb69cf43dadd  gcc/doc/gccint.info
  0abc012a09431283fb19c72cb3cf154b  gcc/doc/gccint.texi
! f7f3175767fab2be353c1a780c71b884  gcc/doc/gcj-dbtool.1
! 1c13c11e10a03bfe6627e7e5753d029d  gcc/doc/gcj.1
! fc78df077f8a2d31afbbb0ef81377dac  gcc/doc/gcj.info
! 9346ede445bcb208edf2343e0b614ab7  gcc/doc/gcov-tool.1
! 7267d040dd993d9ef5c693fcca9ab3c0  gcc/doc/gcov-tool.texi
! e993d871eff6de467e5c41782b71472b  gcc/doc/gcov.1
! 5eb59aec14f1cf96a5ce09adf224e31a  gcc/doc/gcov.texi
! 3434cdeceebda6513daa10be4064ac16  gcc/doc/generic.texi
! b2ab95e0c3e4cd64e5f9569633cba558  gcc/doc/gfdl.7
! f0ec84a8bfa56bc66c6c6c819ed86cca  gcc/doc/gfortran.1
! 1b4dc9c26991661f9f06d4d06eae1a50  gcc/doc/gij.1
  44cdd59b0e0c4a87198b6d6f93edf821  gcc/doc/gimple.texi
  290370669f02bef1502ada9273e5261f  gcc/doc/gnu.texi
! 8a502062cf0c476e44abe5f9a09ca87a  gcc/doc/gpl.7
! 369ec6ecc2f72bbd5601de36bc1ef275  gcc/doc/grmic.1
  0251c812052968400140d79e7637b960  gcc/doc/gty.texi
  bac4b1a76f9bea1142ad8521de456487  gcc/doc/headerdirs.texi
  979912689a9ae22bb140d994b0574e87  gcc/doc/hostconfig.texi
--- 4423,4464 ----
  eaf48a30b0911d6d00e0d7597a827dd6  gcc/doc/configterms.texi
  cd13f7cd1727d7e2f2b18240ce05199e  gcc/doc/contrib.texi
  9904428ed8794257df66ee09fb377c5c  gcc/doc/contribute.texi
! 25f78ecbfeb25aba25cf10268acb679b  gcc/doc/cpp.1
! 7d261ae190373bd385e14625a85c4d29  gcc/doc/cpp.info
  a79445765ec2d5c7c1cacf6f1fb87511  gcc/doc/cpp.texi
  86ee372f49b7f7ad9ff8ae436c43822d  gcc/doc/cppenv.texi
! 03fb56d6722e1f1b7d7775aff50e72f7  gcc/doc/cppinternals.info
  76eda89efeb575bff228598230bd3c50  gcc/doc/cppinternals.texi
  f4b406eb44b3d589d1c7cb6cf6ee1875  gcc/doc/cppopts.texi
! 8297410df6187b774ed2de33f5e6464d  gcc/doc/extend.texi
  c6f99f2a7e803ce78a7ebd60090796c1  gcc/doc/fragments.texi
  ff8fba090979c42e8bfa096c201fe690  gcc/doc/frontends.texi
! 6f015b0730f755d8088c01bcd703d27e  gcc/doc/fsf-funding.7
! 77adc0c2e629784f3ffd1790d9916451  gcc/doc/g++.1
! f8058660167aaf9581f067b9a9aa5759  gcc/doc/gc-analyze.1
! 77adc0c2e629784f3ffd1790d9916451  gcc/doc/gcc.1
! dfa9b3c7ecd1d8bf4a0f5c7cd3537a8d  gcc/doc/gcc.info
! 32f07983b5583ce937d63c9eb394205e  gcc/doc/gcc.texi
! 8a2df6f72583c9112d3c981d92ea6374  gcc/doc/gccinstall.info
! ec17bc54e1f940c719f5e808a9b6139e  gcc/doc/gccint.info
  0abc012a09431283fb19c72cb3cf154b  gcc/doc/gccint.texi
! bec8d0d14bd287602782513b15823165  gcc/doc/gcj-dbtool.1
! 3cc09827c2498b3ee1e7950651f30dde  gcc/doc/gcj.1
! 48a7e1f30e7cb96d228c6eaf97a6e26a  gcc/doc/gcj.info
! 2fe781401a9348f191ee0ca52cd2e58c  gcc/doc/gcov-dump.1
! b8d24f76649917a88a4a7b21cd032a0f  gcc/doc/gcov-dump.texi
! ce74da748c6a4f9076533a5cbf3364e1  gcc/doc/gcov-tool.1
! 9b573d01d9280d5c9c8506a81efb52d7  gcc/doc/gcov-tool.texi
! 1c35de6ef766d4041efaf97c07246495  gcc/doc/gcov.1
! 70cc30e3f013e2df22bacadfe755c1c6  gcc/doc/gcov.texi
! 1db7ad64406ce40ec453c35aa3f2c8ce  gcc/doc/generic.texi
! c71564402e41927f8086685eea7c883c  gcc/doc/gfdl.7
! b251f1b9554d1b6ef158cfd3cfdbdc1f  gcc/doc/gfortran.1
! 691341ea07cc4ec4ce1574d3ee8a915c  gcc/doc/gij.1
  44cdd59b0e0c4a87198b6d6f93edf821  gcc/doc/gimple.texi
  290370669f02bef1502ada9273e5261f  gcc/doc/gnu.texi
! d31ed1ff05a82baba17a635e947467a5  gcc/doc/gpl.7
! 6468ecadf48dc6501422c4b3892cac1b  gcc/doc/grmic.1
  0251c812052968400140d79e7637b960  gcc/doc/gty.texi
  bac4b1a76f9bea1142ad8521de456487  gcc/doc/headerdirs.texi
  979912689a9ae22bb140d994b0574e87  gcc/doc/hostconfig.texi
*************** c9c72c6be45fb9d057a5590dab9dc5b2  gcc/do
*** 4466,4492 ****
  5f5adc2c6c4ebdcf03cc0125250f5995  gcc/doc/include/gpl_v3.texi
  73819b3930a3d4be5d6234070d02386a  gcc/doc/include/texinfo.tex
  4faa6ab8fe567d8d0d507ea19e67f29a  gcc/doc/install-old.texi
! 80f1f1a688001979e74c91a51b1301bb  gcc/doc/install.texi
  99f35a855dbf0965fa02f5bef2906438  gcc/doc/install.texi2html
  43f58ec2628882183fa99d21d88fe88a  gcc/doc/interface.texi
! bb6d48282c1f451ce621c28ae2dd9221  gcc/doc/invoke.texi
! 08ffbdc982b3c79b361a166eb8d78936  gcc/doc/jcf-dump.1
! baae97cf8cc7b7e2af2d5d223e102a4c  gcc/doc/jv-convert.1
  11c51d2537db173b7307e16ea7cf7cc6  gcc/doc/languages.texi
  d997673d3e4c06a709d047334aa94df8  gcc/doc/libgcc.texi
  9663e09eea24ef9b50099b8ca3742d93  gcc/doc/loop.texi
! d6b979f19e13113545769e1e02a0fa4d  gcc/doc/lto.texi
  82c62c184d1417e060e2ae8ac57133eb  gcc/doc/makefile.texi
  841256364b0381bcac67d20b24623252  gcc/doc/match-and-simplify.texi
  ccf4c2a936bf0cf2efe932053549f2e7  gcc/doc/md.texi
  997652fc575562dd8ad133ccd0d3f9c2  gcc/doc/objc.texi
  1671187450d30de26d135bbc698b54e3  gcc/doc/optinfo.texi
  2135610f8f2cc9fb9b459648f499083b  gcc/doc/options.texi
! 2aee64ab43736c913c78244d594a66c6  gcc/doc/passes.texi
  e58e11ee7bf1e2b8b658f8469742dc7f  gcc/doc/plugins.texi
  f8e897dc6797fcc5fd394597b96aa940  gcc/doc/portability.texi
! b41fdebb7eb0f2f9361de60188f85a82  gcc/doc/rebuild-gcj-db.1
! 61b62a72c4d70d85e58c35ef9e6a6ad3  gcc/doc/rtl.texi
  7845a3cb7d3e8ee595dbda48b0f8843e  gcc/doc/service.texi
  bbc50150835279e540169136a82f4925  gcc/doc/sourcebuild.texi
  41d15466d0968130ad475309d86a2a33  gcc/doc/standards.texi
--- 4470,4496 ----
  5f5adc2c6c4ebdcf03cc0125250f5995  gcc/doc/include/gpl_v3.texi
  73819b3930a3d4be5d6234070d02386a  gcc/doc/include/texinfo.tex
  4faa6ab8fe567d8d0d507ea19e67f29a  gcc/doc/install-old.texi
! 3bea0e9e86bb3034d1e7c777da454099  gcc/doc/install.texi
  99f35a855dbf0965fa02f5bef2906438  gcc/doc/install.texi2html
  43f58ec2628882183fa99d21d88fe88a  gcc/doc/interface.texi
! 28df8b560884a67223bab23e4499ec7d  gcc/doc/invoke.texi
! c2013c3e8cc465ee1b1b193466231a65  gcc/doc/jcf-dump.1
! ee9462295b7d3928ed5e4ac43322c04e  gcc/doc/jv-convert.1
  11c51d2537db173b7307e16ea7cf7cc6  gcc/doc/languages.texi
  d997673d3e4c06a709d047334aa94df8  gcc/doc/libgcc.texi
  9663e09eea24ef9b50099b8ca3742d93  gcc/doc/loop.texi
! f77b255838145aae4f4bd4a8e09e922c  gcc/doc/lto.texi
  82c62c184d1417e060e2ae8ac57133eb  gcc/doc/makefile.texi
  841256364b0381bcac67d20b24623252  gcc/doc/match-and-simplify.texi
  ccf4c2a936bf0cf2efe932053549f2e7  gcc/doc/md.texi
  997652fc575562dd8ad133ccd0d3f9c2  gcc/doc/objc.texi
  1671187450d30de26d135bbc698b54e3  gcc/doc/optinfo.texi
  2135610f8f2cc9fb9b459648f499083b  gcc/doc/options.texi
! 2b4a9f26ae5ccd6c22387702b9b23e69  gcc/doc/passes.texi
  e58e11ee7bf1e2b8b658f8469742dc7f  gcc/doc/plugins.texi
  f8e897dc6797fcc5fd394597b96aa940  gcc/doc/portability.texi
! 2da9487a9b57584aab999c786db6dd19  gcc/doc/rebuild-gcj-db.1
! 7a36babc85d55d92710499c07b1bce2b  gcc/doc/rtl.texi
  7845a3cb7d3e8ee595dbda48b0f8843e  gcc/doc/service.texi
  bbc50150835279e540169136a82f4925  gcc/doc/sourcebuild.texi
  41d15466d0968130ad475309d86a2a33  gcc/doc/standards.texi
*************** fb5965cea97ed7bcc888b5ccf9ba0168  gcc/do
*** 4508,4514 ****
  1faf84d9fd8b6f0d5dbe9b4a2d08839c  gcc/dwarf2asm.c
  1d56aa18bfae871fee1e89a9fc43810e  gcc/dwarf2asm.h
  bc2f75db33a70f598fd891a9f4ba6271  gcc/dwarf2cfi.c
! fa605db0496887d03c5cf1b61737207c  gcc/dwarf2out.c
  c48a1e9cecbef090c903e39f2e0ff6e8  gcc/dwarf2out.h
  a5a18bc2c53951edffeed5feb6f89231  gcc/emit-rtl.c
  f3feb98669c7b31a7b10819ae3ac6d42  gcc/emit-rtl.h
--- 4512,4518 ----
  1faf84d9fd8b6f0d5dbe9b4a2d08839c  gcc/dwarf2asm.c
  1d56aa18bfae871fee1e89a9fc43810e  gcc/dwarf2asm.h
  bc2f75db33a70f598fd891a9f4ba6271  gcc/dwarf2cfi.c
! 76e76c41b870f31fde0e8d84fc3d2eec  gcc/dwarf2out.c
  c48a1e9cecbef090c903e39f2e0ff6e8  gcc/dwarf2out.h
  a5a18bc2c53951edffeed5feb6f89231  gcc/emit-rtl.c
  f3feb98669c7b31a7b10819ae3ac6d42  gcc/emit-rtl.h
*************** e69b3300b128c199ca5fb650e906dd51  gcc/et
*** 4519,4529 ****
  8c8b6673091d00aab27649ac95210796  gcc/except.c
  c1198c43d505483879ed93342a77f47e  gcc/except.h
  899cd36cc661113fa4f4ba4ba938c30b  gcc/exec-tool.in
! 15e465d076499e6cc3091fd6bf2c2931  gcc/explow.c
  a0286bd1624b7c0bc1cf22d14669a662  gcc/explow.h
! 7e898c18b993546a2b8c96127bfdf2c1  gcc/expmed.c
  a9df0692feedff51a91675a97d3ff6cf  gcc/expmed.h
! 8770c9d36bc090c69095ac886ac0b9b0  gcc/expr.c
  616e18f69b9972ba3bd219003f9a0e0d  gcc/expr.h
  ccff67dc94ba4ddd17c455df3c72ac43  gcc/fibonacci_heap.h
  e05bb84d8208ac2c70c0591c8b1ff568  gcc/file-find.c
--- 4523,4533 ----
  8c8b6673091d00aab27649ac95210796  gcc/except.c
  c1198c43d505483879ed93342a77f47e  gcc/except.h
  899cd36cc661113fa4f4ba4ba938c30b  gcc/exec-tool.in
! 92fb2121f945cff14788e19e52b61e26  gcc/explow.c
  a0286bd1624b7c0bc1cf22d14669a662  gcc/explow.h
! b0b6f40409fda0c6d6c3ce12d506e9c4  gcc/expmed.c
  a9df0692feedff51a91675a97d3ff6cf  gcc/expmed.h
! 8e1d5d3752fc0a648427af58d5ac95b6  gcc/expr.c
  616e18f69b9972ba3bd219003f9a0e0d  gcc/expr.h
  ccff67dc94ba4ddd17c455df3c72ac43  gcc/fibonacci_heap.h
  e05bb84d8208ac2c70c0591c8b1ff568  gcc/file-find.c
*************** e05bb84d8208ac2c70c0591c8b1ff568  gcc/fi
*** 4533,4541 ****
  a8d3b9ef43e6ad1608f39e9bfdd0b657  gcc/fixed-value.h
  10e013b0dd31da256d98f6bf5ddef356  gcc/flag-types.h
  46a3f21086c978417d1f4d6be66ffb19  gcc/flags.h
! a3c28dbbf748886e3b0521554e33e155  gcc/fold-const.c
  15a6e905a85ed9904bc2235dfd7ddc72  gcc/fold-const.h
! b81ae300f54487ff5fec563984d02930  gcc/fortran/ChangeLog
  3330102ad3a0217cba963be6b5eefd58  gcc/fortran/ChangeLog-2002
  d000ab985b1eeb1ad5749f98b8fef99f  gcc/fortran/ChangeLog-2003
  bf42f94f0c51dcc7d8051cc7fda1efdc  gcc/fortran/ChangeLog-2004
--- 4537,4545 ----
  a8d3b9ef43e6ad1608f39e9bfdd0b657  gcc/fixed-value.h
  10e013b0dd31da256d98f6bf5ddef356  gcc/flag-types.h
  46a3f21086c978417d1f4d6be66ffb19  gcc/flags.h
! 97c4254205d4f6219b3ec89cf814ffec  gcc/fold-const.c
  15a6e905a85ed9904bc2235dfd7ddc72  gcc/fold-const.h
! a905059f458e6a40933cca7ee7889e2b  gcc/fortran/ChangeLog
  3330102ad3a0217cba963be6b5eefd58  gcc/fortran/ChangeLog-2002
  d000ab985b1eeb1ad5749f98b8fef99f  gcc/fortran/ChangeLog-2003
  bf42f94f0c51dcc7d8051cc7fda1efdc  gcc/fortran/ChangeLog-2004
*************** b378eb9df97ed252ce2624646d05df15  gcc/fo
*** 4554,4563 ****
  707d6368c4e2671ef5213990fb75af4c  gcc/fortran/Make-lang.in
  f6aaeeb78eacb37261b2129241b19e98  gcc/fortran/arith.c
  5189b078b2d7dc66ef8f2f1e457331de  gcc/fortran/arith.h
! f005af7bda74f7cf18fcbdf2341d05ad  gcc/fortran/array.c
  a99bf29297bf90bf395dcc0dfb6b7ad5  gcc/fortran/bbt.c
! bf806c8dc624d75a3774c4fdb49afbbe  gcc/fortran/check.c
! 31179be526b51fa65c09cc69b90e3be6  gcc/fortran/class.c
  e421bdeae153aca94e0847ee6a53e1ea  gcc/fortran/config-lang.in
  27e63ed98e0093daefcf1f87d81db9ce  gcc/fortran/constructor.c
  bada936bc50d5ad0825eb77399887be9  gcc/fortran/constructor.h
--- 4558,4567 ----
  707d6368c4e2671ef5213990fb75af4c  gcc/fortran/Make-lang.in
  f6aaeeb78eacb37261b2129241b19e98  gcc/fortran/arith.c
  5189b078b2d7dc66ef8f2f1e457331de  gcc/fortran/arith.h
! 54d46590dc04cadc5f1afbd7e298ab0c  gcc/fortran/array.c
  a99bf29297bf90bf395dcc0dfb6b7ad5  gcc/fortran/bbt.c
! 9c09ef2f4faf4ca45fd2a4f1ed883cb2  gcc/fortran/check.c
! 91d7e056cec92ab162ad488f367bfbef  gcc/fortran/class.c
  e421bdeae153aca94e0847ee6a53e1ea  gcc/fortran/config-lang.in
  27e63ed98e0093daefcf1f87d81db9ce  gcc/fortran/constructor.c
  bada936bc50d5ad0825eb77399887be9  gcc/fortran/constructor.h
*************** fe38d7fbbaed2ab44aef6fb292c489a2  gcc/fo
*** 4566,4591 ****
  8763ad6a1d5aa2d543336f4e1ba1260e  gcc/fortran/cpp.h
  06f041b03fbe84fc3d6ce0be9765d3a9  gcc/fortran/data.c
  69bbc808281a960d3cffae3e480eb7e6  gcc/fortran/data.h
! f79aa0a90d1a43348d327615cb470a2e  gcc/fortran/decl.c
! 6a01fc4dd0263dbf84cc0bbef2374179  gcc/fortran/dependency.c
  4d73c9b2b8490470e36c64e8aada5f1d  gcc/fortran/dependency.h
  638656d011f7de9d4a0a0119cd6ac2e0  gcc/fortran/dump-parse-tree.c
! c9882dfc9a51f522790b02bcac6cb836  gcc/fortran/error.c
! 976e7326f777a5360389866adbd74c97  gcc/fortran/expr.c
  dd469a8c91ba1c92fea6dc05c06cd574  gcc/fortran/f95-lang.c
! c42f7a4190ef1faf39b5054bc5259d4c  gcc/fortran/frontend-passes.c
  a841f849e997b8d8e5bb6511e73f703d  gcc/fortran/gfc-diagnostic.def
  c9dcfa65fbec35139bcd58589be4c812  gcc/fortran/gfc-internals.texi
  54c6965728905703da9b9c3d973f3903  gcc/fortran/gfortran.h
! 927f289074b2b7ec3b5d0617a1571c7d  gcc/fortran/gfortran.info
  e17478537d627c542253b2373f18336d  gcc/fortran/gfortran.texi
  6a333b640eafa453c9de0a7d8d07dd98  gcc/fortran/gfortranspec.c
! c1de9b03a6f596705e39fe08713f3f06  gcc/fortran/interface.c
! 44657590a43314f103fbc7432cc1ce6f  gcc/fortran/intrinsic.c
  5edacdcc5ae162a67f749a711c85400d  gcc/fortran/intrinsic.h
  eace1b3ffdb87374fe9cca47c88aea10  gcc/fortran/intrinsic.texi
  9f7ad9d17089981567ac7c4c5352321b  gcc/fortran/invoke.texi
! 5ac1292e8970f30c2207697ca25d5659  gcc/fortran/io.c
  98caff6efc3f39fd40786f5bcd525279  gcc/fortran/ioparm.def
  14fe463db076b809f45fc070aa7436f0  gcc/fortran/iresolve.c
  b4e941705acf5cc559b5978c387564b5  gcc/fortran/iso-c-binding.def
--- 4570,4595 ----
  8763ad6a1d5aa2d543336f4e1ba1260e  gcc/fortran/cpp.h
  06f041b03fbe84fc3d6ce0be9765d3a9  gcc/fortran/data.c
  69bbc808281a960d3cffae3e480eb7e6  gcc/fortran/data.h
! 9678d07e78649d57899137c53f5f9a9b  gcc/fortran/decl.c
! b6083174a53489f69e4058a4146c4688  gcc/fortran/dependency.c
  4d73c9b2b8490470e36c64e8aada5f1d  gcc/fortran/dependency.h
  638656d011f7de9d4a0a0119cd6ac2e0  gcc/fortran/dump-parse-tree.c
! e643f82944f3984750b915048e0ace29  gcc/fortran/error.c
! a2c66602dc848422d7963db4b7caa7e8  gcc/fortran/expr.c
  dd469a8c91ba1c92fea6dc05c06cd574  gcc/fortran/f95-lang.c
! 48c15ec8b04aafbd12e193a21558f740  gcc/fortran/frontend-passes.c
  a841f849e997b8d8e5bb6511e73f703d  gcc/fortran/gfc-diagnostic.def
  c9dcfa65fbec35139bcd58589be4c812  gcc/fortran/gfc-internals.texi
  54c6965728905703da9b9c3d973f3903  gcc/fortran/gfortran.h
! b903f0d670b680981a099022ec85d6fa  gcc/fortran/gfortran.info
  e17478537d627c542253b2373f18336d  gcc/fortran/gfortran.texi
  6a333b640eafa453c9de0a7d8d07dd98  gcc/fortran/gfortranspec.c
! 46382303134e1ee4f7ce54c647e71495  gcc/fortran/interface.c
! f70f5df86fd6c3f5d4da85cb1b8ed6cf  gcc/fortran/intrinsic.c
  5edacdcc5ae162a67f749a711c85400d  gcc/fortran/intrinsic.h
  eace1b3ffdb87374fe9cca47c88aea10  gcc/fortran/intrinsic.texi
  9f7ad9d17089981567ac7c4c5352321b  gcc/fortran/invoke.texi
! 07f0aaca0740b792656d54ccbb9d54c6  gcc/fortran/io.c
  98caff6efc3f39fd40786f5bcd525279  gcc/fortran/ioparm.def
  14fe463db076b809f45fc070aa7436f0  gcc/fortran/iresolve.c
  b4e941705acf5cc559b5978c387564b5  gcc/fortran/iso-c-binding.def
*************** b4e941705acf5cc559b5978c387564b5  gcc/fo
*** 4593,4654 ****
  24e1ba51ab3274e4e9ca36029db14e02  gcc/fortran/lang-specs.h
  6c887d2b29b51d76b9567596be7b9844  gcc/fortran/lang.opt
  0347367fec2f9b47ddff4095949d334b  gcc/fortran/libgfortran.h
! acbdc434ff243f76b7312898c752724b  gcc/fortran/match.c
  da511ad5acad197246d4b3b36a3a2f57  gcc/fortran/match.h
  34cb2899bc9672ee1ddf5f753414d6b6  gcc/fortran/matchexp.c
  1d4d366df890396ef57a25a8532fb71d  gcc/fortran/mathbuiltins.def
  31cffc891bc7b4adb06625f9a1c31979  gcc/fortran/misc.c
  ade8b150ad55a1b617adf805d0941e3a  gcc/fortran/module.c
! 022c347a9fe2b8a158e7f2bccc603204  gcc/fortran/openmp.c
  2a30cedf97877dcb3afd459cd71284bf  gcc/fortran/options.c
! 06d0acc33c0cecaa9e8bfc8a863c6f79  gcc/fortran/parse.c
  00ec0502c7f65c7f3140d21f1d31d72a  gcc/fortran/parse.h
! 76bae553feffd50d943788e96d55219a  gcc/fortran/primary.c
! a1e584f481913482f050c5ba4440b24e  gcc/fortran/resolve.c
  fe35e2377e5060db8f1b9c32d497d6ac  gcc/fortran/scanner.c
  d2bdefff04430dfbd955eea579f2aebf  gcc/fortran/scanner.h
! c1d3cc0adafc74a4a3fddbc29a338e7d  gcc/fortran/simplify.c
  c0ccd4291ed4987b75954b0ce476f93c  gcc/fortran/st.c
  f6085d74a92bc3d00960fd831ae638da  gcc/fortran/symbol.c
  397dd1e19eab6bf5bba96e8217c4f217  gcc/fortran/target-memory.c
  cea1e76491020b81ced1061cb7ace527  gcc/fortran/target-memory.h
! f20d66c66530f45422a51ef8b6236114  gcc/fortran/trans-array.c
  5b4013bb799145dc921412dc4a0f572b  gcc/fortran/trans-array.h
! 01e21b9accc441765071ede0e774e121  gcc/fortran/trans-common.c
  38bb2b9633ffd93d5f4f6baa01767760  gcc/fortran/trans-const.c
  eb8fb89c9709d453357eb914042d3ff6  gcc/fortran/trans-const.h
! 9de328ceb1cbe91c46fb0ded56efd1cf  gcc/fortran/trans-decl.c
! c30d7862fde5c2b65435e01635d9f9a0  gcc/fortran/trans-expr.c
  9a77208e61e8a970c47f607791f74a73  gcc/fortran/trans-intrinsic.c
  157a295cd74c7802cc669e8ce6628afd  gcc/fortran/trans-io.c
! 12477674f4d7417f1aacf41512f75767  gcc/fortran/trans-openmp.c
! bb17fabcdb5c0dfd9b33c5b32763982f  gcc/fortran/trans-stmt.c
  4a3bd2067a8a4a1b4b7ba2b073e18efd  gcc/fortran/trans-stmt.h
! f11b8bd89fa05a461d24672a8107988e  gcc/fortran/trans-types.c
  d949f532000ada14f557c83725d95468  gcc/fortran/trans-types.h
! ad7fbdf36e4a48e57252e3c8887cb96c  gcc/fortran/trans.c
  0bf400338646f9bab6cd6ae528dbf437  gcc/fortran/trans.h
  ff424893feafa5624090143937d4c009  gcc/fortran/types.def
  a54523b4e94919066a3c5647ff40dac2  gcc/fp-test.c
! b0fecab2fc35903a25fd832eb8a55f50  gcc/function.c
! 870da7fc1f70ac8417ef4a953257f559  gcc/function.h
! 5557858dbb5827ed2a7053623414a5ba  gcc/fwprop.c
  6efb9ef2e73dbc17d27ded1d96367049  gcc/gcc-ar.c
  a8f56c226f8847a3d66f53ad0c434cc9  gcc/gcc-main.c
  fb9613e93d16c2bf39e651c0757a75f1  gcc/gcc-plugin.h
  d7685ab8bad221ca4814fe9968503d08  gcc/gcc-symtab.h
! be90413802f0b1b9222513bb5a32f776  gcc/gcc.c
  92bd4d323915b3edb403eb79ea9e8a1c  gcc/gcc.h
  f6f03cb16050a9a212a6258a32b233f0  gcc/gcov-counter.def
! 49874a0a517511e6e8f4dc3db7cfb24b  gcc/gcov-dump.c
! 04ea0fa8efdde9a01bf69310027c4432  gcc/gcov-io.c
  90a324921f2a4eb0eec1e0e8d73ab527  gcc/gcov-io.h
  71e1c13af4a426f1dff37d627c47914c  gcc/gcov-iov.c
! 3cbfcc7daf15b0a2c9cd20de4cc15135  gcc/gcov-tool.c
! 36ad745ce60964b283d20071dcf4fb43  gcc/gcov.c
  195e0f4a65c4c05837066cc207e69fa9  gcc/gcse-common.c
  3988c5c9badaab6144419427c15b5de6  gcc/gcse-common.h
! d92a6713e8a3a1054fe4abcb0f48317a  gcc/gcse.c
  2df943f1b5c908074da3c7ad26a620d0  gcc/gcse.h
  af83e4b4719ee065872080b713d24c2f  gcc/gdbasan.in
  35c6faff742cf9dab522c94fa7287ba0  gcc/gdbhooks.py
--- 4597,4658 ----
  24e1ba51ab3274e4e9ca36029db14e02  gcc/fortran/lang-specs.h
  6c887d2b29b51d76b9567596be7b9844  gcc/fortran/lang.opt
  0347367fec2f9b47ddff4095949d334b  gcc/fortran/libgfortran.h
! de9e0fbb458b564b826002f557e47311  gcc/fortran/match.c
  da511ad5acad197246d4b3b36a3a2f57  gcc/fortran/match.h
  34cb2899bc9672ee1ddf5f753414d6b6  gcc/fortran/matchexp.c
  1d4d366df890396ef57a25a8532fb71d  gcc/fortran/mathbuiltins.def
  31cffc891bc7b4adb06625f9a1c31979  gcc/fortran/misc.c
  ade8b150ad55a1b617adf805d0941e3a  gcc/fortran/module.c
! 33771d59322f641d630949183831d48d  gcc/fortran/openmp.c
  2a30cedf97877dcb3afd459cd71284bf  gcc/fortran/options.c
! ee100b7b822f626e32dc39efb5b51c46  gcc/fortran/parse.c
  00ec0502c7f65c7f3140d21f1d31d72a  gcc/fortran/parse.h
! 427654d65f7e65ec2ef1156ffa0cda1a  gcc/fortran/primary.c
! d6e5a3c645a4d6911bd2df3ff536b4d0  gcc/fortran/resolve.c
  fe35e2377e5060db8f1b9c32d497d6ac  gcc/fortran/scanner.c
  d2bdefff04430dfbd955eea579f2aebf  gcc/fortran/scanner.h
! 28dfe7543d56a15a7419d127623376a6  gcc/fortran/simplify.c
  c0ccd4291ed4987b75954b0ce476f93c  gcc/fortran/st.c
  f6085d74a92bc3d00960fd831ae638da  gcc/fortran/symbol.c
  397dd1e19eab6bf5bba96e8217c4f217  gcc/fortran/target-memory.c
  cea1e76491020b81ced1061cb7ace527  gcc/fortran/target-memory.h
! da32ae6ce5c84657e6d1664cfd420945  gcc/fortran/trans-array.c
  5b4013bb799145dc921412dc4a0f572b  gcc/fortran/trans-array.h
! cd99036021266498cd911a35e933e234  gcc/fortran/trans-common.c
  38bb2b9633ffd93d5f4f6baa01767760  gcc/fortran/trans-const.c
  eb8fb89c9709d453357eb914042d3ff6  gcc/fortran/trans-const.h
! fded624204486885e95684efd0e2b905  gcc/fortran/trans-decl.c
! 127ee4788b8a75c554caae210d48d2b5  gcc/fortran/trans-expr.c
  9a77208e61e8a970c47f607791f74a73  gcc/fortran/trans-intrinsic.c
  157a295cd74c7802cc669e8ce6628afd  gcc/fortran/trans-io.c
! b4773edb51843fc2cc95e50ad2006f06  gcc/fortran/trans-openmp.c
! 7d154d20b68f402bda2a42d36ef78618  gcc/fortran/trans-stmt.c
  4a3bd2067a8a4a1b4b7ba2b073e18efd  gcc/fortran/trans-stmt.h
! 5f67ff15f4d87853a7b391310d90654e  gcc/fortran/trans-types.c
  d949f532000ada14f557c83725d95468  gcc/fortran/trans-types.h
! ab9271eec95d00531eb650ee31ad47d4  gcc/fortran/trans.c
  0bf400338646f9bab6cd6ae528dbf437  gcc/fortran/trans.h
  ff424893feafa5624090143937d4c009  gcc/fortran/types.def
  a54523b4e94919066a3c5647ff40dac2  gcc/fp-test.c
! 1ad76fa6ffb3813ffc7fa1c4f02c3700  gcc/function.c
! 49860d6a27a9809bd464ec2269e3ba81  gcc/function.h
! 549b7b86a49ff8989176f48d57e489d7  gcc/fwprop.c
  6efb9ef2e73dbc17d27ded1d96367049  gcc/gcc-ar.c
  a8f56c226f8847a3d66f53ad0c434cc9  gcc/gcc-main.c
  fb9613e93d16c2bf39e651c0757a75f1  gcc/gcc-plugin.h
  d7685ab8bad221ca4814fe9968503d08  gcc/gcc-symtab.h
! 062c49e64d80133bfde966585734b58d  gcc/gcc.c
  92bd4d323915b3edb403eb79ea9e8a1c  gcc/gcc.h
  f6f03cb16050a9a212a6258a32b233f0  gcc/gcov-counter.def
! 6aeedacbfe16951d5ad6afc54d5d4d74  gcc/gcov-dump.c
! 60941b249d61a4348b7baf63a41f2cb7  gcc/gcov-io.c
  90a324921f2a4eb0eec1e0e8d73ab527  gcc/gcov-io.h
  71e1c13af4a426f1dff37d627c47914c  gcc/gcov-iov.c
! 9bb512fc23f17942f8dfcba98f36844f  gcc/gcov-tool.c
! 95c538651d0d111a53bff88582f67d75  gcc/gcov.c
  195e0f4a65c4c05837066cc207e69fa9  gcc/gcse-common.c
  3988c5c9badaab6144419427c15b5de6  gcc/gcse-common.h
! 4a1cb4a32e56fa108638e0fb0fb3c645  gcc/gcse.c
  2df943f1b5c908074da3c7ad26a620d0  gcc/gcse.h
  af83e4b4719ee065872080b713d24c2f  gcc/gdbasan.in
  35c6faff742cf9dab522c94fa7287ba0  gcc/gdbhooks.py
*************** cb3bafc39aa5fb67e8df965fa430db00  gcc/ge
*** 4671,4684 ****
  7775bb2873d3d6cb71856f44a90463bd  gcc/genextract.c
  8801d78e17e4713ebb78f8aaed80fd07  gcc/genflags.c
  ff8b894150f34792acf058e52e1f1351  gcc/gengenrtl.c
! 19884ac695063c6ebe772e83f1e99f3d  gcc/gengtype-lex.c
  6ed8ef9e8b2317c06bf5758b667ed378  gcc/gengtype-lex.l
  68515aae193974108335815cffd2ed24  gcc/gengtype-parse.c
  4f8707ada1ecd9957c3baec21cdad10d  gcc/gengtype-state.c
  2f73706db465c5ae7c757cbe2a9f1e72  gcc/gengtype.c
  d7e0e06e3137f430200ddde998c7300a  gcc/gengtype.h
  25013196ddfe6ad93e3d289915c5c421  gcc/genhooks.c
! 0753e30ec3fb0dff1f233405f016e028  gcc/genmatch.c
  ab9053bd5a0d9c0de13c539e452e6e38  gcc/genmddeps.c
  8ef494e82527975d9e774d8601f30cda  gcc/genmddump.c
  8025e346a698d2a1b82e2c40249bfd07  gcc/genmodes.c
--- 4675,4688 ----
  7775bb2873d3d6cb71856f44a90463bd  gcc/genextract.c
  8801d78e17e4713ebb78f8aaed80fd07  gcc/genflags.c
  ff8b894150f34792acf058e52e1f1351  gcc/gengenrtl.c
! 068cb19fd083af1f258cb186b1a3a76e  gcc/gengtype-lex.c
  6ed8ef9e8b2317c06bf5758b667ed378  gcc/gengtype-lex.l
  68515aae193974108335815cffd2ed24  gcc/gengtype-parse.c
  4f8707ada1ecd9957c3baec21cdad10d  gcc/gengtype-state.c
  2f73706db465c5ae7c757cbe2a9f1e72  gcc/gengtype.c
  d7e0e06e3137f430200ddde998c7300a  gcc/gengtype.h
  25013196ddfe6ad93e3d289915c5c421  gcc/genhooks.c
! 0057a83098e753f261c55d13207ba05a  gcc/genmatch.c
  ab9053bd5a0d9c0de13c539e452e6e38  gcc/genmddeps.c
  8ef494e82527975d9e774d8601f30cda  gcc/genmddump.c
  8025e346a698d2a1b82e2c40249bfd07  gcc/genmodes.c
*************** f4dae6d4f9332841dee97b1ea57b84a4  gcc/gi
*** 4699,4705 ****
  43d573d208affa2be1a6c2473dbda3c5  gcc/gimple-builder.h
  f5cdf56d550816b2a0e665865185684c  gcc/gimple-expr.c
  6f9caabc1dc67885b0c144695e87da5e  gcc/gimple-expr.h
! 5ef9c3692ada9532a791fb9c48a6cd7b  gcc/gimple-fold.c
  f2ee481c75a3a949d80febfe809b4b21  gcc/gimple-fold.h
  a1160fdfad8e89bd3b3566303f25a39a  gcc/gimple-iterator.c
  8d8801f018e326a45e5e71a5a13c6111  gcc/gimple-iterator.h
--- 4703,4709 ----
  43d573d208affa2be1a6c2473dbda3c5  gcc/gimple-builder.h
  f5cdf56d550816b2a0e665865185684c  gcc/gimple-expr.c
  6f9caabc1dc67885b0c144695e87da5e  gcc/gimple-expr.h
! 328f68fcb668ddaa0ac3343110356177  gcc/gimple-fold.c
  f2ee481c75a3a949d80febfe809b4b21  gcc/gimple-fold.h
  a1160fdfad8e89bd3b3566303f25a39a  gcc/gimple-iterator.c
  8d8801f018e326a45e5e71a5a13c6111  gcc/gimple-iterator.h
*************** e520982aa39dfc477fdb4018bf7e2df6  gcc/gi
*** 4710,4716 ****
  e95f8b4b386a00ef73f7f186a763db17  gcc/gimple-pretty-print.c
  cd4af2945d35b35f4f3193582c8fbb6a  gcc/gimple-pretty-print.h
  6e65a99b873cb4817482654ff39f83c9  gcc/gimple-ssa-isolate-paths.c
! 7b9a6a7d0e884ad04fc23dc973ec38cd  gcc/gimple-ssa-strength-reduction.c
  247236c61b3cf32ee3738dbdc4d10ae8  gcc/gimple-ssa.h
  461931e9c88aa766f4221b6159c69790  gcc/gimple-streamer-in.c
  2bf088b89ed3f18752d8277b81d88a44  gcc/gimple-streamer-out.c
--- 4714,4720 ----
  e95f8b4b386a00ef73f7f186a763db17  gcc/gimple-pretty-print.c
  cd4af2945d35b35f4f3193582c8fbb6a  gcc/gimple-pretty-print.h
  6e65a99b873cb4817482654ff39f83c9  gcc/gimple-ssa-isolate-paths.c
! fae21e78d56c380e72a84defdff3c51f  gcc/gimple-ssa-strength-reduction.c
  247236c61b3cf32ee3738dbdc4d10ae8  gcc/gimple-ssa.h
  461931e9c88aa766f4221b6159c69790  gcc/gimple-streamer-in.c
  2bf088b89ed3f18752d8277b81d88a44  gcc/gimple-streamer-out.c
*************** c1027a1891566efdd0788f86c779f714  gcc/gi
*** 4722,4728 ****
  824d2a0d0a80a10aded776d1eab310df  gcc/gimple.h
  a3a5adb69470aa29be21310f5df8dae1  gcc/gimplify-me.c
  63a9df09103c7a0a95a977dcabe06681  gcc/gimplify-me.h
! 92802023fbbdbf1e66099b0d87ee8f45  gcc/gimplify.c
  657aa310665a750e4e6640076ff198d8  gcc/gimplify.h
  06e1d5bf49d283a8370e6823323ed83d  gcc/ginclude/float.h
  dce53594becd3e542adcf44d41af1843  gcc/ginclude/iso646.h
--- 4726,4732 ----
  824d2a0d0a80a10aded776d1eab310df  gcc/gimple.h
  a3a5adb69470aa29be21310f5df8dae1  gcc/gimplify-me.c
  63a9df09103c7a0a95a977dcabe06681  gcc/gimplify-me.h
! 1e723d48bbf81168417cbede1318167d  gcc/gimplify.c
  657aa310665a750e4e6640076ff198d8  gcc/gimplify.h
  06e1d5bf49d283a8370e6823323ed83d  gcc/ginclude/float.h
  dce53594becd3e542adcf44d41af1843  gcc/ginclude/iso646.h
*************** de316d2a98d1c9dcd6ed49312f273723  gcc/gi
*** 4739,4745 ****
  e8c9554b282a6d176cb89489786dc8e9  gcc/ginclude/unwind-arm-common.h
  8d9ecf0d6ef93c79623ce1d27a32a2cb  gcc/ginclude/varargs.h
  3d14b3be9a65d32c111c8922f3a3bd81  gcc/glimits.h
! 05d3e2d0a3b9ef4e95cb35c8841c4e5b  gcc/go/ChangeLog
  cd53341961f61a151fd5e6b08d2a32ca  gcc/go/Make-lang.in
  60ea054548c83c7f66170073f9f3e74c  gcc/go/README.gcc
  98a92a4eb98cb3c34e78e760835d003a  gcc/go/config-lang.in
--- 4743,4749 ----
  e8c9554b282a6d176cb89489786dc8e9  gcc/ginclude/unwind-arm-common.h
  8d9ecf0d6ef93c79623ce1d27a32a2cb  gcc/ginclude/varargs.h
  3d14b3be9a65d32c111c8922f3a3bd81  gcc/glimits.h
! 994d5735097f7f759e125b58a47ef482  gcc/go/ChangeLog
  cd53341961f61a151fd5e6b08d2a32ca  gcc/go/Make-lang.in
  60ea054548c83c7f66170073f9f3e74c  gcc/go/README.gcc
  98a92a4eb98cb3c34e78e760835d003a  gcc/go/config-lang.in
*************** df5fccf403e608bac420d9d773cc81aa  gcc/gr
*** 4799,4805 ****
  33186ad9405ef9915154f2cbb6b0c959  gcc/graphite-blocking.c
  4b91852121275027483c0250c7bf53c1  gcc/graphite-dependences.c
  cabaf994a022e558b99682faca59883c  gcc/graphite-interchange.c
! 28755788f93fffb99579281f12dab331  gcc/graphite-isl-ast-to-gimple.c
  2d103b13b3ef14b7724520ae9294494f  gcc/graphite-isl-ast-to-gimple.h
  3fe8fa2aeb07d0c7d1d203b887d216b1  gcc/graphite-optimize-isl.c
  7ec4425c66c19929fcffabd7b9901d83  gcc/graphite-poly.c
--- 4803,4809 ----
  33186ad9405ef9915154f2cbb6b0c959  gcc/graphite-blocking.c
  4b91852121275027483c0250c7bf53c1  gcc/graphite-dependences.c
  cabaf994a022e558b99682faca59883c  gcc/graphite-interchange.c
! e35072572d358d85faf0f61ab515d3a1  gcc/graphite-isl-ast-to-gimple.c
  2d103b13b3ef14b7724520ae9294494f  gcc/graphite-isl-ast-to-gimple.h
  3fe8fa2aeb07d0c7d1d203b887d216b1  gcc/graphite-optimize-isl.c
  7ec4425c66c19929fcffabd7b9901d83  gcc/graphite-poly.c
*************** f425e365ba34b26c2c48a0b2f25392b1  gcc/hw
*** 4834,4889 ****
  1523b8d28fff01888d17f174fe20011c  gcc/ifcvt.h
  f933d194c4b3ac582e0ef8e88be285a5  gcc/inchash.c
  b204cad2fb3671fa87af8561f5be3f90  gcc/inchash.h
! 1a7e6636a0b737d39c8c19b3f077fc16  gcc/incpath.c
  9cf6fd175b70565987f279bc6640d9c9  gcc/incpath.h
  fe17c78b27ae9ee21279fc893511871c  gcc/init-regs.c
  dc217d9b1929e4e7a0f12c626df3a276  gcc/input.c
  69b0d5c7ea3266626a8fd1abc5d21809  gcc/input.h
  0f9a6404b0716dcd2273bcee5471a927  gcc/insn-addr.h
  a546259fb239feafd26288da3bd62101  gcc/insn-notes.def
! 8bed174953c395e2d3e78d6bbe6931b6  gcc/internal-fn.c
  6594b8ee3ed58306616248dfab3a856c  gcc/internal-fn.def
  a26e14c5103380e096d09c7f9c2d1518  gcc/internal-fn.h
  d59a6fb8775c3c59e37525da056a4e93  gcc/intl.c
  8ecacc88fa34f1b1759a956f9114da6d  gcc/intl.h
  6a04a4c4c045e89b1e214fcc50968993  gcc/ipa-chkp.c
  b0887d48f65d3f64dc7dc9d69a6e8495  gcc/ipa-chkp.h
! b5384914be9df84a8c6bded1c683e42b  gcc/ipa-comdats.c
! b781b3a1eb3f47e38ff8d32aebd7b405  gcc/ipa-cp.c
! e6b97a54f48e93606aa8b56b43079bba  gcc/ipa-devirt.c
! 2c6eb0e33e5711f500a077ebe8e8840b  gcc/ipa-icf-gimple.c
! 04e3ffaf0f32f0dbd7f9cfc16aa7aad2  gcc/ipa-icf-gimple.h
! 116c88a30c94408609f84a7b1e839f42  gcc/ipa-icf.c
! 42742975b2cd251c090bb5c09b66cb58  gcc/ipa-icf.h
  39329a5aa8d2a2c2538cc100d7e4584d  gcc/ipa-inline-analysis.c
! b0226bf864df6fa6550b450be4cdd2f0  gcc/ipa-inline-transform.c
  39c6670b02fd6ec3e053b1515ded41c9  gcc/ipa-inline.c
  bfc4b2e5277e500157ea9170486883a6  gcc/ipa-inline.h
! 32839e1f99db3b81577bf8bd70e6063d  gcc/ipa-polymorphic-call.c
  f7aebde2da66180189ddee43f00d4cbd  gcc/ipa-profile.c
! d38d619ae9c4d5cb2ba1d2f6c7f0bbd6  gcc/ipa-prop.c
  f67c6ffdd02d46b616a84da86443b9e9  gcc/ipa-prop.h
! 910a00207676a8e3463abc2cb1a47612  gcc/ipa-pure-const.c
  23bf4b1c06616e79ee61985da15a3302  gcc/ipa-ref.c
  3595926385361b6de3a2b3c37fe83d0c  gcc/ipa-ref.h
  79df2ef5a960075d6ffaf053654ccfd1  gcc/ipa-reference.c
  856043eb3d9f133e07b32665a5ecfe35  gcc/ipa-reference.h
! 900a3e264d5af4a42ec7fcc7b8e38f6b  gcc/ipa-split.c
  9053da93e399b146bd50fe8704f1666d  gcc/ipa-utils.c
  e58d0e497af408fa0e8cba93df83406b  gcc/ipa-utils.h
! a0962e386e9c161dab905e4f6f3ce489  gcc/ipa-visibility.c
  19ca0f2cf8d512ff6924e42eba32a933  gcc/ipa.c
! 29d3a4f9af7d55ebd868c9c83efbd9ff  gcc/ira-build.c
  e4e886635ec297de8005acf5e194531d  gcc/ira-color.c
  e81226cec09eafb085efa7518e8009ea  gcc/ira-conflicts.c
! 4c5b2a8da4a0ce491ac28d73c2462397  gcc/ira-costs.c
  c9181164bc346614433368b8485fb29e  gcc/ira-emit.c
! 348db6c35b96f4b63b2272622cb4c740  gcc/ira-int.h
! 44ca309cb2f694a0211995d530b1b076  gcc/ira-lives.c
  95cf1abe96c65b0acb4ad129db973e5f  gcc/ira.c
  e34ddccf14d87b7a61f2a272bbb8262d  gcc/ira.h
  e60d20de39e509fae6596f747effffb5  gcc/is-a.h
! 88b743a2f6fc089425c0b3ddae0342c6  gcc/java/ChangeLog
  507793f7d137759eaebce11bb6904781  gcc/java/ChangeLog.gimple-classes
  c52fb3faa0748d26588a8c62e7a032e3  gcc/java/ChangeLog.jit
  3becfaac793f49e1f52cd74e78172b48  gcc/java/ChangeLog.ptr
--- 4838,4893 ----
  1523b8d28fff01888d17f174fe20011c  gcc/ifcvt.h
  f933d194c4b3ac582e0ef8e88be285a5  gcc/inchash.c
  b204cad2fb3671fa87af8561f5be3f90  gcc/inchash.h
! 8277cefec288a827ddd34cb62bf04565  gcc/incpath.c
  9cf6fd175b70565987f279bc6640d9c9  gcc/incpath.h
  fe17c78b27ae9ee21279fc893511871c  gcc/init-regs.c
  dc217d9b1929e4e7a0f12c626df3a276  gcc/input.c
  69b0d5c7ea3266626a8fd1abc5d21809  gcc/input.h
  0f9a6404b0716dcd2273bcee5471a927  gcc/insn-addr.h
  a546259fb239feafd26288da3bd62101  gcc/insn-notes.def
! 8926b60753c895787b7707c4e599297e  gcc/internal-fn.c
  6594b8ee3ed58306616248dfab3a856c  gcc/internal-fn.def
  a26e14c5103380e096d09c7f9c2d1518  gcc/internal-fn.h
  d59a6fb8775c3c59e37525da056a4e93  gcc/intl.c
  8ecacc88fa34f1b1759a956f9114da6d  gcc/intl.h
  6a04a4c4c045e89b1e214fcc50968993  gcc/ipa-chkp.c
  b0887d48f65d3f64dc7dc9d69a6e8495  gcc/ipa-chkp.h
! 3b26e13b00ced1877be62ff341a343e8  gcc/ipa-comdats.c
! ea1cb676d510d22318b1e9b780bd1bd9  gcc/ipa-cp.c
! df1bbbdaa1ff5df5c3ad34b26f7f2807  gcc/ipa-devirt.c
! 4521a51cb8076a672ce0ed6ce06adc9a  gcc/ipa-icf-gimple.c
! 5a1a7b5c1097bab51b4cf465adda2d9a  gcc/ipa-icf-gimple.h
! b3282fc5dd4e5f594db085ad9227d68a  gcc/ipa-icf.c
! 1d0167a94867dc626b57893078e6f471  gcc/ipa-icf.h
  39329a5aa8d2a2c2538cc100d7e4584d  gcc/ipa-inline-analysis.c
! 48ec3afe3793fdd6730e461d8d9619cb  gcc/ipa-inline-transform.c
  39c6670b02fd6ec3e053b1515ded41c9  gcc/ipa-inline.c
  bfc4b2e5277e500157ea9170486883a6  gcc/ipa-inline.h
! 020e6c48afdc639af066946b518b5aa1  gcc/ipa-polymorphic-call.c
  f7aebde2da66180189ddee43f00d4cbd  gcc/ipa-profile.c
! 6ddf168d584b2ef5f39acfc9f41896fd  gcc/ipa-prop.c
  f67c6ffdd02d46b616a84da86443b9e9  gcc/ipa-prop.h
! 74335c370fa94cae0775ecaf6644e3b0  gcc/ipa-pure-const.c
  23bf4b1c06616e79ee61985da15a3302  gcc/ipa-ref.c
  3595926385361b6de3a2b3c37fe83d0c  gcc/ipa-ref.h
  79df2ef5a960075d6ffaf053654ccfd1  gcc/ipa-reference.c
  856043eb3d9f133e07b32665a5ecfe35  gcc/ipa-reference.h
! 0bf106b273d61ebc36050b9dab96bc42  gcc/ipa-split.c
  9053da93e399b146bd50fe8704f1666d  gcc/ipa-utils.c
  e58d0e497af408fa0e8cba93df83406b  gcc/ipa-utils.h
! eaff1a7d2230022660ac0aeec2877f51  gcc/ipa-visibility.c
  19ca0f2cf8d512ff6924e42eba32a933  gcc/ipa.c
! 7acfb95df19a0e596367c72077924ea9  gcc/ira-build.c
  e4e886635ec297de8005acf5e194531d  gcc/ira-color.c
  e81226cec09eafb085efa7518e8009ea  gcc/ira-conflicts.c
! e3cd76066abb8ba7aa5ba02a864c48aa  gcc/ira-costs.c
  c9181164bc346614433368b8485fb29e  gcc/ira-emit.c
! d125c66bec1f425e441321fc117b288c  gcc/ira-int.h
! 3747938b69876e1f7725a4f97638ac2e  gcc/ira-lives.c
  95cf1abe96c65b0acb4ad129db973e5f  gcc/ira.c
  e34ddccf14d87b7a61f2a272bbb8262d  gcc/ira.h
  e60d20de39e509fae6596f747effffb5  gcc/is-a.h
! 6693994932d700b7395384cc1f2ebc92  gcc/java/ChangeLog
  507793f7d137759eaebce11bb6904781  gcc/java/ChangeLog.gimple-classes
  c52fb3faa0748d26588a8c62e7a032e3  gcc/java/ChangeLog.jit
  3becfaac793f49e1f52cd74e78172b48  gcc/java/ChangeLog.ptr
*************** b4b149d7d7e53bcbb00d5852b7882509  gcc/ja
*** 4928,4934 ****
  08e8d232e5fcded6e3949cfd4c902663  gcc/java/win32-host.c
  65ea443b3147ee21cab24cb9875d64a8  gcc/java/zextract.c
  f8e1a3a1f14f5623c8747bfcb0be82b2  gcc/java/zipfile.h
! 7e74a5cd58fec567076f2ac48f621945  gcc/jit/ChangeLog
  6071bdf04fb356c5ac99a99ec00c9a12  gcc/jit/ChangeLog.jit
  6e0782f176adb9efa079d6f0847a7fd4  gcc/jit/Make-lang.in
  fd0d76b6467c987f813d430a35d4760a  gcc/jit/TODO.rst
--- 4932,4938 ----
  08e8d232e5fcded6e3949cfd4c902663  gcc/java/win32-host.c
  65ea443b3147ee21cab24cb9875d64a8  gcc/java/zextract.c
  f8e1a3a1f14f5623c8747bfcb0be82b2  gcc/java/zipfile.h
! e28f1238b76f74215c45b0090a8935aa  gcc/jit/ChangeLog
  6071bdf04fb356c5ac99a99ec00c9a12  gcc/jit/ChangeLog.jit
  6e0782f176adb9efa079d6f0847a7fd4  gcc/jit/Make-lang.in
  fd0d76b6467c987f813d430a35d4760a  gcc/jit/TODO.rst
*************** d4c5f051c30b621f3b8d02812e5aa08e  gcc/la
*** 5019,5027 ****
  83de5c6450456e215a5484083afcd32a  gcc/limity.h
  fda2af877f444efda1bdbe126599fa73  gcc/lists.c
  16086d64468975aa4ba54f78d2a7b542  gcc/lock-and-run.sh
! c623bd250dfc88ff9ce6e23df81dbde0  gcc/loop-doloop.c
  d5693c7b25c48b340a03d9560a656315  gcc/loop-init.c
! 4c60fadaaa7a541886b6d3c008edeb62  gcc/loop-invariant.c
  560d16a3d24598e0bbfacce458a7bffa  gcc/loop-iv.c
  20d276b6c214fab0292ee0cf2715eae3  gcc/loop-unroll.c
  a1e24a43b379e444b43e7c1b6f057e19  gcc/loop-unroll.h
--- 5023,5031 ----
  83de5c6450456e215a5484083afcd32a  gcc/limity.h
  fda2af877f444efda1bdbe126599fa73  gcc/lists.c
  16086d64468975aa4ba54f78d2a7b542  gcc/lock-and-run.sh
! d3f29156a39f22f033348387e98e18aa  gcc/loop-doloop.c
  d5693c7b25c48b340a03d9560a656315  gcc/loop-init.c
! 83a00b48e313714d61e5b8fce1409ebe  gcc/loop-invariant.c
  560d16a3d24598e0bbfacce458a7bffa  gcc/loop-iv.c
  20d276b6c214fab0292ee0cf2715eae3  gcc/loop-unroll.c
  a1e24a43b379e444b43e7c1b6f057e19  gcc/loop-unroll.h
*************** d4fb1f72af6ec7ec0cbd43b9b6515c6c  gcc/lo
*** 5029,5043 ****
  0ab893dbb9d43888870be388de205291  gcc/lower-subreg.h
  6c1d564997725e80cedeff2141e592b9  gcc/lra-assigns.c
  dc71edd55837d2d00cc6e82b7a92ad5e  gcc/lra-coalesce.c
! 260b5704ddac58a611fd4a56987102ab  gcc/lra-constraints.c
  15ac225970eb30ea8c5fc93f9965a836  gcc/lra-eliminations.c
  e759e8f21defccbbe41bf7091b54c5c6  gcc/lra-int.h
  b785d9ad8fb335ca8eb01f15567e33d4  gcc/lra-lives.c
! 3db672b53c7a7a17b70a1e02e053bdd6  gcc/lra-remat.c
  fffe3d3a5e547a6a8c53991f17ad5e3a  gcc/lra-spills.c
  59ccff36582362bd7b314d65fabb20bd  gcc/lra.c
  85cddb1436a037afee85188e8d7e3827  gcc/lra.h
! 93b2df951953be6a8a51fbef03298132  gcc/lto-cgraph.c
  d9002c560058f527e232b70690c0c3fa  gcc/lto-compress.c
  029473d133948fb5843e83ae6e546d77  gcc/lto-compress.h
  1de0b585bf600e31ee8375af45f4bb7f  gcc/lto-opts.c
--- 5033,5047 ----
  0ab893dbb9d43888870be388de205291  gcc/lower-subreg.h
  6c1d564997725e80cedeff2141e592b9  gcc/lra-assigns.c
  dc71edd55837d2d00cc6e82b7a92ad5e  gcc/lra-coalesce.c
! ca21bda665e913cc80711c857734b278  gcc/lra-constraints.c
  15ac225970eb30ea8c5fc93f9965a836  gcc/lra-eliminations.c
  e759e8f21defccbbe41bf7091b54c5c6  gcc/lra-int.h
  b785d9ad8fb335ca8eb01f15567e33d4  gcc/lra-lives.c
! 2c5156a7e38f443942a60dff06eded60  gcc/lra-remat.c
  fffe3d3a5e547a6a8c53991f17ad5e3a  gcc/lra-spills.c
  59ccff36582362bd7b314d65fabb20bd  gcc/lra.c
  85cddb1436a037afee85188e8d7e3827  gcc/lra.h
! ebb524429f17fc468503fc255ce09041  gcc/lto-cgraph.c
  d9002c560058f527e232b70690c0c3fa  gcc/lto-compress.c
  029473d133948fb5843e83ae6e546d77  gcc/lto-compress.h
  1de0b585bf600e31ee8375af45f4bb7f  gcc/lto-opts.c
*************** d9002c560058f527e232b70690c0c3fa  gcc/lt
*** 5047,5062 ****
  0fd79fbbb87f675c868496ec56eb2464  gcc/lto-streamer-in.c
  c002c649a0c0f0bb433ed63351e9d0c9  gcc/lto-streamer-out.c
  11ffe5264c72c7306e0fe341ecf592f3  gcc/lto-streamer.c
! 6a166d540f27a847aeb132fe66cbc171  gcc/lto-streamer.h
  b6075bf1268a61c1f26d7c1b31bb2469  gcc/lto-wrapper.c
! 9bfe3f2f9cd9192f5f256e427a425665  gcc/lto/ChangeLog
  7fe3fe76aea6d1b48ffc76363c865d97  gcc/lto/Make-lang.in
  ee021832005b23fd5ecb90bf3db3e01d  gcc/lto/common.c
  e0b7396a801f9facb0387b0a80085c06  gcc/lto/common.h
  c3b5fca213cfc77879bd63105f11ac96  gcc/lto/config-lang.in
  af2109b68ffeb6f759219d61dac47473  gcc/lto/lang-specs.h
  36f7f8f251a80790e991707ed03bbb10  gcc/lto/lang.opt
! ab6c518f11be5961f6199141903c3b7f  gcc/lto/lto-lang.c
  b4c89b44738c3b08be9bc1236e731375  gcc/lto/lto-object.c
  1c544c11eb71bef3c88a678397042f13  gcc/lto/lto-partition.c
  4c6f467120d3693159167bb7ceac64bb  gcc/lto/lto-partition.h
--- 5051,5066 ----
  0fd79fbbb87f675c868496ec56eb2464  gcc/lto-streamer-in.c
  c002c649a0c0f0bb433ed63351e9d0c9  gcc/lto-streamer-out.c
  11ffe5264c72c7306e0fe341ecf592f3  gcc/lto-streamer.c
! 184f1c20154d0f212fa58ac8d13ca917  gcc/lto-streamer.h
  b6075bf1268a61c1f26d7c1b31bb2469  gcc/lto-wrapper.c
! 1da49bc8e48ab89c89f71cbb598d1b0e  gcc/lto/ChangeLog
  7fe3fe76aea6d1b48ffc76363c865d97  gcc/lto/Make-lang.in
  ee021832005b23fd5ecb90bf3db3e01d  gcc/lto/common.c
  e0b7396a801f9facb0387b0a80085c06  gcc/lto/common.h
  c3b5fca213cfc77879bd63105f11ac96  gcc/lto/config-lang.in
  af2109b68ffeb6f759219d61dac47473  gcc/lto/lang-specs.h
  36f7f8f251a80790e991707ed03bbb10  gcc/lto/lang.opt
! 038349ac0d276d897ef7a6063325f17f  gcc/lto/lto-lang.c
  b4c89b44738c3b08be9bc1236e731375  gcc/lto/lto-object.c
  1c544c11eb71bef3c88a678397042f13  gcc/lto/lto-partition.c
  4c6f467120d3693159167bb7ceac64bb  gcc/lto/lto-partition.h
*************** ef201965affcc6b74d29e1ea6105b070  gcc/lt
*** 5067,5079 ****
  6a20a37f7aceadbd054c67522e57fd1b  gcc/machmode.def
  89aa6d8f3209ccf7ec9dd69897a8063f  gcc/machmode.h
  898e96de756ae0ccc83f01ba5a426f5d  gcc/main.c
! e134e6365e1eb8987701b988dccca6dd  gcc/match.pd
  947ba21423006c901f25943a744f2d9e  gcc/mcf.c
  d52335c26579ab1f3fc13b7b18d505b0  gcc/mkconfig.sh
  2b9b46e97d3e14352f599686f0d91b48  gcc/mode-classes.def
  ef14a108aa69a87062b7c18a11716ff8  gcc/mode-switching.c
  ce508eb66e3b05228233b1de1d583e3f  gcc/modulo-sched.c
! fabe777608385611fa5c604f639acad4  gcc/objc/ChangeLog
  1467c556ec4e053e2361586f54a9427b  gcc/objc/Make-lang.in
  8c9cfeb579f17a1b0cd5a4c3aa9c87f9  gcc/objc/config-lang.in
  d2fea098d2345e086d9552320b97bf70  gcc/objc/lang-specs.h
--- 5071,5083 ----
  6a20a37f7aceadbd054c67522e57fd1b  gcc/machmode.def
  89aa6d8f3209ccf7ec9dd69897a8063f  gcc/machmode.h
  898e96de756ae0ccc83f01ba5a426f5d  gcc/main.c
! 11781c9d3eeeadc970201c7bee29a3de  gcc/match.pd
  947ba21423006c901f25943a744f2d9e  gcc/mcf.c
  d52335c26579ab1f3fc13b7b18d505b0  gcc/mkconfig.sh
  2b9b46e97d3e14352f599686f0d91b48  gcc/mode-classes.def
  ef14a108aa69a87062b7c18a11716ff8  gcc/mode-switching.c
  ce508eb66e3b05228233b1de1d583e3f  gcc/modulo-sched.c
! 333d922691950355dc85af8f5aa5e918  gcc/objc/ChangeLog
  1467c556ec4e053e2361586f54a9427b  gcc/objc/Make-lang.in
  8c9cfeb579f17a1b0cd5a4c3aa9c87f9  gcc/objc/config-lang.in
  d2fea098d2345e086d9552320b97bf70  gcc/objc/lang-specs.h
*************** c121eaad475029c76161c850fe904332  gcc/ob
*** 5092,5098 ****
  ef6bc5810d2f1463e4f246f04ee10ad3  gcc/objc/objc-runtime-shared-support.c
  6bbbb36e7906ba58ad348d23f81c65d1  gcc/objc/objc-runtime-shared-support.h
  49184ed37a18e364382ab3d427160ae3  gcc/objc/objc-tree.def
! db01f782ccefe5c2b5e40e1b59ecb239  gcc/objcp/ChangeLog
  a1b9aa61b7cb7b3df974d6c6d567fc6a  gcc/objcp/Make-lang.in
  0dc3f5bf41dd77ca6f950b9b0959a881  gcc/objcp/config-lang.in
  4bd28419f45a1369fd9b3a53e7ddb458  gcc/objcp/lang-specs.h
--- 5096,5102 ----
  ef6bc5810d2f1463e4f246f04ee10ad3  gcc/objc/objc-runtime-shared-support.c
  6bbbb36e7906ba58ad348d23f81c65d1  gcc/objc/objc-runtime-shared-support.h
  49184ed37a18e364382ab3d427160ae3  gcc/objc/objc-tree.def
! 7d105671c732ad7cf884a0b19c791449  gcc/objcp/ChangeLog
  a1b9aa61b7cb7b3df974d6c6d567fc6a  gcc/objcp/Make-lang.in
  0dc3f5bf41dd77ca6f950b9b0959a881  gcc/objcp/config-lang.in
  4bd28419f45a1369fd9b3a53e7ddb458  gcc/objcp/lang-specs.h
*************** eb0ac940c858617b72ddf7bb9d1fa1ff  gcc/ob
*** 5102,5108 ****
  ef525ad472805942e97966c81b2cf98c  gcc/omega.c
  9ba04ab87d1f2b7bd95c37f481d91719  gcc/omega.h
  937086ff8c81246b55c72f0a5940d3fa  gcc/omp-builtins.def
! afa25545788bbf7222fd251f45fef098  gcc/omp-low.c
  cdad0b8e8f0acb46eba142b7349eb105  gcc/omp-low.h
  b43078b5e309d8ec060ac9c1d2262046  gcc/opt-functions.awk
  531f6ab0535206ae8f88cfc583047c74  gcc/opt-gather.awk
--- 5106,5112 ----
  ef525ad472805942e97966c81b2cf98c  gcc/omega.c
  9ba04ab87d1f2b7bd95c37f481d91719  gcc/omega.h
  937086ff8c81246b55c72f0a5940d3fa  gcc/omp-builtins.def
! 7e0509efc86e1619c834f3e1ddfb5108  gcc/omp-low.c
  cdad0b8e8f0acb46eba142b7349eb105  gcc/omp-low.h
  b43078b5e309d8ec060ac9c1d2262046  gcc/opt-functions.awk
  531f6ab0535206ae8f88cfc583047c74  gcc/opt-gather.awk
*************** c27b895c4dcc99c11261c54c56474ddf  gcc/op
*** 5121,5127 ****
  667562fe457e93a68c3fdb017d7785f0  gcc/opts.h
  48611d87a9c47d84d67a4d63c7820030  gcc/output.h
  6094d598ea4879f93365d96663822e74  gcc/params.c
! 4e861751cfff7fa77f622659361dc360  gcc/params.def
  df3d2de1b60c9b25357fc8e3441ce5de  gcc/params.h
  7d06dc033a03de27413e72dc19f1f9bb  gcc/pass_manager.h
  bb60fec484b549273d526c63a6ff87dc  gcc/passes.c
--- 5125,5131 ----
  667562fe457e93a68c3fdb017d7785f0  gcc/opts.h
  48611d87a9c47d84d67a4d63c7820030  gcc/output.h
  6094d598ea4879f93365d96663822e74  gcc/params.c
! b1c8fa43c4d19f845f1d42e17fac7e75  gcc/params.def
  df3d2de1b60c9b25357fc8e3441ce5de  gcc/params.h
  7d06dc033a03de27413e72dc19f1f9bb  gcc/pass_manager.h
  bb60fec484b549273d526c63a6ff87dc  gcc/passes.c
*************** bb60fec484b549273d526c63a6ff87dc  gcc/pa
*** 5129,5135 ****
  9d5e6e250abd1b626d9a8afd3090a00d  gcc/plugin.c
  0735a1285e9a433a8e80730829d7f2b6  gcc/plugin.def
  e5b16a08af067e51b4068cd59f09dd96  gcc/plugin.h
! 602e325a3a0ab0ccf43cfb3b216bb7e8  gcc/po/ChangeLog
  fa5d07665ec5d78cd3f885027f0e75e6  gcc/po/EXCLUDES
  4b862181f660d1e76646078a7cce491c  gcc/po/be.gmo
  cbb8879ea83c2a58585341e7db66c1c3  gcc/po/be.po
--- 5133,5139 ----
  9d5e6e250abd1b626d9a8afd3090a00d  gcc/plugin.c
  0735a1285e9a433a8e80730829d7f2b6  gcc/plugin.def
  e5b16a08af067e51b4068cd59f09dd96  gcc/plugin.h
! c94a1c2423342e7e62ca2777b030acc6  gcc/po/ChangeLog
  fa5d07665ec5d78cd3f885027f0e75e6  gcc/po/EXCLUDES
  4b862181f660d1e76646078a7cce491c  gcc/po/be.gmo
  cbb8879ea83c2a58585341e7db66c1c3  gcc/po/be.po
*************** c35c2dc1bf80c9251f8795761ef92904  gcc/po
*** 5141,5152 ****
  b382dc0228f67c34380c0dfb2a949cc8  gcc/po/el.po
  1e8383b39038653a224bd77e57da7ce0  gcc/po/es.gmo
  ce1e6954f2164d9f21d16089deb11753  gcc/po/es.po
! 35fef64203930478b0a992d732f90728  gcc/po/exgettext
  ec05fb40e059ccb77494afe8b158837d  gcc/po/fi.gmo
  4fe96dcef025b4715ba668a39b9def94  gcc/po/fi.po
  c556290d184ee5eba9873b64b53a34b6  gcc/po/fr.gmo
  29c3946e69b8dc1f0c1b6b140d2e46c8  gcc/po/fr.po
! 80b7c77b2ec43eeedc37a179eed76569  gcc/po/gcc.pot
  04a69fc3fa81570a6d6672add9513f69  gcc/po/hr.gmo
  7148f8ccc1a9fa124d41c9021be179c2  gcc/po/hr.po
  61ff4405f5b1750e810013a3beb17805  gcc/po/id.gmo
--- 5145,5156 ----
  b382dc0228f67c34380c0dfb2a949cc8  gcc/po/el.po
  1e8383b39038653a224bd77e57da7ce0  gcc/po/es.gmo
  ce1e6954f2164d9f21d16089deb11753  gcc/po/es.po
! 51a9a1416caa32b625e9023f15e8b0c8  gcc/po/exgettext
  ec05fb40e059ccb77494afe8b158837d  gcc/po/fi.gmo
  4fe96dcef025b4715ba668a39b9def94  gcc/po/fi.po
  c556290d184ee5eba9873b64b53a34b6  gcc/po/fr.gmo
  29c3946e69b8dc1f0c1b6b140d2e46c8  gcc/po/fr.po
! 6b3c295a93d24e29a6d8658c55b000b8  gcc/po/gcc.pot
  04a69fc3fa81570a6d6672add9513f69  gcc/po/hr.gmo
  7148f8ccc1a9fa124d41c9021be179c2  gcc/po/hr.po
  61ff4405f5b1750e810013a3beb17805  gcc/po/id.gmo
*************** b9a3e2c3d2f8acd98d9fa4941fc9520f  gcc/po
*** 5172,5184 ****
  942da546487579bede1fc9fcde51a84d  gcc/po/zh_TW.gmo
  13b738a3353f614dc55a82853e18a427  gcc/po/zh_TW.po
  694919e21f23219f50834f9f2af6cfd9  gcc/postreload-gcse.c
! 2a3b5b1129de159da4ede9aff0c197b4  gcc/postreload.c
  c57ff0badb528e99fd8dc7b847fb5a26  gcc/predict.c
  873f4671c1896c9ac3475f6140ff06b2  gcc/predict.def
  95fbd1ad395d8804878b3e717df8f000  gcc/predict.h
  648f7651124f5679e42bd33ebf6b122c  gcc/prefix.c
  ee46d16ac187739a468d1dbb63790e1f  gcc/prefix.h
! 4b5aa1dc5140d6642cdc50cd740af5fb  gcc/pretty-print.c
  79e9e788b154c4b7384707751d23aafe  gcc/pretty-print.h
  165e0c8986c8a45b7cac01647ae704cb  gcc/print-rtl.c
  a3aa88f0317794a1339678dd6fd285d4  gcc/print-rtl.h
--- 5176,5188 ----
  942da546487579bede1fc9fcde51a84d  gcc/po/zh_TW.gmo
  13b738a3353f614dc55a82853e18a427  gcc/po/zh_TW.po
  694919e21f23219f50834f9f2af6cfd9  gcc/postreload-gcse.c
! f5f9f9fad922b860879ab58ac717e712  gcc/postreload.c
  c57ff0badb528e99fd8dc7b847fb5a26  gcc/predict.c
  873f4671c1896c9ac3475f6140ff06b2  gcc/predict.def
  95fbd1ad395d8804878b3e717df8f000  gcc/predict.h
  648f7651124f5679e42bd33ebf6b122c  gcc/prefix.c
  ee46d16ac187739a468d1dbb63790e1f  gcc/prefix.h
! 7c22f3a03227890e475e189ac301c779  gcc/pretty-print.c
  79e9e788b154c4b7384707751d23aafe  gcc/pretty-print.h
  165e0c8986c8a45b7cac01647ae704cb  gcc/print-rtl.c
  a3aa88f0317794a1339678dd6fd285d4  gcc/print-rtl.h
*************** fd77568487c1fe402eca97688f752947  gcc/pr
*** 5189,5201 ****
  dc76f46d2eeced8f38682f36be741064  gcc/read-md.c
  04c30a58131d2ebea861021fcf0d50f2  gcc/read-md.h
  5e462cb7924857e24efd2c8590300935  gcc/read-rtl.c
! 04e063ee25989a1c9d882aac5dcdda42  gcc/real.c
  4f3223b1ab82b5189bf8c430cf63c34a  gcc/real.h
  3c8f7d610939ae09062b0ed80e244a0b  gcc/realmpfr.c
  bc7c71d90fb820eced6c6a523c975fa2  gcc/realmpfr.h
  d0261a6e21bf53d52f47b58a9cfe6d15  gcc/recog.c
  976787b7cace175fee5d080a3e8f0cae  gcc/recog.h
! 909d9ba1f886c3cc281c6737248e92b6  gcc/ree.c
  11fefb6b381e6c6f9741dea0e80b30b2  gcc/reg-notes.def
  0bb03a2ed33b12e22c34eacb6ff7607e  gcc/reg-stack.c
  34ccb4ab602436370d790ea91d9f9c6c  gcc/regcprop.c
--- 5193,5205 ----
  dc76f46d2eeced8f38682f36be741064  gcc/read-md.c
  04c30a58131d2ebea861021fcf0d50f2  gcc/read-md.h
  5e462cb7924857e24efd2c8590300935  gcc/read-rtl.c
! 8dbc50aa9ec9911826b9548e2ac69848  gcc/real.c
  4f3223b1ab82b5189bf8c430cf63c34a  gcc/real.h
  3c8f7d610939ae09062b0ed80e244a0b  gcc/realmpfr.c
  bc7c71d90fb820eced6c6a523c975fa2  gcc/realmpfr.h
  d0261a6e21bf53d52f47b58a9cfe6d15  gcc/recog.c
  976787b7cace175fee5d080a3e8f0cae  gcc/recog.h
! b93e255b554267b593f9b2f56933db97  gcc/ree.c
  11fefb6b381e6c6f9741dea0e80b30b2  gcc/reg-notes.def
  0bb03a2ed33b12e22c34eacb6ff7607e  gcc/reg-stack.c
  34ccb4ab602436370d790ea91d9f9c6c  gcc/regcprop.c
*************** d2b5ad4ca4df71fa3ff7c30698e960c8  gcc/rt
*** 5219,5225 ****
  4992e1340dee083241ee6b9865a725e4  gcc/rtl-iter.h
  f5a76969d35052ffbe458cf48fd400aa  gcc/rtl.c
  59570b63c033e3dad5297bdef455c9a1  gcc/rtl.def
! e15e7203a3f256e05fbb30e9a33adc98  gcc/rtl.h
  46d83f8e19f75939527d9176be6248ec  gcc/rtlanal.c
  3c249e111fe25fd056c1ebbb92316bec  gcc/rtlhash.c
  7fa64a734faee469be2d12b982bec9b5  gcc/rtlhash.h
--- 5223,5229 ----
  4992e1340dee083241ee6b9865a725e4  gcc/rtl-iter.h
  f5a76969d35052ffbe458cf48fd400aa  gcc/rtl.c
  59570b63c033e3dad5297bdef455c9a1  gcc/rtl.def
! 5e227b9833168924aca7b75ac809eb8b  gcc/rtl.h
  46d83f8e19f75939527d9176be6248ec  gcc/rtlanal.c
  3c249e111fe25fd056c1ebbb92316bec  gcc/rtlhash.c
  7fa64a734faee469be2d12b982bec9b5  gcc/rtlhash.h
*************** aa85b29363ddccfea8598c2a9bb1beae  gcc/sd
*** 5240,5253 ****
  fe53b4099b1c74eec5a9462ee02557cf  gcc/sel-sched-dump.h
  8594969001452b444410fa47547f806c  gcc/sel-sched-ir.c
  f05e66bd3c548fe69a30f8758feeb4d3  gcc/sel-sched-ir.h
! 49db95bb2de47390cb531104e079b454  gcc/sel-sched.c
  00ee6e2727025221b5e4e5e700d59750  gcc/sel-sched.h
  5d5a59cc76c759e2435ab3490ec03e95  gcc/sese.c
  6cd9f1fd8ca10ea22532e4369881922c  gcc/sese.h
  6dbc2839dc1e1e5da92e34c8b0505340  gcc/shrink-wrap.c
  ae63ea15babd7306125f65e8b78f57d0  gcc/shrink-wrap.h
  13e62d00728279500588319d2e1f7c2e  gcc/signop.h
! 929717dbda122c6b6fd9a4a60ada37bc  gcc/simplify-rtx.c
  2450c48517f9299f947fa2f52d1c9f17  gcc/sparseset.c
  8aae43b08378c4b4b8bab0c26e2ef7e6  gcc/sparseset.h
  621d73e82722f13246ecdaae3f16fb7f  gcc/sreal.c
--- 5244,5257 ----
  fe53b4099b1c74eec5a9462ee02557cf  gcc/sel-sched-dump.h
  8594969001452b444410fa47547f806c  gcc/sel-sched-ir.c
  f05e66bd3c548fe69a30f8758feeb4d3  gcc/sel-sched-ir.h
! f0f43bb4606af7d309b5a879fe5ab44b  gcc/sel-sched.c
  00ee6e2727025221b5e4e5e700d59750  gcc/sel-sched.h
  5d5a59cc76c759e2435ab3490ec03e95  gcc/sese.c
  6cd9f1fd8ca10ea22532e4369881922c  gcc/sese.h
  6dbc2839dc1e1e5da92e34c8b0505340  gcc/shrink-wrap.c
  ae63ea15babd7306125f65e8b78f57d0  gcc/shrink-wrap.h
  13e62d00728279500588319d2e1f7c2e  gcc/signop.h
! 8875ddbc331dcd001f05e8ccd04ccdcd  gcc/simplify-rtx.c
  2450c48517f9299f947fa2f52d1c9f17  gcc/sparseset.c
  8aae43b08378c4b4b8bab0c26e2ef7e6  gcc/sparseset.h
  621d73e82722f13246ecdaae3f16fb7f  gcc/sreal.c
*************** fdf36d022d9280a7ede14deb4cbe938a  gcc/st
*** 5269,5275 ****
  245170483ff4eafae29d285ae8e77664  gcc/symbol-summary.h
  9363183ddca846c9d522bc3387a6207d  gcc/symtab.c
  8b3da6264f47d4c01dff953566a56308  gcc/sync-builtins.def
! 5bf9b81c9e308e967a7976cc0b642c47  gcc/system.h
  c9e80e7930ba1a3233936e81faeec627  gcc/target-def.h
  9f9c433b34da50be43735c4dafdc7174  gcc/target-globals.c
  3797eb8598e0134c86b76b90fe0e6c48  gcc/target-globals.h
--- 5273,5279 ----
  245170483ff4eafae29d285ae8e77664  gcc/symbol-summary.h
  9363183ddca846c9d522bc3387a6207d  gcc/symtab.c
  8b3da6264f47d4c01dff953566a56308  gcc/sync-builtins.def
! 2f9b9aa61c26fafe83857e5c65c9c613  gcc/system.h
  c9e80e7930ba1a3233936e81faeec627  gcc/target-def.h
  9f9c433b34da50be43735c4dafdc7174  gcc/target-globals.c
  3797eb8598e0134c86b76b90fe0e6c48  gcc/target-globals.h
*************** c9e80e7930ba1a3233936e81faeec627  gcc/ta
*** 5278,5284 ****
  81c28a0c9e11f47ae7bb9f605a04605d  gcc/target.h
  6f061e32f1df5951fadbe6697a0ac4c0  gcc/targhooks.c
  b87f0f1fa2618e2c9ecb005ac9659869  gcc/targhooks.h
! 8ffb152b1a3da92d2e40a2947946c177  gcc/testsuite/ChangeLog
  862f04afbd87da2cc6bc432c3f28430f  gcc/testsuite/ChangeLog-1993-2007
  029a5d8dacd25eb5d4711452ac448e5b  gcc/testsuite/ChangeLog-2008
  13ac28c41d51b66b4ec40dba6bd50f39  gcc/testsuite/ChangeLog-2009
--- 5282,5288 ----
  81c28a0c9e11f47ae7bb9f605a04605d  gcc/target.h
  6f061e32f1df5951fadbe6697a0ac4c0  gcc/targhooks.c
  b87f0f1fa2618e2c9ecb005ac9659869  gcc/targhooks.h
! c57b691977d2367879c2363abb99350d  gcc/testsuite/ChangeLog
  862f04afbd87da2cc6bc432c3f28430f  gcc/testsuite/ChangeLog-1993-2007
  029a5d8dacd25eb5d4711452ac448e5b  gcc/testsuite/ChangeLog-2008
  13ac28c41d51b66b4ec40dba6bd50f39  gcc/testsuite/ChangeLog-2009
*************** f79bc4a80b6890a56ed93a450311aa3f  gcc/te
*** 7914,7919 ****
--- 7918,7924 ----
  42fc3aa54365f66ed90d26e70e157cc5  gcc/testsuite/c-c++-common/Wunused-var-12.c
  c44ec4615d5347ff4cb4bb8dd31541a4  gcc/testsuite/c-c++-common/Wunused-var-13.c
  80c4ecb8009d5febfdba9eeaee769526  gcc/testsuite/c-c++-common/Wunused-var-14.c
+ 38f41715a5590e9152263fa65a5fd464  gcc/testsuite/c-c++-common/Wunused-var-16.c
  5f69d6398e9b0fc829351a16f994916d  gcc/testsuite/c-c++-common/Wunused-var-2.c
  8504217c544401c14012c8e1a1c18970  gcc/testsuite/c-c++-common/Wunused-var-3.c
  43839f1fa5726ea0a0d6e063d7980642  gcc/testsuite/c-c++-common/Wunused-var-4.c
*************** d96e86e0b770414e72de009b6c7afadd  gcc/te
*** 7980,7985 ****
--- 7985,7991 ----
  ae5400233bb23dafe56f543cc5bb1ba6  gcc/testsuite/c-c++-common/asan/pr63638.c
  0a221c339accacadef51e91e2f07b9ba  gcc/testsuite/c-c++-common/asan/pr63888.c
  2a794af8b446f3413fe5b973ea309b7b  gcc/testsuite/c-c++-common/asan/pr64820.c
+ d4cafd1e2a02428237d07dbd1a042e54  gcc/testsuite/c-c++-common/asan/pr79944.c
  e462ece8a21c17b73bf0f22d3042394c  gcc/testsuite/c-c++-common/asan/red-align-1.c
  25cb116750b1ce1623648a68019a3596  gcc/testsuite/c-c++-common/asan/red-align-2.c
  8940936501084c6e4d7f6d110ba612d8  gcc/testsuite/c-c++-common/asan/rlimit-mmap-test-1.c
*************** e123297fccae243c537f91e155c74a71  gcc/te
*** 8005,8010 ****
--- 8011,8017 ----
  6d7e356a55667553550e9cd33323e1f5  gcc/testsuite/c-c++-common/attributes-2.c
  9efe1db0eb6555094b02b42cc038c835  gcc/testsuite/c-c++-common/builtin-arith-overflow-1.c
  41df51bc4faa62cf4b0a5b0f48fd7eda  gcc/testsuite/c-c++-common/builtin-offsetof.c
+ baf6186d676fd9615e78346321a90ff8  gcc/testsuite/c-c++-common/builtin-shuffle-1.c
  1c5ba2eafe48e60b5503b568a5d0c9ac  gcc/testsuite/c-c++-common/cilk-plus/AN/an-if.c
  a888b5e17123e676b54fca597cbc0a44  gcc/testsuite/c-c++-common/cilk-plus/AN/array_test1.c
  08ef5fb4ef025ebba5f7a5d3f5d23e36  gcc/testsuite/c-c++-common/cilk-plus/AN/array_test2.c
*************** a1366bea9fa68e41aa711cae8e7ea133  gcc/te
*** 8316,8321 ****
--- 8323,8331 ----
  18a1208abfd097e948c6551f3813c293  gcc/testsuite/c-c++-common/gomp/pr67502.c
  e403fd2da7ac85d61ff83e1ef894ef8d  gcc/testsuite/c-c++-common/gomp/pr67517.c
  2e19a3386e433bba3b72ff1ec3df2cee  gcc/testsuite/c-c++-common/gomp/pr67521.c
+ 8d4187a1bda8777b2ff9ff3a8693ac86  gcc/testsuite/c-c++-common/gomp/pr71758.c
+ a1d1201800784f60e84899ae25155f9b  gcc/testsuite/c-c++-common/gomp/pr79512.c
+ b966b032e9791b6b1d299eec70706856  gcc/testsuite/c-c++-common/gomp/pr81006.c
  328147f679f9eac26be960bf85acb2e8  gcc/testsuite/c-c++-common/gomp/sections1.c
  c7cb982e272572b3d42948b23c3c6229  gcc/testsuite/c-c++-common/gomp/simd1.c
  3ffb158d7db65691583ca6ff7330457a  gcc/testsuite/c-c++-common/gomp/simd2.c
*************** e827ebe372e4239bd1ec76051f4882f1  gcc/te
*** 8406,8411 ****
--- 8416,8429 ----
  dc7d9d40dac973e012fc8b7b6f54d784  gcc/testsuite/c-c++-common/pr69764.c
  f4386df5fa5c32d56388c75bdf15c9d4  gcc/testsuite/c-c++-common/pr69797.c
  25c6ea4844eb15010d49a3780fb6bb37  gcc/testsuite/c-c++-common/pr70297.c
+ ccc164356d4817396e516749bf924ce8  gcc/testsuite/c-c++-common/pr70336.c
+ 787c05b57b9d12074e10b8dd90f2e31f  gcc/testsuite/c-c++-common/pr72747-1.c
+ e0a81999221bcfcb3f37370ca022637f  gcc/testsuite/c-c++-common/pr72747-2.c
+ aa9180dd8f8db71eedda52c54d5dcfe1  gcc/testsuite/c-c++-common/pr77624-1.c
+ 6d950c28409779b8786e764dbfa04ed7  gcc/testsuite/c-c++-common/pr77624-2.c
+ ce91ea7c46f421a0b712ff52ee4f9985  gcc/testsuite/c-c++-common/pr79641.c
+ 23a387907d550f4d99b8e38b9154c710  gcc/testsuite/c-c++-common/pr81052.c
+ 29c7ff6eb5caca1dd6391410ce6c69e4  gcc/testsuite/c-c++-common/pr82112.c
  b0ba836310044e7b419ef679f0b48d6f  gcc/testsuite/c-c++-common/raw-string-1.c
  554e7071d2525351de28445762633866  gcc/testsuite/c-c++-common/raw-string-10.c
  1183cc89c3223291d7813cf8d78ef4d6  gcc/testsuite/c-c++-common/raw-string-11.c
*************** da953592b5918925210396862fda7319  gcc/te
*** 8550,8555 ****
--- 8568,8574 ----
  52d73498f49b7b249b4b5a5652826619  gcc/testsuite/c-c++-common/tsan/pr65400-1.c
  695efb40d461078d61105c562aeff7de  gcc/testsuite/c-c++-common/tsan/pr65400-2.c
  5a0d8871e2454b025935b73f908b9ea9  gcc/testsuite/c-c++-common/tsan/pr65400-3.c
+ 94a3ce6b0420494c8401106bec4aeff5  gcc/testsuite/c-c++-common/tsan/pr68260.c
  9651a827618e2399b209ed88d7c818cb  gcc/testsuite/c-c++-common/tsan/race_on_barrier.c
  c17ef9001f4d2a242d6818763dfa63ff  gcc/testsuite/c-c++-common/tsan/race_on_barrier2.c
  e67a39a2873754e03375bb55c452b32a  gcc/testsuite/c-c++-common/tsan/race_on_mutex.c
*************** bf3eafbf8ab8751240e00f5411cf7d52  gcc/te
*** 8579,8584 ****
--- 8598,8604 ----
  3887eb3b39d6bb827c5b762941936069  gcc/testsuite/c-c++-common/ubsan/attrib-3.c
  572cbd8ec273eb277857a0fdb277eb0b  gcc/testsuite/c-c++-common/ubsan/attrib-4.c
  5faaf84c5345dab6d3aa98bf476cc4dc  gcc/testsuite/c-c++-common/ubsan/bounds-1.c
+ e41a9c9640280bfabdc970ff41f1e444  gcc/testsuite/c-c++-common/ubsan/bounds-13.c
  5ce7dbfd4301c9cde8b861eef45a151b  gcc/testsuite/c-c++-common/ubsan/bounds-2.c
  e7f60e0642d24587e57ad55271053c36  gcc/testsuite/c-c++-common/ubsan/bounds-3.c
  6f33417e60ac28a7874676d1ea062d3a  gcc/testsuite/c-c++-common/ubsan/bounds-4.c
*************** e421ddf2d69b41e79c4238d86ca23e02  gcc/te
*** 8596,8602 ****
  701ee447bdcb3bdd63f4e19e0aa275c7  gcc/testsuite/c-c++-common/ubsan/div-by-zero-5.c
  f1d5ba00cab5b6e91752dc500c497bad  gcc/testsuite/c-c++-common/ubsan/div-by-zero-6.c
  be42c7c0119ada6c8b75859883b7947d  gcc/testsuite/c-c++-common/ubsan/div-by-zero-7.c
! eb238d1dcc8f0f542f985153d56ddefa  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-1.c
  4051451bd6cecbd812bae83ec9c07afd  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-10.c
  b089faa4c8cfdb57b56ef700c240d0a9  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-2.c
  32890d6e68882ccf1b8ee07e61d91f10  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-3.c
--- 8616,8622 ----
  701ee447bdcb3bdd63f4e19e0aa275c7  gcc/testsuite/c-c++-common/ubsan/div-by-zero-5.c
  f1d5ba00cab5b6e91752dc500c497bad  gcc/testsuite/c-c++-common/ubsan/div-by-zero-6.c
  be42c7c0119ada6c8b75859883b7947d  gcc/testsuite/c-c++-common/ubsan/div-by-zero-7.c
! 6726dc6b32348d286beda628454d50b9  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-1.c
  4051451bd6cecbd812bae83ec9c07afd  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-10.c
  b089faa4c8cfdb57b56ef700c240d0a9  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-2.c
  32890d6e68882ccf1b8ee07e61d91f10  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-3.c
*************** a9f3dd0d1bd6ea12b3ec1926c0ec043d  gcc/te
*** 8627,8633 ****
  76d40946b1ad5e4265503cdfd4a64388  gcc/testsuite/c-c++-common/ubsan/null-8.c
  effe9084cb4356fb8ac72c7ca46102b0  gcc/testsuite/c-c++-common/ubsan/null-9.c
  e57e483ed447f5dac34abe7e805f8853  gcc/testsuite/c-c++-common/ubsan/object-size-1.c
! 2aa3a2a7838e282f2118621d0f4258bc  gcc/testsuite/c-c++-common/ubsan/object-size-10.c
  702485ed4844237ef8004854e7eb54c1  gcc/testsuite/c-c++-common/ubsan/object-size-2.c
  9da79940216d11d0776c0614205c2ffd  gcc/testsuite/c-c++-common/ubsan/object-size-3.c
  585d2490d604dfc496c6a3e2c197c955  gcc/testsuite/c-c++-common/ubsan/object-size-4.c
--- 8647,8653 ----
  76d40946b1ad5e4265503cdfd4a64388  gcc/testsuite/c-c++-common/ubsan/null-8.c
  effe9084cb4356fb8ac72c7ca46102b0  gcc/testsuite/c-c++-common/ubsan/null-9.c
  e57e483ed447f5dac34abe7e805f8853  gcc/testsuite/c-c++-common/ubsan/object-size-1.c
! 780d9ac0beb072d3908d458ec96fddb5  gcc/testsuite/c-c++-common/ubsan/object-size-10.c
  702485ed4844237ef8004854e7eb54c1  gcc/testsuite/c-c++-common/ubsan/object-size-2.c
  9da79940216d11d0776c0614205c2ffd  gcc/testsuite/c-c++-common/ubsan/object-size-3.c
  585d2490d604dfc496c6a3e2c197c955  gcc/testsuite/c-c++-common/ubsan/object-size-4.c
*************** e57e483ed447f5dac34abe7e805f8853  gcc/te
*** 8635,8641 ****
  dd5de113b9d39840cc410d98a0688b16  gcc/testsuite/c-c++-common/ubsan/object-size-6.c
  96b49a07fd85e59fcedf960d1be8613f  gcc/testsuite/c-c++-common/ubsan/object-size-7.c
  dbd64d943b2a43cb0a2ae830e616a9f1  gcc/testsuite/c-c++-common/ubsan/object-size-8.c
! ef97140b52ae32ddc551379745102a76  gcc/testsuite/c-c++-common/ubsan/object-size-9.c
  0cec8e20d85727de45815056e293d32a  gcc/testsuite/c-c++-common/ubsan/overflow-1.c
  20327c28f0f8a29693dcdbef9d007593  gcc/testsuite/c-c++-common/ubsan/overflow-2.c
  2f624f3189625b04a455b2b21845fd79  gcc/testsuite/c-c++-common/ubsan/overflow-add-1.c
--- 8655,8661 ----
  dd5de113b9d39840cc410d98a0688b16  gcc/testsuite/c-c++-common/ubsan/object-size-6.c
  96b49a07fd85e59fcedf960d1be8613f  gcc/testsuite/c-c++-common/ubsan/object-size-7.c
  dbd64d943b2a43cb0a2ae830e616a9f1  gcc/testsuite/c-c++-common/ubsan/object-size-8.c
! f03206b2f305dec8599da7323774aba8  gcc/testsuite/c-c++-common/ubsan/object-size-9.c
  0cec8e20d85727de45815056e293d32a  gcc/testsuite/c-c++-common/ubsan/overflow-1.c
  20327c28f0f8a29693dcdbef9d007593  gcc/testsuite/c-c++-common/ubsan/overflow-2.c
  2f624f3189625b04a455b2b21845fd79  gcc/testsuite/c-c++-common/ubsan/overflow-add-1.c
*************** e448ddddec48e19348734e1bc0fa2581  gcc/te
*** 8683,8688 ****
--- 8703,8709 ----
  a8aa1b8550acd5ba45ee24145333c990  gcc/testsuite/c-c++-common/ubsan/pr66908.c
  ffc7c68789ff080a9c2dc0100772c9ea  gcc/testsuite/c-c++-common/ubsan/pr67921.c
  9bd2c80828bcc0260a30db4f41b6dd8f  gcc/testsuite/c-c++-common/ubsan/pr68142.c
+ 02f7c7e113837b0933f7c0a1178985ca  gcc/testsuite/c-c++-common/ubsan/pr81604.c
  fad43f861feeb312ec336937b2ad2443  gcc/testsuite/c-c++-common/ubsan/recovery-1.c
  5bb4d0c13ed60e4d8054523bc5e48304  gcc/testsuite/c-c++-common/ubsan/recovery-2.c
  898ddf0e3a5900b4cbaf5c487db29199  gcc/testsuite/c-c++-common/ubsan/recovery-3.c
*************** a762b6bd97faadf1c7c4e9c8168ef73a  gcc/te
*** 8728,8734 ****
  6ecac8feb023aa9a744a4ae8793c2e21  gcc/testsuite/c-c++-common/vector-compare-1.c
  f8659571f3f421873f7c60e1570d92dd  gcc/testsuite/c-c++-common/vector-compare-2.c
  0b88b6a257d580d32e1a5b0e87ac7c64  gcc/testsuite/c-c++-common/vector-compare-3.c
! cc521269ae5296ce5a1f014d7eff58fb  gcc/testsuite/c-c++-common/vector-compare-4.c
  1e47ef8c1dfa5108f30fd869de0fe86c  gcc/testsuite/c-c++-common/vector-init-1.c
  352717900a7e0ec3677f617f1400c58a  gcc/testsuite/c-c++-common/vector-init-2.c
  24c50d3f930b42bd586d90e6dd9c9dac  gcc/testsuite/c-c++-common/vector-scalar-2.c
--- 8749,8755 ----
  6ecac8feb023aa9a744a4ae8793c2e21  gcc/testsuite/c-c++-common/vector-compare-1.c
  f8659571f3f421873f7c60e1570d92dd  gcc/testsuite/c-c++-common/vector-compare-2.c
  0b88b6a257d580d32e1a5b0e87ac7c64  gcc/testsuite/c-c++-common/vector-compare-3.c
! ade6a1419310a6c8a93a2c42d7981a22  gcc/testsuite/c-c++-common/vector-compare-4.c
  1e47ef8c1dfa5108f30fd869de0fe86c  gcc/testsuite/c-c++-common/vector-init-1.c
  352717900a7e0ec3677f617f1400c58a  gcc/testsuite/c-c++-common/vector-init-2.c
  24c50d3f930b42bd586d90e6dd9c9dac  gcc/testsuite/c-c++-common/vector-scalar-2.c
*************** e472f2ce37f2b55b1358ec08717d9f08  gcc/te
*** 8954,8959 ****
--- 8975,8982 ----
  74a04a20e12a8acd0fd7d05742cf8d63  gcc/testsuite/g++.dg/asan/pr62017.C
  505943436d80a41b5e95bf0b67db97cd  gcc/testsuite/g++.dg/asan/pr64937.C
  461bc5f4392764dda9dd67ad1c3ab6a0  gcc/testsuite/g++.dg/asan/pr65004.C
+ 86c19e1b42266f9002fd92e21d16f1d7  gcc/testsuite/g++.dg/asan/pr77396-2.C
+ 68963853257ccf17297ec53bb77fa2bf  gcc/testsuite/g++.dg/asan/pr77396.C
  9c127ef1a489fa3066b519905bbcd4df  gcc/testsuite/g++.dg/asan/sanitizer_pthread_wrappers.h
  ec57ce9e20b59de0ebec29f657a688f0  gcc/testsuite/g++.dg/asan/sanitizer_test_config.h
  55a37a27a50226341bc745f47d1908c5  gcc/testsuite/g++.dg/asan/sanitizer_test_utils.h
*************** e17f4f7218a49c4d8a14211f32d8e747  gcc/te
*** 9256,9261 ****
--- 9279,9285 ----
  74bb2cd707774dcc79b45b939b21d2a8  gcc/testsuite/g++.dg/cpp0x/Wnarrowing3.C
  98f5997ac53fff61b85f99bfe358a506  gcc/testsuite/g++.dg/cpp0x/Wnarrowing4.C
  6ae3451e0c7b222e73c985a0c76a4253  gcc/testsuite/g++.dg/cpp0x/Wunused-parm.C
+ c9c65f2ce729014de1f8d5a02bf08a2a  gcc/testsuite/g++.dg/cpp0x/Wunused-variable-1.C
  948a776d6405969529e65e69911b6f98  gcc/testsuite/g++.dg/cpp0x/Wzero-as-null-pointer-constant-1.C
  1821a76c969bbe9fe98225106370d360  gcc/testsuite/g++.dg/cpp0x/Wzero-as-null-pointer-constant-2.C
  1388db9b52c8fb258faed2c95049bb99  gcc/testsuite/g++.dg/cpp0x/__func__.C
*************** ad96b3db3327ae43c2490e49c0c6271b  gcc/te
*** 9572,9577 ****
--- 9596,9602 ----
  42b085cfa5a3a60f9db66f7cc0e24a06  gcc/testsuite/g++.dg/cpp0x/constexpr-initlist9.C
  683db5db98fc74d6eadc7aa9954bdb28  gcc/testsuite/g++.dg/cpp0x/constexpr-invisiref1.C
  37f592a6d675c9e237fe68fa9fdf71ca  gcc/testsuite/g++.dg/cpp0x/constexpr-is_literal.C
+ 78f36282c1b77dbf3aea60391389914d  gcc/testsuite/g++.dg/cpp0x/constexpr-list1.C
  25358bf087f99e99f8fbfc8bcd9f01be  gcc/testsuite/g++.dg/cpp0x/constexpr-main.C
  f6a2053c56fbea1b283c4494a5d9c1c9  gcc/testsuite/g++.dg/cpp0x/constexpr-memfn1.C
  211c953e7e3e1153239acc0f3fee4960  gcc/testsuite/g++.dg/cpp0x/constexpr-missing.C
*************** f48062e4d0290e1ca4859c283ed90e0f  gcc/te
*** 9967,9972 ****
--- 9992,9998 ----
  21ffb7b66577a1e363c063bd539c7530  gcc/testsuite/g++.dg/cpp0x/gen-attrs-58.C
  8b1eab7dca23abfa68d79475abe6ca6d  gcc/testsuite/g++.dg/cpp0x/gen-attrs-59.C
  d1722efa262e03d4b29a04648feeaa80  gcc/testsuite/g++.dg/cpp0x/gen-attrs-6.C
+ b151953ee723cc3bd3afc60e2ad0e6ad  gcc/testsuite/g++.dg/cpp0x/gen-attrs-62.C
  f55fa66c82d267feca5db82dc835210a  gcc/testsuite/g++.dg/cpp0x/gen-attrs-7.C
  e0b4f953ad274eb8ec84b8e630f87d3a  gcc/testsuite/g++.dg/cpp0x/gen-attrs-8.C
  5dd92815927177080853d47a890f5439  gcc/testsuite/g++.dg/cpp0x/gen-attrs-9.C
*************** ec9b8f74c4220a07771e91a84c8311aa  gcc/te
*** 10011,10016 ****
--- 10037,10044 ----
  2689261b6dbe2bf5875e915ce8a31a53  gcc/testsuite/g++.dg/cpp0x/initlist-array3.C
  6c1907913d332611dd16d03002d759f9  gcc/testsuite/g++.dg/cpp0x/initlist-array4.C
  75dbdd73972da9a369980925ff477d9d  gcc/testsuite/g++.dg/cpp0x/initlist-arrray1.C
+ 56c081b4510fd319fae6d0ce40b10398  gcc/testsuite/g++.dg/cpp0x/initlist-base2.C
+ a62ceba6ce31c192d902228d8b740b06  gcc/testsuite/g++.dg/cpp0x/initlist-base3.C
  994605127bf908d7a5b9745b9991101e  gcc/testsuite/g++.dg/cpp0x/initlist-ctor1.C
  8642aa67406b008384f59447a05a884c  gcc/testsuite/g++.dg/cpp0x/initlist-deduce.C
  164cef62ad37c1cf80ca6128f56094b2  gcc/testsuite/g++.dg/cpp0x/initlist-defarg1.C
*************** e0fcc12ea86ca07e002f0dd4599d71b4  gcc/te
*** 10173,10178 ****
--- 10201,10207 ----
  9edc8f5532794fc604ffd377c6d84b82  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce-neg.C
  09786f33b21f73e03794802f7bd62377  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C
  4c785ed910596fbd5f6219990b7e64e7  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce2.C
+ d6d48de10340b22d46f7610d0d311ac9  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce3.C
  ed0e57a851ca002b92664b37ce17502b  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg.C
  be7d5784718fa8841e1936204f404bd8  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg2.C
  665983bbedede39286c33bef3b65d920  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg3.C
*************** ceadcf043cb7e277e03b4160aab8102e  gcc/te
*** 10301,10306 ****
--- 10330,10336 ----
  2fc41c677c8e84c030121c0ae006b699  gcc/testsuite/g++.dg/cpp0x/local-type1.C
  41600003230a22f3cbcc4e6fac3dde3d  gcc/testsuite/g++.dg/cpp0x/long_long.C
  c1feee422fd37f5c7d79276a96c23d07  gcc/testsuite/g++.dg/cpp0x/move1.C
+ 9ae0ac924c5c1dafc246af2360f9164a  gcc/testsuite/g++.dg/cpp0x/mutable1.C
  e2a2d13a6043d589d665cbb45ea56db8  gcc/testsuite/g++.dg/cpp0x/named.C
  5ccbd38ed47b195447b9e41d8df03bb9  gcc/testsuite/g++.dg/cpp0x/named_refs.C
  4c9fa986dc7f6deef6a257359aa5e2ca  gcc/testsuite/g++.dg/cpp0x/new1.C
*************** fd66664e3961b825af4b8173b52086bb  gcc/te
*** 10526,10531 ****
--- 10556,10564 ----
  160058bb6f5ebfd48ad7cd413243f751  gcc/testsuite/g++.dg/cpp0x/pr65558.C
  ddca64f77cad71506384979bf848526b  gcc/testsuite/g++.dg/cpp0x/pr65736.C
  e85408993e6b3f61f5073e187d03547d  gcc/testsuite/g++.dg/cpp0x/pr67767.C
+ e512f6703be7d9559d02caf34601fba6  gcc/testsuite/g++.dg/cpp0x/pr68724.C
+ 785e97f705ee538cb0d469f646b74caa  gcc/testsuite/g++.dg/cpp0x/pr78341.C
+ 7f20ecc1d0425b01c320b4d638d5dc4c  gcc/testsuite/g++.dg/cpp0x/pr78649.C
  53428f69a6d0153074c9b06ee9fbe9e7  gcc/testsuite/g++.dg/cpp0x/ptrmem-cst-arg1.C
  6e8e648c26d9bf237cc152180e88c2c2  gcc/testsuite/g++.dg/cpp0x/range-for1.C
  5c7a98d8ca2f0f427c081bf6902aa831  gcc/testsuite/g++.dg/cpp0x/range-for10.C
*************** aaa90c1c2261698f9319415498163db1  gcc/te
*** 10805,10810 ****
--- 10838,10844 ----
  fb23a824547af5cbc2d6ee6a52d5e3c0  gcc/testsuite/g++.dg/cpp0x/variadic-init.C
  f64443a27f946984ec474714387b99a8  gcc/testsuite/g++.dg/cpp0x/variadic-lambda.C
  6c67e276177a53a05508b5e974504d12  gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C
+ 08d2bff6abb7f96f072898cb08f80fbc  gcc/testsuite/g++.dg/cpp0x/variadic-nested1.C
  7d2b8191fa109fd1786f979fbfa18b4e  gcc/testsuite/g++.dg/cpp0x/variadic-new.C
  5ad1db01bdd9d87f2a8276b08cff8db7  gcc/testsuite/g++.dg/cpp0x/variadic-new2.C
  9965da4f62ae847ce666120789b29c79  gcc/testsuite/g++.dg/cpp0x/variadic-nondeduce1.C
*************** d67958b896eb1dae6f8862fd59b01c62  gcc/te
*** 11058,11063 ****
--- 11092,11098 ----
  252d5e23574d814692eda27da0d3490e  gcc/testsuite/g++.dg/cpp1y/auto-mangle1.C
  74303a8348f1ee9cdd9f827d5ae03cee  gcc/testsuite/g++.dg/cpp1y/auto-neg1.C
  f3e3d98fcbe616df26f26eb779c66c1f  gcc/testsuite/g++.dg/cpp1y/complex_literals.h
+ ff3e876f73b9e207bc74cebb8f681b24  gcc/testsuite/g++.dg/cpp1y/constexpr-77467.C
  8ca7fb9e44e526f77542eaa59593c544  gcc/testsuite/g++.dg/cpp1y/constexpr-array1.C
  10c765e5671de39fd3d751b2e3a5408b  gcc/testsuite/g++.dg/cpp1y/constexpr-array2.C
  192478e53d1e7dc7ab67b7b22a9678c1  gcc/testsuite/g++.dg/cpp1y/constexpr-array3.C
*************** ce3d96795da2089956df925a1a9c9815  gcc/te
*** 11070,11075 ****
--- 11105,11111 ----
  e6815ab618d6af99025ddeacf6ab0545  gcc/testsuite/g++.dg/cpp1y/constexpr-copy3.C
  9b6ce1c2202c1ce9ea82fda5f060499b  gcc/testsuite/g++.dg/cpp1y/constexpr-empty1.C
  9e871814c326197a59b4ae1738313788  gcc/testsuite/g++.dg/cpp1y/constexpr-empty2.C
+ d4fc72d059e047077b1d6033d4c13026  gcc/testsuite/g++.dg/cpp1y/constexpr-empty3.C
  f4f6c3d1cdaf2aa67bfa2b8c851853d5  gcc/testsuite/g++.dg/cpp1y/constexpr-incr1.C
  3e9dd485a2a6d99132c92a6d04b96ee9  gcc/testsuite/g++.dg/cpp1y/constexpr-initlist1.C
  14b35cb8a87b121f413f22b600d19592  gcc/testsuite/g++.dg/cpp1y/constexpr-local-compound1.C
*************** f242782c248016f2816bbc2f83f9233a  gcc/te
*** 11088,11093 ****
--- 11124,11130 ----
  f705c3231fd3394bbd8e1f6d3c18f870  gcc/testsuite/g++.dg/cpp1y/constexpr-switch1.C
  469cd1fc4d897d90592a00ce78be9201  gcc/testsuite/g++.dg/cpp1y/constexpr-switch2.C
  c1e1359ff4463d37602a3a97e87c775f  gcc/testsuite/g++.dg/cpp1y/constexpr-switch3.C
+ 2cf598a0cfa5187e173eb042b77aa4a7  gcc/testsuite/g++.dg/cpp1y/constexpr-switch4.C
  0338099a8b7545e92dbe09d98b8c671d  gcc/testsuite/g++.dg/cpp1y/constexpr-type-def-compound1.C
  f869695e4081f7115b13ec5e36fddb37  gcc/testsuite/g++.dg/cpp1y/constexpr-type-def1.C
  d05362a8ea33190463d383e8c676b147  gcc/testsuite/g++.dg/cpp1y/constexpr-void1.C
*************** f8cacc42b6d0ee02c4ec28b4871b946c  gcc/te
*** 11099,11109 ****
  09caaa1deeab3c105c541435337c045c  gcc/testsuite/g++.dg/cpp1y/digit-sep-neg.C
  2ccf049767734b973a90dea30576d8a8  gcc/testsuite/g++.dg/cpp1y/digit-sep.C
  8e9abe7daf174f89220e3b40a7d9e655  gcc/testsuite/g++.dg/cpp1y/feat-cxx11-neg.C
! d96fb9f48518ca695b170a52f17a96df  gcc/testsuite/g++.dg/cpp1y/feat-cxx11.C
! c18d5f73c72222002ced3bd9784cce38  gcc/testsuite/g++.dg/cpp1y/feat-cxx14.C
! 1eed10c6b0ada8d0bf6a7e6bf68aae17  gcc/testsuite/g++.dg/cpp1y/feat-cxx98-neg.C
! d9680a99825535ba499a795339ce02c2  gcc/testsuite/g++.dg/cpp1y/feat-cxx98.C
! 01260d1a223a8398c967796299932d12  gcc/testsuite/g++.dg/cpp1y/feat-neg.C
  018149928d964ce66689bf4960400c07  gcc/testsuite/g++.dg/cpp1y/feat-sized-dealloc-neg.C
  b7edad357bb503949f49802295729019  gcc/testsuite/g++.dg/cpp1y/feat-sized-dealloc.C
  fc5875e8af08d0f9488344e80bf6f764  gcc/testsuite/g++.dg/cpp1y/feat-vla.C
--- 11136,11146 ----
  09caaa1deeab3c105c541435337c045c  gcc/testsuite/g++.dg/cpp1y/digit-sep-neg.C
  2ccf049767734b973a90dea30576d8a8  gcc/testsuite/g++.dg/cpp1y/digit-sep.C
  8e9abe7daf174f89220e3b40a7d9e655  gcc/testsuite/g++.dg/cpp1y/feat-cxx11-neg.C
! b52fc8eef286a926f7ed5743cc352c77  gcc/testsuite/g++.dg/cpp1y/feat-cxx11.C
! 1c9c826854df15ad6e083cdb142cc8ec  gcc/testsuite/g++.dg/cpp1y/feat-cxx14.C
! 920d543a24ce272a29391f1d17e89c7d  gcc/testsuite/g++.dg/cpp1y/feat-cxx98-neg.C
! 6c845bae306091a0871d09eb650f7346  gcc/testsuite/g++.dg/cpp1y/feat-cxx98.C
! 8a8b78afcad658910cf21c4e9f8c087b  gcc/testsuite/g++.dg/cpp1y/feat-neg.C
  018149928d964ce66689bf4960400c07  gcc/testsuite/g++.dg/cpp1y/feat-sized-dealloc-neg.C
  b7edad357bb503949f49802295729019  gcc/testsuite/g++.dg/cpp1y/feat-sized-dealloc.C
  fc5875e8af08d0f9488344e80bf6f764  gcc/testsuite/g++.dg/cpp1y/feat-vla.C
*************** ccdf243ad72b9b0a028429d373468fef  gcc/te
*** 11194,11199 ****
--- 11231,11238 ----
  b82fb5e4a473d7355f2d603a5f9c0809  gcc/testsuite/g++.dg/cpp1y/pr64626-2.C
  70418b269a270e6b88690c1eade8c25b  gcc/testsuite/g++.dg/cpp1y/pr65202.C
  d5c5f62de8cf97d34f282f05a28fd8c3  gcc/testsuite/g++.dg/cpp1y/pr65340.C
+ 3659f5cca5d2a047549f78c4735d3374  gcc/testsuite/g++.dg/cpp1y/pr77739.C
+ 94c88f192b02f065413ec82735d9e520  gcc/testsuite/g++.dg/cpp1y/pr78551.C
  ac3a3cc471361b1fc9f3e55ad12dd7a8  gcc/testsuite/g++.dg/cpp1y/regress1.C
  9a759de4b7ac375d3c274acdf73c4fbe  gcc/testsuite/g++.dg/cpp1y/sized-dealloc1.C
  88b1f9c319ca6b8551218276dff9f0e6  gcc/testsuite/g++.dg/cpp1y/sized-dealloc2.C
*************** ced2cfc9e16cac7b5bf507f1a63b428b  gcc/te
*** 11247,11252 ****
--- 11286,11292 ----
  ffde32febe1810ce3df7e034c7d427c5  gcc/testsuite/g++.dg/cpp1y/var-templ47.C
  34e14d27e3c00f201eeb1fb1d4d286c1  gcc/testsuite/g++.dg/cpp1y/var-templ5.C
  5160d45ceedf6faed4671f12ca9eae37  gcc/testsuite/g++.dg/cpp1y/var-templ50.C
+ 8bf64fa25ea751fc3a077004fefa3e3b  gcc/testsuite/g++.dg/cpp1y/var-templ53.C
  46f96806c3f041172407dd6ff7943dc8  gcc/testsuite/g++.dg/cpp1y/var-templ6.C
  3c670164f1a7f8f91ef1db2f80526182  gcc/testsuite/g++.dg/cpp1y/var-templ7.C
  7490ba7f2bf9511118a48f52e8c4ceed  gcc/testsuite/g++.dg/cpp1y/var-templ8.C
*************** a26a24dcac8fa1d56d36002c9551d274  gcc/te
*** 11313,11319 ****
  09b1f81116f03c2c68f057d9f2799605  gcc/testsuite/g++.dg/debug/dwarf2/global-used-types-1.C
  5f527b1d5db3338320735cddde309293  gcc/testsuite/g++.dg/debug/dwarf2/icf.C
  94ab24c4c92e0025c8c21c00e7088ab9  gcc/testsuite/g++.dg/debug/dwarf2/imported-decl-1.C
! aeaf229ff1bb7dd4ac9bc56468134190  gcc/testsuite/g++.dg/debug/dwarf2/imported-decl-2.C
  cd2f8eb018e0f3274a839788f6516dbd  gcc/testsuite/g++.dg/debug/dwarf2/imported-module-2.C
  00073dddfb84caf2285834b264334fb6  gcc/testsuite/g++.dg/debug/dwarf2/imported-module-3.C
  f328f5fd374ff3e1abef9c5c385bb657  gcc/testsuite/g++.dg/debug/dwarf2/imported-module-4.C
--- 11353,11359 ----
  09b1f81116f03c2c68f057d9f2799605  gcc/testsuite/g++.dg/debug/dwarf2/global-used-types-1.C
  5f527b1d5db3338320735cddde309293  gcc/testsuite/g++.dg/debug/dwarf2/icf.C
  94ab24c4c92e0025c8c21c00e7088ab9  gcc/testsuite/g++.dg/debug/dwarf2/imported-decl-1.C
! 4fb937ceb6d323fef5d0c1b650e50c3d  gcc/testsuite/g++.dg/debug/dwarf2/imported-decl-2.C
  cd2f8eb018e0f3274a839788f6516dbd  gcc/testsuite/g++.dg/debug/dwarf2/imported-module-2.C
  00073dddfb84caf2285834b264334fb6  gcc/testsuite/g++.dg/debug/dwarf2/imported-module-3.C
  f328f5fd374ff3e1abef9c5c385bb657  gcc/testsuite/g++.dg/debug/dwarf2/imported-module-4.C
*************** b3cbbd79d5ff077a6732280d76b2284e  gcc/te
*** 11348,11353 ****
--- 11388,11394 ----
  77d7e1ad341ac6addc71df4dbb8ec2e2  gcc/testsuite/g++.dg/debug/dwarf2/pr52260.C
  ba3a14694481b03351ebef6174059c0f  gcc/testsuite/g++.dg/debug/dwarf2/pr54508.C
  97f5ea2ec0d8ed4da158c8c51e4f395d  gcc/testsuite/g++.dg/debug/dwarf2/pr61433.C
+ 402705af4ba2631ab3fdcbf9221d957e  gcc/testsuite/g++.dg/debug/dwarf2/pr77363.C
  6a221e4796f80705722794e4cb854118  gcc/testsuite/g++.dg/debug/dwarf2/pubnames-1.C
  61c15278662fb88f21f9d3f56b288d93  gcc/testsuite/g++.dg/debug/dwarf2/pubnames-2.C
  1c216c5d6dbf7b013153d4ca504eeebc  gcc/testsuite/g++.dg/debug/dwarf2/pubnames-3.C
*************** ce4ff2095f5aadd1429d75f9964e3068  gcc/te
*** 11702,11707 ****
--- 11743,11749 ----
  05aa93a27032c47400c1728d165f6aeb  gcc/testsuite/g++.dg/ext/altivec-15.C
  1f347fa1c57370132e750e4fb8b77f9d  gcc/testsuite/g++.dg/ext/altivec-16.C
  e7b8730e35adae22637664edfdba084d  gcc/testsuite/g++.dg/ext/altivec-17.C
+ 4c612ecdb73822d456d417a307c5969e  gcc/testsuite/g++.dg/ext/altivec-18.C
  0d2b8f9e1b8506c8de6da887d8b08add  gcc/testsuite/g++.dg/ext/altivec-2.C
  d3261ef497bef041056bc7661e3a3686  gcc/testsuite/g++.dg/ext/altivec-3.C
  4f6acab6c14678a58ab3251c4c5a0ce1  gcc/testsuite/g++.dg/ext/altivec-4.C
*************** f2cf0baaaf489aa15f22210e07d052d1  gcc/te
*** 11980,11985 ****
--- 12022,12028 ----
  61fa88a10a461afa5233ba52ee25455d  gcc/testsuite/g++.dg/ext/int128-2.h
  8313f3d030293501382bb11536a8919a  gcc/testsuite/g++.dg/ext/int128-3.C
  3b33306d69b3ca18d4baf8c0846a03a3  gcc/testsuite/g++.dg/ext/int128-4.C
+ 754d9cd2dfd66632200e26d330e6b4a6  gcc/testsuite/g++.dg/ext/int128-5.C
  3a16bb49d1e751989bc6c5980e68cc41  gcc/testsuite/g++.dg/ext/interface1.C
  a6025f300298ca27e5d4454172592895  gcc/testsuite/g++.dg/ext/interface1.h
  0530572db926ff489aea49718a5eabe8  gcc/testsuite/g++.dg/ext/interface1a.cc
*************** f89de69b7a2471dd13bdfa3f538026f3  gcc/te
*** 12057,12063 ****
  0b7e6be63f874371a065af141e94dc40  gcc/testsuite/g++.dg/ext/mv5.C
  5fa5e6eec310c2baca6e675f51db6f5b  gcc/testsuite/g++.dg/ext/mv6.C
  d7e6a6acfdeef8fa4231626fa3e68f99  gcc/testsuite/g++.dg/ext/mv7.C
! 71756d5a370200272e4677b59eccf9c5  gcc/testsuite/g++.dg/ext/mv8.C
  7610da3ac7479053e5453edaa297546d  gcc/testsuite/g++.dg/ext/mv9.C
  fdf69832bb7a9ef593c8792a2660355e  gcc/testsuite/g++.dg/ext/no-asm-1.C
  74e645db0d8a1393088286f041e696d6  gcc/testsuite/g++.dg/ext/no-asm-2.C
--- 12100,12106 ----
  0b7e6be63f874371a065af141e94dc40  gcc/testsuite/g++.dg/ext/mv5.C
  5fa5e6eec310c2baca6e675f51db6f5b  gcc/testsuite/g++.dg/ext/mv6.C
  d7e6a6acfdeef8fa4231626fa3e68f99  gcc/testsuite/g++.dg/ext/mv7.C
! fde70aca439cf147f99652ebf4e2e324  gcc/testsuite/g++.dg/ext/mv8.C
  7610da3ac7479053e5453edaa297546d  gcc/testsuite/g++.dg/ext/mv9.C
  fdf69832bb7a9ef593c8792a2660355e  gcc/testsuite/g++.dg/ext/no-asm-1.C
  74e645db0d8a1393088286f041e696d6  gcc/testsuite/g++.dg/ext/no-asm-2.C
*************** da9f4d40914a62f10cfc08d681f84fe6  gcc/te
*** 12089,12094 ****
--- 12132,12138 ----
  4775bf0d01f776786eed6bd280ef69e1  gcc/testsuite/g++.dg/ext/pr58834.C
  866a91381ea9110f2679a3242dd39d16  gcc/testsuite/g++.dg/ext/pr59378.C
  8a247c6260aa77bd5f5f10a05e13a5eb  gcc/testsuite/g++.dg/ext/pr59706.C
+ e7effb51effd21039f6a2279ef9eceb0  gcc/testsuite/g++.dg/ext/pr80363.C
  ad117686eb16e680b29f2f5e45ebe0df  gcc/testsuite/g++.dg/ext/pragmaweak1.C
  ae2794e104309a224e228d70e4cede48  gcc/testsuite/g++.dg/ext/pretty1.C
  faa8333681bedde3ba84daa60ec26ff8  gcc/testsuite/g++.dg/ext/pretty2.C
*************** f006e9fbc60cef8755f4653f8255d665  gcc/te
*** 12221,12226 ****
--- 12265,12271 ----
  abdeb34b11f4d994523c72c30c39e053  gcc/testsuite/g++.dg/ext/vector28.C
  06e44a4208434952189cfd9cd55ae2d8  gcc/testsuite/g++.dg/ext/vector3.C
  6ca255361ad69ad75b523ad0b133b0fb  gcc/testsuite/g++.dg/ext/vector30.C
+ c3b38049951f0b2eddec58e423441ed3  gcc/testsuite/g++.dg/ext/vector31.C
  1d6b45dce331a414b31b64c5104ab383  gcc/testsuite/g++.dg/ext/vector4.C
  3231264b4b96091ab8a2351e76707e8d  gcc/testsuite/g++.dg/ext/vector5.C
  9dca9632e59d179ee1b85a181a34cae7  gcc/testsuite/g++.dg/ext/vector6.C
*************** ed8a6c94f1bc2e70a324d73a77190040  gcc/te
*** 12330,12335 ****
--- 12375,12381 ----
  7a1698611acb707485b8f5e55a748337  gcc/testsuite/g++.dg/gcov/gcov-13.C
  be0288522b31602de2c7b3eeb2fb4b18  gcc/testsuite/g++.dg/gcov/gcov-14.C
  56dbe86604b8680b3d2c3f63fd217d0a  gcc/testsuite/g++.dg/gcov/gcov-15.C
+ 1a43a673011a87c94649d32b935958ea  gcc/testsuite/g++.dg/gcov/gcov-16.C
  8a878271fda0c051fbf0d23ab78d7afe  gcc/testsuite/g++.dg/gcov/gcov-2.C
  0e241a16c3faf2f0c387bd2978d2b824  gcc/testsuite/g++.dg/gcov/gcov-3.C
  2c83bff9a3f14aa6fc5d7755bf82c9b6  gcc/testsuite/g++.dg/gcov/gcov-3.h
*************** db5e63430cf735cd3170687490d57932  gcc/te
*** 12498,12503 ****
--- 12544,12553 ----
  69587a534832b53372f1e04087c04986  gcc/testsuite/g++.dg/gomp/pr67514.C
  b5c07fed6b935bad79477d82daaa1e4f  gcc/testsuite/g++.dg/gomp/pr67522.C
  1c935120e3c1e7d165ea068f57519a6e  gcc/testsuite/g++.dg/gomp/pr67523.C
+ 1e46e97dc4fca9257e078353e30f0add  gcc/testsuite/g++.dg/gomp/pr71910.C
+ 726847bc91dc583a144c177ebc3d58d1  gcc/testsuite/g++.dg/gomp/pr79664.C
+ 61f6175348fda4d4917305d233417a28  gcc/testsuite/g++.dg/gomp/pr80141.C
+ 263ba04c887a9adb80a0de472bd2c765  gcc/testsuite/g++.dg/gomp/pr81154.C
  d2c2484d4d1236326efc32a01fddaa03  gcc/testsuite/g++.dg/gomp/predetermined-1.C
  edac71d2b358ecd6e646fece69c5426d  gcc/testsuite/g++.dg/gomp/private-1.C
  536359d59fc418a1570a6d8574a66ca1  gcc/testsuite/g++.dg/gomp/sections-1.C
*************** fb8a48266ab2a995a88943828c7a824f  gcc/te
*** 12772,12777 ****
--- 12822,12828 ----
  e657849b9797c7df684fd4fafe1341d1  gcc/testsuite/g++.dg/init/elide2.C
  6cdb74bfb12dbada158562b31f755075  gcc/testsuite/g++.dg/init/elide3.C
  074911fc1326d50c75879cb3d5b7a7c7  gcc/testsuite/g++.dg/init/elide4.C
+ c3504b39a6dc15f7e9a22986743ea38c  gcc/testsuite/g++.dg/init/elide5.C
  d2ea13322f402d3ce506a9a1106ee836  gcc/testsuite/g++.dg/init/empty1.C
  0fab5264214dd4964a69af401f3e7e7c  gcc/testsuite/g++.dg/init/enum1.C
  ca9a6dc8d27f3cf82314cfcd92133441  gcc/testsuite/g++.dg/init/enum2.C
*************** f660de16a9cf160558064bb92eb21901  gcc/te
*** 12866,12871 ****
--- 12917,12923 ----
  c835d50eaf5fe1a2b052a1579b5ce77f  gcc/testsuite/g++.dg/init/pr58811.C
  f25ce72283c3004e08c0df4685ca2469  gcc/testsuite/g++.dg/init/pr60572.C
  a5a0c6bb188e4c01d4db2d84a5014752  gcc/testsuite/g++.dg/init/pr66857.C
+ effadbfc637d03ffccebf5ad6b37c6c0  gcc/testsuite/g++.dg/init/pr71516.C
  697d82f637fb8839d98efadd58ededf5  gcc/testsuite/g++.dg/init/ptrfn1.C
  c3eaccdcf8e35f944dee4d4b3d720336  gcc/testsuite/g++.dg/init/ptrfn2.C
  111716aa5bd4c456321772f776bd97d1  gcc/testsuite/g++.dg/init/ptrfn3.C
*************** f44963a0cd9c1736b28dd8d5a81a4a94  gcc/te
*** 12887,12892 ****
--- 12939,12945 ----
  753ffddceb5ce125cebb945a65a73cdf  gcc/testsuite/g++.dg/init/ref2.C
  559e18af649d0930e65e2663f043609b  gcc/testsuite/g++.dg/init/ref20.C
  9a5faac941462bf7541a81ebb5668997  gcc/testsuite/g++.dg/init/ref21.C
+ ef89ae0c3b4a590a94233819b506141f  gcc/testsuite/g++.dg/init/ref23.C
  e21984c05c21d067e3b20b37c68bec76  gcc/testsuite/g++.dg/init/ref3.C
  f21f65304dbc9a97b63efafb7bb1a6df  gcc/testsuite/g++.dg/init/ref4.C
  e7fdc3fa73fd7411222a32862636796b  gcc/testsuite/g++.dg/init/ref5.C
*************** ec5260e7b67781daba88554aafd3131a  gcc/te
*** 13092,13097 ****
--- 13145,13156 ----
  a2e5380c8516c008132d478e44ece9b7  gcc/testsuite/g++.dg/ipa/pr68672-3.C
  c021f783947adb9a54cc7d7fd34e136d  gcc/testsuite/g++.dg/ipa/pr68851.C
  a00d85b4d37eb396d6f750fbe8c65031  gcc/testsuite/g++.dg/ipa/pr69239.C
+ cad676606f867ff6d3c0c30870ad11a0  gcc/testsuite/g++.dg/ipa/pr71207.C
+ 3a8004c0e4c3f3ec713f3674c6464c08  gcc/testsuite/g++.dg/ipa/pr77333.C
+ d53e2610da5ee135ff2297e91a0715be  gcc/testsuite/g++.dg/ipa/pr77905.C
+ 0d66afc3b6be386c8e29a4e0bbb7485d  gcc/testsuite/g++.dg/ipa/pr78188.C
+ c5be5b54243f6264bf84d49d4a16947c  gcc/testsuite/g++.dg/ipa/pr79931.C
+ 89f95e75e402e5135147f26252be06e5  gcc/testsuite/g++.dg/ipa/pr80205.C
  65b30ac9d2b3a2244e49849aaad7dd78  gcc/testsuite/g++.dg/ipa/remref-1.C
  d26e3f0899c708e0f4b2ec8427502236  gcc/testsuite/g++.dg/ipa/remref-2.C
  8a469d09a1c8b835acf9b3b8f7d8078d  gcc/testsuite/g++.dg/ipa/type-inheritance-1.C
*************** f527f51fa4c8b92a4d9374e96752d73a  gcc/te
*** 13635,13640 ****
--- 13694,13700 ----
  4ed264b192fadaa6f3076ca27b4fc086  gcc/testsuite/g++.dg/opt/nrv15.C
  e94377182a1dedb230f53db874897364  gcc/testsuite/g++.dg/opt/nrv16.C
  3bf30be38f5aa46b2a1c3f22d55000d4  gcc/testsuite/g++.dg/opt/nrv17.C
+ 3a570f71e0d06b55d991f8cab4b017d2  gcc/testsuite/g++.dg/opt/nrv18.C
  360692bdb55de35cb68717ceb6c51fd7  gcc/testsuite/g++.dg/opt/nrv2.C
  42adcc800d5d2029a2b831e1453e8f32  gcc/testsuite/g++.dg/opt/nrv3.C
  b2773b15109a2fc43572a97edf29b236  gcc/testsuite/g++.dg/opt/nrv4.C
*************** e708379bf11fe954ea2bc5e1022d2001  gcc/te
*** 13776,13782 ****
--- 13836,13846 ----
  ac2356162f00cd5e8804482480f1795a  gcc/testsuite/g++.dg/opt/pr6713.C
  ddd0cdc94ae2b3fb5f1da01082f09677  gcc/testsuite/g++.dg/opt/pr68157.C
  e29a55caf33aeb69133015d020a5b160  gcc/testsuite/g++.dg/opt/pr69432.C
+ 4c279781e65c3062bc3ebe4f9a883ad8  gcc/testsuite/g++.dg/opt/pr70641.C
+ a380c45913d5ec3d5feed82fd2ba5c78  gcc/testsuite/g++.dg/opt/pr71528.C
  90bdbfd9313461944756a9e9f01ce788  gcc/testsuite/g++.dg/opt/pr7503-1.C
+ 23fbbe3312a22eb4c300b6e8552085cc  gcc/testsuite/g++.dg/opt/pr79396.C
+ 3793c7fdebffcc14d6e627f6ab5cdb04  gcc/testsuite/g++.dg/opt/pr80385.C
  1451eba24eea82cbd0c1ab87885c0f77  gcc/testsuite/g++.dg/opt/preinc1.C
  0841088f825be785d32663d712ecf675  gcc/testsuite/g++.dg/opt/ptrintsum1.C
  8ceccf2f02b3f64f372600e32148e146  gcc/testsuite/g++.dg/opt/ptrmem1.C
*************** c1daf3585c63314a131cec4afb411556  gcc/te
*** 13848,13854 ****
  25bec11b40119085408d52eaa5b86f6e  gcc/testsuite/g++.dg/other/anon2.C
  8cf9ebc3f83dbe1add9e2345ef4acb59  gcc/testsuite/g++.dg/other/anon3.C
  735bc52cab8eca56a711c2c10845c981  gcc/testsuite/g++.dg/other/anon4.C
! 200c6c777ac3583fd62d1de16dc4abb5  gcc/testsuite/g++.dg/other/anon5.C
  1c68df289b2577a8e2753eaf82704fed  gcc/testsuite/g++.dg/other/anon6.C
  6bdea0a90642ef923b08522ad0f6f67b  gcc/testsuite/g++.dg/other/anon7.C
  f282d7d63120a2f2e0ee707e7dd2fe1e  gcc/testsuite/g++.dg/other/anon8.C
--- 13912,13918 ----
  25bec11b40119085408d52eaa5b86f6e  gcc/testsuite/g++.dg/other/anon2.C
  8cf9ebc3f83dbe1add9e2345ef4acb59  gcc/testsuite/g++.dg/other/anon3.C
  735bc52cab8eca56a711c2c10845c981  gcc/testsuite/g++.dg/other/anon4.C
! 6d368030a15296375251b49a071901f4  gcc/testsuite/g++.dg/other/anon5.C
  1c68df289b2577a8e2753eaf82704fed  gcc/testsuite/g++.dg/other/anon6.C
  6bdea0a90642ef923b08522ad0f6f67b  gcc/testsuite/g++.dg/other/anon7.C
  f282d7d63120a2f2e0ee707e7dd2fe1e  gcc/testsuite/g++.dg/other/anon8.C
*************** bc5371eb8e8dcf79efb0889828991560  gcc/te
*** 13978,13985 ****
  88d3ce293bea84b74d7f26a42a8538fb  gcc/testsuite/g++.dg/other/gc4.C
  47195a1b7ad4c24c5ccc7cbf50e26bb0  gcc/testsuite/g++.dg/other/gc5.C
  3ca5017faf45f39326ff4e30a1ec1ba8  gcc/testsuite/g++.dg/other/i386-1.C
! 0a55dab063303f02a6851fd26153ba80  gcc/testsuite/g++.dg/other/i386-2.C
! 5ba310fbb0947dcf973b988c09e27e00  gcc/testsuite/g++.dg/other/i386-3.C
  a4ad4c2cb3c1448496351241a77aedb7  gcc/testsuite/g++.dg/other/i386-4.C
  a32a5af1b4c57aabcbdaa817835a698d  gcc/testsuite/g++.dg/other/i386-7.C
  6185c7fefa3b45be6654d24324c94f7d  gcc/testsuite/g++.dg/other/i386-8.C
--- 14042,14050 ----
  88d3ce293bea84b74d7f26a42a8538fb  gcc/testsuite/g++.dg/other/gc4.C
  47195a1b7ad4c24c5ccc7cbf50e26bb0  gcc/testsuite/g++.dg/other/gc5.C
  3ca5017faf45f39326ff4e30a1ec1ba8  gcc/testsuite/g++.dg/other/i386-1.C
! 8925c3efd781e76570846cfd6f817fd2  gcc/testsuite/g++.dg/other/i386-11.C
! 88ad49902c671e4fc483d6531c8d4fae  gcc/testsuite/g++.dg/other/i386-2.C
! 6184cce0e40d3c04921628aee3cf9d15  gcc/testsuite/g++.dg/other/i386-3.C
  a4ad4c2cb3c1448496351241a77aedb7  gcc/testsuite/g++.dg/other/i386-4.C
  a32a5af1b4c57aabcbdaa817835a698d  gcc/testsuite/g++.dg/other/i386-7.C
  6185c7fefa3b45be6654d24324c94f7d  gcc/testsuite/g++.dg/other/i386-8.C
*************** d2e5ab6ef2b2e82037e93dcbedcca8bc  gcc/te
*** 14584,14589 ****
--- 14649,14655 ----
  b89fc0d62ee0e3196c61129ecd005612  gcc/testsuite/g++.dg/parse/pr58898.C
  e15eb2cabfff226dbddb78a9de3a8892  gcc/testsuite/g++.dg/parse/pr61804.C
  1e79347577849ae03e3a20e2fc6247ff  gcc/testsuite/g++.dg/parse/pr70635.C
+ 5eb3f5d17e121a7a8f7884b589a7a7ce  gcc/testsuite/g++.dg/parse/pr71909.C
  5a9d33aff7826f90760a0154af35d9f0  gcc/testsuite/g++.dg/parse/pragma1.C
  b8553036b01aadac9e932e75221336ae  gcc/testsuite/g++.dg/parse/pragma2.C
  d516a5d017b9be02cd665abb61b0fbaf  gcc/testsuite/g++.dg/parse/pragma3.C
*************** c014278b0e7c6cf72bd8834b1b9d6631  gcc/te
*** 14808,14813 ****
--- 14874,14883 ----
  0316a6aee06db21c7aa95471b572af5c  gcc/testsuite/g++.dg/pr67989.C
  daea4abf04b6790441bb5b87a622a604  gcc/testsuite/g++.dg/pr68449.C
  514f19a372e6da2045ad3ac8a01eff0a  gcc/testsuite/g++.dg/pr70098.C
+ dd5b895f9e8e377b3fc861eecf9bdbf7  gcc/testsuite/g++.dg/pr71389.C
+ ea5dbf59cf2609041141d1523d1f4409  gcc/testsuite/g++.dg/pr77812.C
+ f66afb99493b92c63a8b1e5a2bd2ca5c  gcc/testsuite/g++.dg/pr79761.C
+ bfc1d08789ff600f77190c59b402a8ec  gcc/testsuite/g++.dg/pr79769.C
  ae8863cdd596655bd9501c7a7e546fc7  gcc/testsuite/g++.dg/predict-loop-exit-1.C
  112161f9cc2e99ed1a64b608b234d230  gcc/testsuite/g++.dg/predict-loop-exit-2.C
  9fdf45388f73e8c9a46342cf4ec52cb6  gcc/testsuite/g++.dg/predict-loop-exit-3.C
*************** af2fdbfedc537d2eafde78a5b6afc170  gcc/te
*** 15405,15410 ****
--- 15475,15481 ----
  9783cba5cd0e48e50ecc5c42ed1dd282  gcc/testsuite/g++.dg/template/init-list.C
  f30fe425de51d4cb2ab5ff05b71d616a  gcc/testsuite/g++.dg/template/init1.C
  7c6a96d0550437ed561f8825ad2bc25e  gcc/testsuite/g++.dg/template/init10.C
+ ac6c40bfa874333f4cc3f13523df5556  gcc/testsuite/g++.dg/template/init11.C
  76f88c13708d18ca711ab8287d1caac9  gcc/testsuite/g++.dg/template/init2.C
  64314d0aa5b3600547adc69b42ab8e3c  gcc/testsuite/g++.dg/template/init3.C
  e920cba477d63f2866ea0710ce55a2ce  gcc/testsuite/g++.dg/template/init4.C
*************** f4bf79515fd3464e428da5958531f5d6  gcc/te
*** 16054,16059 ****
--- 16125,16132 ----
  11481d47864021d1e3af511c6b632c29  gcc/testsuite/g++.dg/tls/diag-5.C
  e425d7fc584cf8535f3eee565f58f091  gcc/testsuite/g++.dg/tls/init-1.C
  ec6c7e65d57e2a70cb1a6852131a0f16  gcc/testsuite/g++.dg/tls/init-2.C
+ d91e55faf19d18899361ba64d14aa68f  gcc/testsuite/g++.dg/tls/pr77285-1.C
+ e0fc234d5008e949006f7c1d2462ab2d  gcc/testsuite/g++.dg/tls/pr77285-2.C
  a9720fe58f11ddd0e2a21ab5df5a77bf  gcc/testsuite/g++.dg/tls/static-1.C
  29ba155db4cb83d5330b9a806c2cd296  gcc/testsuite/g++.dg/tls/static-1a.cc
  40f776e4d949ac2761cee0de2064d991  gcc/testsuite/g++.dg/tls/static2.C
*************** e204cc8a88c59f1e5cbc72ccfd8cb390  gcc/te
*** 16134,16139 ****
--- 16207,16213 ----
  9e8bbd658850a80ba74ec4326abdd8a4  gcc/testsuite/g++.dg/tm/pr58635-1.C
  2023e08d493ba5b9b6b027ead9dbcdfb  gcc/testsuite/g++.dg/tm/pr58635-2.C
  c9e5bbfe98ec7fbaa16a15a1f925bb18  gcc/testsuite/g++.dg/tm/pr60004.C
+ f20200faa0befb0bfc51cc6eb591119c  gcc/testsuite/g++.dg/tm/pr71909.C
  d1d8828bb1842a1f639c2d50c70a554a  gcc/testsuite/g++.dg/tm/template-1.C
  20616904918cb66e65ad72fb06c6dedc  gcc/testsuite/g++.dg/tm/template-2.C
  4a43b7b85ee426b2cb3825bb45d844ab  gcc/testsuite/g++.dg/tm/tm.exp
*************** e06907cfe2759b33272f3b47a2cad143  gcc/te
*** 16441,16446 ****
--- 16515,16532 ----
  346f676cb6eadd42bf541771cf8eea46  gcc/testsuite/g++.dg/torture/pr68184.C
  31f966a522da78b2232ef319262f8c1e  gcc/testsuite/g++.dg/torture/pr68220.C
  742e71bf561b5af56ed84fc963a0fe07  gcc/testsuite/g++.dg/torture/pr70526.C
+ 411a467861248626a89023d9cd86be57  gcc/testsuite/g++.dg/torture/pr71452.C
+ 6d87997ae70f613b7ae47faba21523d9  gcc/testsuite/g++.dg/torture/pr71874.C
+ 3b4e8c3ab4ddf55d1bcd36173f1a5f02  gcc/testsuite/g++.dg/torture/pr77745.C
+ ea126398515e20d945d8e298598ba010  gcc/testsuite/g++.dg/torture/pr77919-2.C
+ 8fcdf2e7c90f945065444414bbe585b8  gcc/testsuite/g++.dg/torture/pr77919.C
+ fff85caa269f4d672ff9fa1e8ed455a5  gcc/testsuite/g++.dg/torture/pr78224.C
+ e7b6b1b081a787e4e53586f0eb586432  gcc/testsuite/g++.dg/torture/pr79034.C
+ 7ca5ee7afef7aee7488a8e0511740522  gcc/testsuite/g++.dg/torture/pr80129.C
+ 8e8f6b256dc319894874859cc9e0e585  gcc/testsuite/g++.dg/torture/pr80171.C
+ fd760347ef5485cc63415d3c201a40fe  gcc/testsuite/g++.dg/torture/pr80334.C
+ 153bbff97336be3231696c3c16a64e29  gcc/testsuite/g++.dg/torture/pr81354.C
+ 22414dc3cabbf804f8f8f89b0d5c45b5  gcc/testsuite/g++.dg/torture/pr81987.C
  389892c1f2e87d69449479d1b053c70c  gcc/testsuite/g++.dg/torture/predcom-1.C
  d28910105d9c9253d94d70eacd5e19d4  gcc/testsuite/g++.dg/torture/pushpop_macro.C
  a1b47b9c3e69d79d1895ebc4fd11032b  gcc/testsuite/g++.dg/torture/stackalign/check.h
*************** bb17cbedcbb5bcabb9ee8299f30c3ae9  gcc/te
*** 16647,16652 ****
--- 16733,16739 ----
  22dc7006f5ec66c9a231712242810915  gcc/testsuite/g++.dg/tree-ssa/pr61009.C
  e17706fcf799b90e57875597cca38f82  gcc/testsuite/g++.dg/tree-ssa/pr61034.C
  3ab3bdd688450569b259541fd67518e3  gcc/testsuite/g++.dg/tree-ssa/pr63841.C
+ 815c193d3fa9c0ad974dcb886f636cf1  gcc/testsuite/g++.dg/tree-ssa/pr77943.C
  49b07e11de6d1cb74cb9d8c20b9da27e  gcc/testsuite/g++.dg/tree-ssa/pr8781.C
  1774a3db4e8c1c639d06cfd8ba95990d  gcc/testsuite/g++.dg/tree-ssa/ptrmemfield.C
  fe0c4f92b4591334dd40df6bbeb06f32  gcc/testsuite/g++.dg/tree-ssa/restrict1.C
*************** ce9a3608f9ea7f32723d27471f56a902  gcc/te
*** 16711,16716 ****
--- 16798,16806 ----
  23b03c04f7b3df05a2e3c261dbfbc91d  gcc/testsuite/g++.dg/ubsan/return-1.C
  c729687b59770dc8f9e0991370cb1879  gcc/testsuite/g++.dg/ubsan/return-2.C
  40257a16173db28137a5538f88bfea0e  gcc/testsuite/g++.dg/ubsan/return-3.C
+ 496806c2186ed7c6789ad05301dec8f8  gcc/testsuite/g++.dg/ubsan/return-4.C
+ 97027d455c8b2512011502382e6c1745  gcc/testsuite/g++.dg/ubsan/return-5.C
+ ce973542ab3756eba13870ee1f67fdef  gcc/testsuite/g++.dg/ubsan/return-6.C
  c442c055f190ccdaf3b2321ecbc1d910  gcc/testsuite/g++.dg/ubsan/shift-1.C
  a512113af0ac3172f2466ee3a8c93259  gcc/testsuite/g++.dg/ubsan/static-init-1.C
  b1a38b150fef25f02239b481561ad148  gcc/testsuite/g++.dg/ubsan/static-init-2.C
*************** dd4588dbed2d0bda4190508e80775873  gcc/te
*** 16753,16759 ****
  19fbd3a5209805faae720e4cc71893f5  gcc/testsuite/g++.dg/vect/pr33835.cc
  53f16b6b18970118d62936a60300f487  gcc/testsuite/g++.dg/vect/pr33860.cc
  3ade1d2e4dad5a418f0786af8875a9a4  gcc/testsuite/g++.dg/vect/pr33860a.cc
! 8b73ed567529286487cab6a112ce46e8  gcc/testsuite/g++.dg/vect/pr36648.cc
  bb02984184613c4e23cd3b598fd11bf4  gcc/testsuite/g++.dg/vect/pr37143.C
  2dff334c9a92b9aeb51b6a2dec8696ab  gcc/testsuite/g++.dg/vect/pr37174.cc
  9f2e7f6f898f51a14fd95fcb8729c8d4  gcc/testsuite/g++.dg/vect/pr43771.cc
--- 16843,16849 ----
  19fbd3a5209805faae720e4cc71893f5  gcc/testsuite/g++.dg/vect/pr33835.cc
  53f16b6b18970118d62936a60300f487  gcc/testsuite/g++.dg/vect/pr33860.cc
  3ade1d2e4dad5a418f0786af8875a9a4  gcc/testsuite/g++.dg/vect/pr33860a.cc
! 35dce0b7872b86e27b61b85bd81ed8b5  gcc/testsuite/g++.dg/vect/pr36648.cc
  bb02984184613c4e23cd3b598fd11bf4  gcc/testsuite/g++.dg/vect/pr37143.C
  2dff334c9a92b9aeb51b6a2dec8696ab  gcc/testsuite/g++.dg/vect/pr37174.cc
  9f2e7f6f898f51a14fd95fcb8729c8d4  gcc/testsuite/g++.dg/vect/pr43771.cc
*************** add1cfbf96f3e44641caf48f126f9c38  gcc/te
*** 16771,16776 ****
--- 16861,16867 ----
  6b28f1389244b3e3813a64c756bf8ba0  gcc/testsuite/g++.dg/vect/pr60896.cc
  7dc8c4636864580a356ae6253d11960b  gcc/testsuite/g++.dg/vect/pr64410.cc
  60c78be6738c5a1041dce7fc1657bcf0  gcc/testsuite/g++.dg/vect/simd-clone-1.cc
+ 781254f2b1a514c9ba0f4e29b2e8d1a3  gcc/testsuite/g++.dg/vect/simd-clone-7.cc
  f8d0a0b7b0199b08536cbcc9a2d2cf3e  gcc/testsuite/g++.dg/vect/slp-pr50413.cc
  a21f3b56b920c71151d9d6b62dea494f  gcc/testsuite/g++.dg/vect/slp-pr50819.cc
  a8d10fc816e215c5b11e789e5999bc39  gcc/testsuite/g++.dg/vect/slp-pr56812.cc
*************** e7274165f26fc70eff73fddbd77e3811  gcc/te
*** 17011,17016 ****
--- 17102,17108 ----
  0c5df293cc7c104d4640b26ebae4ed15  gcc/testsuite/g++.dg/warn/Wunused-var-21.C
  5d6aae3538559dce1f197ff269ee52f8  gcc/testsuite/g++.dg/warn/Wunused-var-22.C
  2a0d783bf451e934bdfdc826cdaf5930  gcc/testsuite/g++.dg/warn/Wunused-var-23.C
+ 715f4e85764653a44e74c60a6624ff13  gcc/testsuite/g++.dg/warn/Wunused-var-26.C
  dd0f2a1889a83658587b5f12c08c0c1c  gcc/testsuite/g++.dg/warn/Wunused-var-3.C
  62e5565091b4ee3f018515196f818bf3  gcc/testsuite/g++.dg/warn/Wunused-var-4.C
  d9191ea69f8ac18b1043d3d093b1f0d4  gcc/testsuite/g++.dg/warn/Wunused-var-5.C
*************** eaf8056eb8e9f2c09750d1950b336f96  gcc/te
*** 21624,21629 ****
--- 21716,21722 ----
  36b076ea7c9ca905653c3d3f7b5043c1  gcc/testsuite/gcc.c-torture/compile/pr37418-3.c
  642b163a8696cf184f1ebd495e0b3b4f  gcc/testsuite/gcc.c-torture/compile/pr37418-4.c
  f3c01c8a2795d9e97e58a46eff2aa182  gcc/testsuite/gcc.c-torture/compile/pr37432.c
+ d65fea3f66310e27a09a0c3bb6db7914  gcc/testsuite/gcc.c-torture/compile/pr37433-1.c
  37691d89afee16b2664e6f7d5407b7bc  gcc/testsuite/gcc.c-torture/compile/pr37433.c
  552e92307cc2eaed3fe9af2587149864  gcc/testsuite/gcc.c-torture/compile/pr37483.c
  a6b7f09c9007aef1df668f8b216aff24  gcc/testsuite/gcc.c-torture/compile/pr37617.c
*************** d640ae90bbde8cc412262d4b7f5b33c2  gcc/te
*** 21972,21977 ****
--- 22065,22076 ----
  0cef5221b3768444f893ae318f49f1c7  gcc/testsuite/gcc.c-torture/compile/pr67506.c
  df19660e1610b52f0b165eb9d4d3e52b  gcc/testsuite/gcc.c-torture/compile/pr69102.c
  aac9fa1e0a8f32d26d0b91a6ce4f86c0  gcc/testsuite/gcc.c-torture/compile/pr69214.c
+ 86500b6aaf9f75325f0cad332855ed1b  gcc/testsuite/gcc.c-torture/compile/pr70633.c
+ 97df20a3b66d4cb718ca2f94a7c64ec5  gcc/testsuite/gcc.c-torture/compile/pr71693.c
+ 4bdafe7a5c32e03db39dc28806b6e3a0  gcc/testsuite/gcc.c-torture/compile/pr79197.c
+ 8d2b886d2a6084528abb808154bd0d6b  gcc/testsuite/gcc.c-torture/compile/pr79411.c
+ 9c43ac49378a3098c7640140b957175d  gcc/testsuite/gcc.c-torture/compile/pr80345.c
+ 196daa7de18c0a8ecd7788d3e482cc7b  gcc/testsuite/gcc.c-torture/compile/pr82337.c
  9611ffa8936d9c80d0a9ccde8dd093b2  gcc/testsuite/gcc.c-torture/compile/pret-arg.c
  b9e6ce52b90320c1c3803c25113844c5  gcc/testsuite/gcc.c-torture/compile/pta-1.c
  ed716c1d1727fc2c748162e0cbc4ee47  gcc/testsuite/gcc.c-torture/compile/ptr-conv-1.c
*************** ea5cc37862d9328e904262478ea2dfb1  gcc/te
*** 22828,22833 ****
--- 22927,22933 ----
  1f049cb48a0c18f9ccacbb678bd1772c  gcc/testsuite/gcc.c-torture/execute/991221-1.c
  ee18345ed511ceff311552d973c6426f  gcc/testsuite/gcc.c-torture/execute/991227-1.c
  220ea595eb4fba31918096db7ae47ada  gcc/testsuite/gcc.c-torture/execute/991228-1.c
+ 50b7b403a3dd7a84e4b0576329f37247  gcc/testsuite/gcc.c-torture/execute/alias-1.c
  fc721cce5be8ce64fe33e6dc0642bb99  gcc/testsuite/gcc.c-torture/execute/align-1.c
  7ca7bc1736d76c2e0dfe538487304db7  gcc/testsuite/gcc.c-torture/execute/align-2.c
  093b1730a1dfc73a609c5e5c6c14390c  gcc/testsuite/gcc.c-torture/execute/align-3.c
*************** b2ab2df25ae61fdb2695a27e3847bca4  gcc/te
*** 23138,23143 ****
--- 23238,23245 ----
  4e1de3c87ba597088523b25a7f2b504e  gcc/testsuite/gcc.c-torture/execute/ieee/pr38016.c
  b78c79b50407f5479e1a352d840b0d41  gcc/testsuite/gcc.c-torture/execute/ieee/pr38016.x
  519a3cdfc7a62c1a0c081c97039159d2  gcc/testsuite/gcc.c-torture/execute/ieee/pr50310.c
+ 6b57d671d14f682212679d0df178da53  gcc/testsuite/gcc.c-torture/execute/ieee/pr72824-2.c
+ 69fc297e7bf7f2a44efa07b90f5297e3  gcc/testsuite/gcc.c-torture/execute/ieee/pr72824.c
  de8e51d9a0744b986e2e1c4d205cb1f4  gcc/testsuite/gcc.c-torture/execute/ieee/rbug.c
  7116b2d7f2d33fbc73903c620f3bca16  gcc/testsuite/gcc.c-torture/execute/ieee/rbug.x
  205da00dccd6dcf1575a79b20ce968a4  gcc/testsuite/gcc.c-torture/execute/ieee/unsafe-fp-assoc-1.c
*************** f20b6c8891260e3275a695dd6aeeafa1  gcc/te
*** 23575,23580 ****
--- 23677,23683 ----
  4c0a9e8628c0e6b0b75abe913a7eccfc  gcc/testsuite/gcc.c-torture/execute/pr68328.c
  136f5d965d2da4274b6751d6d1ca11ad  gcc/testsuite/gcc.c-torture/execute/pr68376-1.c
  51c67c4e32c12018d279ef080e5d4512  gcc/testsuite/gcc.c-torture/execute/pr68376-2.c
+ 4b3b34c6bbca5e781620455ecb27ef4a  gcc/testsuite/gcc.c-torture/execute/pr68390.c
  b8674eea2d87def45b3a61c798e11712  gcc/testsuite/gcc.c-torture/execute/pr68648.c
  014d15d1eb4dd2bf07bd8b57292416e0  gcc/testsuite/gcc.c-torture/execute/pr69403.c
  7930093b82c953726ca1ad7cfca1228f  gcc/testsuite/gcc.c-torture/execute/pr69447.c
*************** b8674eea2d87def45b3a61c798e11712  gcc/te
*** 23583,23589 ****
--- 23686,23706 ----
  d980d67f1eb958e90351c3eb7cfd1297  gcc/testsuite/gcc.c-torture/execute/pr70429.c
  60303592b1e72b08743fe18c5007dd64  gcc/testsuite/gcc.c-torture/execute/pr70460.c
  58bb262f9c1fe471c7bd11fc8440aac8  gcc/testsuite/gcc.c-torture/execute/pr70566.c
+ 3ae49b918c185acaecb28ec8cd05fdb1  gcc/testsuite/gcc.c-torture/execute/pr71083.c
+ 0a9fc76972569359d91049d017cdf51e  gcc/testsuite/gcc.c-torture/execute/pr71494.c
+ 94c81d0c20f6b48a221fefb5a7c9f0f7  gcc/testsuite/gcc.c-torture/execute/pr71554.c
+ 1f4a197e0d6f4357f1917d680858eacb  gcc/testsuite/gcc.c-torture/execute/pr71626-1.c
+ 2b843741017aa652b5af0855cf7945c3  gcc/testsuite/gcc.c-torture/execute/pr71626-2.c
+ 5226a45800ff3eb3550e4309d902aa9c  gcc/testsuite/gcc.c-torture/execute/pr71700.c
  3a2dbae8c6dae23b46868ca068ba47d6  gcc/testsuite/gcc.c-torture/execute/pr7284-1.c
+ 9bca5db87705467ddabeaa32b5223dba  gcc/testsuite/gcc.c-torture/execute/pr77767.c
+ 21b89420d9abfafd5252eafe2c1f8483  gcc/testsuite/gcc.c-torture/execute/pr78378.c
+ e378b6043986bf34c640d3c898b04895  gcc/testsuite/gcc.c-torture/execute/pr78617.c
+ 50dd995fe049f6e3600af9d40a5053f7  gcc/testsuite/gcc.c-torture/execute/pr79043.c
+ 0ec1bcb863c85b3589a1923d51468ba2  gcc/testsuite/gcc.c-torture/execute/pr80692.c
+ 5275aec3ca25a210e00c7aadb2e366c4  gcc/testsuite/gcc.c-torture/execute/pr81503.c
+ 60fc747dbd1d50baf95c6269175ad273  gcc/testsuite/gcc.c-torture/execute/pr81555.c
+ a3668023bbf40452e1d0a33bfb6710f1  gcc/testsuite/gcc.c-torture/execute/pr81556.c
  f4610e3bba97324f7005c428fe41e597  gcc/testsuite/gcc.c-torture/execute/printf-1.c
  75ef5098d0758219fe59601f8545c342  gcc/testsuite/gcc.c-torture/execute/printf-chk-1.c
  f397d221ccf3a7ce631cf42078dfadb5  gcc/testsuite/gcc.c-torture/execute/pta-field-1.c
*************** f30bf0095addeef700a83f36c598deab  gcc/te
*** 23680,23686 ****
  540bc182381f68374a6cb9c7f45dd001  gcc/testsuite/gcc.c-torture/execute/zerolen-1.c
  47b383f4da2b2ea2ce19f91de8dcf5a2  gcc/testsuite/gcc.c-torture/execute/zerolen-2.c
  44c6ad090d3f06206aa54f59582ae32c  gcc/testsuite/gcc.c-torture/unsorted/dump-noaddr.c
! 17de8997fdc63fa702c8d0159e3cc447  gcc/testsuite/gcc.c-torture/unsorted/dump-noaddr.x
  1165050faa87dc30c85c6c0dfae03875  gcc/testsuite/gcc.c-torture/unsorted/unsorted.exp
  d0289bfc068c575e2168df7bc156b45a  gcc/testsuite/gcc.dg/20000108-1.c
  586ef49702317acb226ba076aeea11ee  gcc/testsuite/gcc.dg/20000111-1.c
--- 23797,23803 ----
  540bc182381f68374a6cb9c7f45dd001  gcc/testsuite/gcc.c-torture/execute/zerolen-1.c
  47b383f4da2b2ea2ce19f91de8dcf5a2  gcc/testsuite/gcc.c-torture/execute/zerolen-2.c
  44c6ad090d3f06206aa54f59582ae32c  gcc/testsuite/gcc.c-torture/unsorted/dump-noaddr.c
! c5c6c60d723e3afbc0cc51e204a92079  gcc/testsuite/gcc.c-torture/unsorted/dump-noaddr.x
  1165050faa87dc30c85c6c0dfae03875  gcc/testsuite/gcc.c-torture/unsorted/unsorted.exp
  d0289bfc068c575e2168df7bc156b45a  gcc/testsuite/gcc.dg/20000108-1.c
  586ef49702317acb226ba076aeea11ee  gcc/testsuite/gcc.dg/20000111-1.c
*************** a8de438fb9333367aa275a3535869de9  gcc/te
*** 24031,24038 ****
  df9bdd00a7e05bef67d05587e6cdb073  gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c99-no.c
  5b7344bd8ae9b590871ad2cb5ff5cb56  gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c99.c
  442e44f887af52dada948db15878c3ae  gcc/testsuite/gcc.dg/Woverlength-strings.c
! 601daff94d9d4f6081f3ec93d9d5ad90  gcc/testsuite/gcc.dg/Woverride-init-1.c
! 86573bdf4ec57f27887e18a33f6f8c7e  gcc/testsuite/gcc.dg/Woverride-init-2.c
  a325dd759fae54feaae3395258941fa1  gcc/testsuite/gcc.dg/Woverride-init-3.c
  57c517b5d9ac205300b5fdee49f4fc79  gcc/testsuite/gcc.dg/Wpadded.c
  06162d89f7d3c7f1c3938ea7cc7c0c0a  gcc/testsuite/gcc.dg/Wparentheses-1.c
--- 24148,24155 ----
  df9bdd00a7e05bef67d05587e6cdb073  gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c99-no.c
  5b7344bd8ae9b590871ad2cb5ff5cb56  gcc/testsuite/gcc.dg/Woverlength-strings-pedantic-c99.c
  442e44f887af52dada948db15878c3ae  gcc/testsuite/gcc.dg/Woverlength-strings.c
! 0c5f8be5b670c6b7648c36db42a6eeac  gcc/testsuite/gcc.dg/Woverride-init-1.c
! 6704aa1f1a08ee0d4b039b4222eb9c67  gcc/testsuite/gcc.dg/Woverride-init-2.c
  a325dd759fae54feaae3395258941fa1  gcc/testsuite/gcc.dg/Woverride-init-3.c
  57c517b5d9ac205300b5fdee49f4fc79  gcc/testsuite/gcc.dg/Wpadded.c
  06162d89f7d3c7f1c3938ea7cc7c0c0a  gcc/testsuite/gcc.dg/Wparentheses-1.c
*************** fd1dd764e3b54f44dcb460a959f131a1  gcc/te
*** 24150,24155 ****
--- 24267,24273 ----
  ab3955f55aa596a98faf0528f22b1d0c  gcc/testsuite/gcc.dg/alias-9.c
  b87d726d798335bcf014c51ea61e9a4c  gcc/testsuite/gcc.dg/align-1.c
  ecaba7c928af85c280e63fa96b9b5e1b  gcc/testsuite/gcc.dg/align-2.c
+ 6583b4f8147fde31faab62b525508999  gcc/testsuite/gcc.dg/align-3.c
  b3869c9bd68bb9659f230f48bf56f83c  gcc/testsuite/gcc.dg/always_inline.c
  f8e56304de540053717fae4af2defaef  gcc/testsuite/gcc.dg/always_inline2.c
  495c171bd090a11c393fd33a225bf9c6  gcc/testsuite/gcc.dg/always_inline3.c
*************** a5e988481cd66b8acf6c610b847cb713  gcc/te
*** 24197,24202 ****
--- 24315,24322 ----
  0c13e4008bb665f05b030eb42e43183f  gcc/testsuite/gcc.dg/asan/pr63845.c
  9a45b4bebab3901180dbe2a44efcd070  gcc/testsuite/gcc.dg/asan/pr64170.c
  73f04617a7b0ee3bd0e6f41d954ea876  gcc/testsuite/gcc.dg/asan/pr64981.c
+ 97de4b173eeead7faba61cc66980de6f  gcc/testsuite/gcc.dg/asan/pr80166.c
+ 44651454ed7fd7d367ecc8dbce7be369  gcc/testsuite/gcc.dg/asan/pr80168.c
  5ff39290aee620ff2495e8cb5a3905ee  gcc/testsuite/gcc.dg/asm-1.c
  b8a6dfeb58832a8b8624357eed99557a  gcc/testsuite/gcc.dg/asm-2.c
  b911cf51d486403e3ca1c067a8a15675  gcc/testsuite/gcc.dg/asm-3.c
*************** efed4766878640e3953cf4a8272fe4bf  gcc/te
*** 26834,26839 ****
--- 26954,26960 ----
  31b1615453a71d015e9bcb61c74ac7eb  gcc/testsuite/gcc.dg/init-empty-2.c
  90817e9557235af860d367897aafa042  gcc/testsuite/gcc.dg/init-empty-3.c
  22b16e07a96d1fc14440515466c26af1  gcc/testsuite/gcc.dg/init-excess-1.c
+ e469f076692f924b2e1d46714a1056b3  gcc/testsuite/gcc.dg/init-excess-2.c
  396553d7240f36b87ed115ff6f7e069c  gcc/testsuite/gcc.dg/init-string-1.c
  82229a54386faefae6a5da00d0dc0e97  gcc/testsuite/gcc.dg/init-string-2.c
  09d7ab46368a3c67e84d62f415b75a88  gcc/testsuite/gcc.dg/init-undef-1.c
*************** ff181124e0dfb10498217ce4f497a743  gcc/te
*** 27008,27014 ****
  8f25b749b3343bbe5e9448d44019f76c  gcc/testsuite/gcc.dg/ipa/noclone-1.c
  40bd41302666d56c4edf7330db97920e  gcc/testsuite/gcc.dg/ipa/pr42706.c
  e4887053c792f4f78b03804c148839ce  gcc/testsuite/gcc.dg/ipa/pr45644.c
! 5c428c219954576c308c245d9256f052  gcc/testsuite/gcc.dg/ipa/pr48195.c
  cdec1b240b89ad7bf971aa799a1ea4a0  gcc/testsuite/gcc.dg/ipa/pr50744.c
  ca6dd47eed2470f390bd2cdca32f96fb  gcc/testsuite/gcc.dg/ipa/pr51362.c
  ef3f699c90a5350ceb595934cf210763  gcc/testsuite/gcc.dg/ipa/pr55260.c
--- 27129,27135 ----
  8f25b749b3343bbe5e9448d44019f76c  gcc/testsuite/gcc.dg/ipa/noclone-1.c
  40bd41302666d56c4edf7330db97920e  gcc/testsuite/gcc.dg/ipa/pr42706.c
  e4887053c792f4f78b03804c148839ce  gcc/testsuite/gcc.dg/ipa/pr45644.c
! 6e1b4f2c5d0c0d768778da8e3b7df828  gcc/testsuite/gcc.dg/ipa/pr48195.c
  cdec1b240b89ad7bf971aa799a1ea4a0  gcc/testsuite/gcc.dg/ipa/pr50744.c
  ca6dd47eed2470f390bd2cdca32f96fb  gcc/testsuite/gcc.dg/ipa/pr51362.c
  ef3f699c90a5350ceb595934cf210763  gcc/testsuite/gcc.dg/ipa/pr55260.c
*************** b79f1ceb546081b64c4d92d23a7a815a  gcc/te
*** 27034,27039 ****
--- 27155,27163 ----
  e96671ff735d92fb197623c0c635db8b  gcc/testsuite/gcc.dg/ipa/pr68790.c
  47f323ada98e8576e87b3d61e280cf39  gcc/testsuite/gcc.dg/ipa/pr70306.c
  9e20144eec96000223a2e983ffcba9fa  gcc/testsuite/gcc.dg/ipa/pr70646.c
+ fa8ddbcc7285d68bc45e806fa10c5aa5  gcc/testsuite/gcc.dg/ipa/pr80104.c
+ e7fc4be7576352c4cd0c02e049c49640  gcc/testsuite/gcc.dg/ipa/pr81696.c
+ e69e8e71bc18aee250eb3863dee58b57  gcc/testsuite/gcc.dg/ipa/pr82001.c
  3711549f043138241351fb1c94572f85  gcc/testsuite/gcc.dg/ipa/propalign-1.c
  08fac1cc332d4245f6524087de6e356f  gcc/testsuite/gcc.dg/ipa/propalign-2.c
  9b8d6608d230920de2838adb7960ab1c  gcc/testsuite/gcc.dg/ipa/propalign-3.c
*************** c5d3ad9a0b06bb1d77cc89309b8629ab  gcc/te
*** 27273,27278 ****
--- 27397,27403 ----
  957e327f63b137847986d2f4b832588e  gcc/testsuite/gcc.dg/lto/pr47259_1.c
  54e551daabafef19dff2d27e471c5a39  gcc/testsuite/gcc.dg/lto/pr47924_0.c
  783b00cf61b59ac61283d1315751dc5c  gcc/testsuite/gcc.dg/lto/pr48622_0.c
+ 2fa784dc45cba9ef34bcc21e141f0a25  gcc/testsuite/gcc.dg/lto/pr50199_0.c
  626442299a26bfdc323c3151d4aa1295  gcc/testsuite/gcc.dg/lto/pr51572-1_0.c
  383ec2ed7babb4bc10b561c2686f11cf  gcc/testsuite/gcc.dg/lto/pr52097_0.c
  d27dcd8e1afb81501ed01884f9b048f3  gcc/testsuite/gcc.dg/lto/pr52634_0.c
*************** e2a69fb19a42b9e9d0fb60b574fc8294  gcc/te
*** 27327,27332 ****
--- 27452,27459 ----
  e79a03eaf2b833f7a45b0112c6e05b26  gcc/testsuite/gcc.dg/lto/pr66221_0.c
  e4c1f7966a0b687ade65605b5ef05172  gcc/testsuite/gcc.dg/lto/pr66221_1.c
  513bc0d418851a55f4d310c4bd07a90b  gcc/testsuite/gcc.dg/lto/pr67452_0.c
+ d042436d2f4ca534a8b4d81610559ebd  gcc/testsuite/gcc.dg/lto/pr69188_0.c
+ 3b4bd973fa6b96913327e429117c532a  gcc/testsuite/gcc.dg/lto/pr69188_1.c
  260506c568e35bc49112021166edf8f2  gcc/testsuite/gcc.dg/lto/resolutions_0.c
  1084184a9b11a84eee39ef130211f70b  gcc/testsuite/gcc.dg/lto/save-temps_0.c
  9789216c84be63ef866b406d3dc749d8  gcc/testsuite/gcc.dg/lto/simd-function_0.c
*************** b01e42858e0423266a42ce48f5963765  gcc/te
*** 27616,27621 ****
--- 27743,27752 ----
  98eb40fd35afc99b8d7a0d9037913d4a  gcc/testsuite/gcc.dg/pch/macro-4.c
  9dfd3f4bded8093e1bd9fe58412b43c6  gcc/testsuite/gcc.dg/pch/macro-4.hs
  6724598515b138f7d2ec52c989a7c8aa  gcc/testsuite/gcc.dg/pch/pch.exp
+ d4141b7ac70c28b7c83f42cea80032d1  gcc/testsuite/gcc.dg/pch/pr66343-1.c
+ fecd32092f1271edbd03eb98de866244  gcc/testsuite/gcc.dg/pch/pr66343-1.hs
+ 140e74992c61983f49deebe0a5a98c95  gcc/testsuite/gcc.dg/pch/pr66343-2.c
+ fecd32092f1271edbd03eb98de866244  gcc/testsuite/gcc.dg/pch/pr66343-2.hs
  10e7aa3c9c88169c37fec51ab85d804b  gcc/testsuite/gcc.dg/pch/pushpop-1.c
  8dd7fa6bfb17e08908378d5179a15dcd  gcc/testsuite/gcc.dg/pch/pushpop-1.hs
  046fa096e19252044dc223b9025b6b66  gcc/testsuite/gcc.dg/pch/save-temps-1.c
*************** e8ab6748304462c991d39c13563cbf48  gcc/te
*** 28768,28773 ****
--- 28899,28905 ----
  9b83e97ecb4b549b8c90122cd4fbd1f8  gcc/testsuite/gcc.dg/pr67028.c
  22b215a01a6d868774c721c1885d3cb4  gcc/testsuite/gcc.dg/pr67029.c
  83d2ba40db3f581a1ffc833a152e4d49  gcc/testsuite/gcc.dg/pr67271.c
+ c7c4b7705622efa27fdc0b569d8c2977  gcc/testsuite/gcc.dg/pr67410.c
  26420e282f9c8903f34baea4ce4e2835  gcc/testsuite/gcc.dg/pr67512.c
  fb456e8c2f8f230de46a56453b2c02b6  gcc/testsuite/gcc.dg/pr67563.c
  b501c41d88536640ee6fb443cdfed70b  gcc/testsuite/gcc.dg/pr67730-1.c
*************** c32e69e0b15af869a3408b989cf2a673  gcc/te
*** 28800,28805 ****
--- 28932,28956 ----
  5e379016acbc1d2eae8b26f5aa49b810  gcc/testsuite/gcc.dg/pr70169.c
  5a875c740aedd4dc64ede0baa88152db  gcc/testsuite/gcc.dg/pr70177.c
  c67417bef7b2de68b948a03f52093a75  gcc/testsuite/gcc.dg/pr70269.c
+ 79f760cb1168bdcad7ceef62cd0034c3  gcc/testsuite/gcc.dg/pr71558.c
+ 2d57cd18f3b5a4ce14ac9f867103994d  gcc/testsuite/gcc.dg/pr71581.c
+ c9312ef03c2b6660d66f7f253edd0a95  gcc/testsuite/gcc.dg/pr72816.c
+ c8b6cd5a10630b96dc3a5624216b7302  gcc/testsuite/gcc.dg/pr77450.c
+ 29614a746c17b223321a0d7ef3514fa6  gcc/testsuite/gcc.dg/pr77587.c
+ 69b6daef9d67d24c3fe0b63b8952814d  gcc/testsuite/gcc.dg/pr77587a.c
+ 7a2e92e436f35dd60a04e2f596e8502f  gcc/testsuite/gcc.dg/pr77673.c
+ 036b89fa8e150cf11fc1400568acc2d2  gcc/testsuite/gcc.dg/pr78185.c
+ 7bfaca350ee545dbe10363c435dfa736  gcc/testsuite/gcc.dg/pr78333.c
+ 9c25129a5f3400435bb046e327b76463  gcc/testsuite/gcc.dg/pr79494.c
+ 9ec3e8f462eef4a5f6494d9a88865b8c  gcc/testsuite/gcc.dg/pr79499.c
+ ef954bb1fb7a47316e8ab7a4574c5cfc  gcc/testsuite/gcc.dg/pr79570.c
+ 28988c41c40042f95506d21ea70f33cb  gcc/testsuite/gcc.dg/pr79574-2.c
+ 8757e7055d5c4d752bee007011bd64a9  gcc/testsuite/gcc.dg/pr79574.c
+ c61145f66ad86d5750f921ee12a6d3ea  gcc/testsuite/gcc.dg/pr80112.c
+ 84b0e8e3e377514aaf1b169b00c28bee  gcc/testsuite/gcc.dg/pr80286.c
+ 2d3008b06f6add111e8e825b9d93b0a7  gcc/testsuite/gcc.dg/pr81192.c
+ 25643ed86459e72b894b58fd0ca23c45  gcc/testsuite/gcc.dg/pr81621.c
+ 6ab73da237e4b1f4a00a90b19e6d538b  gcc/testsuite/gcc.dg/pr82112.c
  8b7d73da2d5d78000716492365a85d5a  gcc/testsuite/gcc.dg/pr8715.c
  3d08410b2dd57259aa63f0e1c64b376e  gcc/testsuite/gcc.dg/pr8788-1.c
  be04382a35ebb1cfae1b2168f1693a94  gcc/testsuite/gcc.dg/pr8835-1.c
*************** a831de49f2d41703b35fb1187a5eaacf  gcc/te
*** 29123,29128 ****
--- 29274,29280 ----
  3fb5ccff70fc82da2e2aac8594fb9457  gcc/testsuite/gcc.dg/tls/pr47715-5.c
  7193b5d66103274fe5171afd9347d3b2  gcc/testsuite/gcc.dg/tls/pr58595.c
  f12db64d724ba7ee8005f9b84bbac338  gcc/testsuite/gcc.dg/tls/pr66470.c
+ 983d38f0205472294f9a0d21db0b4c6b  gcc/testsuite/gcc.dg/tls/pr78796.c
  796d5642fd9a5bf2871955a7f51a2b2c  gcc/testsuite/gcc.dg/tls/section-1.c
  8a7ac847cc234a02986b204d9590a7fa  gcc/testsuite/gcc.dg/tls/section-2.c
  bd750cfcc2981be8695d1ba87cf4e02d  gcc/testsuite/gcc.dg/tls/struct-1.c
*************** dfb471a397851bdb52f7df883b650b86  gcc/te
*** 29255,29261 ****
  21ae8e4c97f9712921eba7fc818f95ac  gcc/testsuite/gcc.dg/torture/builtin-explog-1.c
  78fe887c5b4e40b6979a21f42cf88715  gcc/testsuite/gcc.dg/torture/builtin-frexp-1.c
  ee8bd79edc0ad4bc126961e887ebfba4  gcc/testsuite/gcc.dg/torture/builtin-integral-1.c
! d03ae4d66084fa9943ede3ebc5834bf4  gcc/testsuite/gcc.dg/torture/builtin-isinf_sign-1.c
  83118765f0b187110c56a43bc55e625d  gcc/testsuite/gcc.dg/torture/builtin-ldexp-1.c
  4af299d669d5105372a113668f341c2d  gcc/testsuite/gcc.dg/torture/builtin-logb-1.c
  5e784903b5dc50b9d24bee1bc3d1a59e  gcc/testsuite/gcc.dg/torture/builtin-math-1.c
--- 29407,29413 ----
  21ae8e4c97f9712921eba7fc818f95ac  gcc/testsuite/gcc.dg/torture/builtin-explog-1.c
  78fe887c5b4e40b6979a21f42cf88715  gcc/testsuite/gcc.dg/torture/builtin-frexp-1.c
  ee8bd79edc0ad4bc126961e887ebfba4  gcc/testsuite/gcc.dg/torture/builtin-integral-1.c
! c08b043a9d6b664b2a28e52b43d2d57b  gcc/testsuite/gcc.dg/torture/builtin-isinf_sign-1.c
  83118765f0b187110c56a43bc55e625d  gcc/testsuite/gcc.dg/torture/builtin-ldexp-1.c
  4af299d669d5105372a113668f341c2d  gcc/testsuite/gcc.dg/torture/builtin-logb-1.c
  5e784903b5dc50b9d24bee1bc3d1a59e  gcc/testsuite/gcc.dg/torture/builtin-math-1.c
*************** c086cf125214d765f1c5a72c38be056f  gcc/te
*** 29846,29851 ****
--- 29998,30004 ----
  47ff79c68173fd64e216bdb58e6b86e4  gcc/testsuite/gcc.dg/torture/pr68017.c
  0aed8d710722c86c135d00c92adb42f9  gcc/testsuite/gcc.dg/torture/pr68067-1.c
  b5b9ccaf68338894bc8598bb94bd624f  gcc/testsuite/gcc.dg/torture/pr68067-2.c
+ d97bda1e2b9d4a1a15d587e807ffaba1  gcc/testsuite/gcc.dg/torture/pr68528.c
  15674311a236d345e5ccc22c50bd2032  gcc/testsuite/gcc.dg/torture/pr68955.c
  d0e72257e28bdee76e42175b2609453f  gcc/testsuite/gcc.dg/torture/pr68963.c
  d41d8cd98f00b204e9800998ecf8427e  gcc/testsuite/gcc.dg/torture/pr69166.c
*************** ff3c2aee40e9c9844deb96dd9600b613  gcc/te
*** 29875,29882 ****
--- 30028,30061 ----
  b64fc3513d09279239f96771a7af996c  gcc/testsuite/gcc.dg/torture/pr70484.c
  afe02f85eea1b350f51277401b3e0d48  gcc/testsuite/gcc.dg/torture/pr70623-2.c
  ae5459727bedcc45a1feee9f56e5974c  gcc/testsuite/gcc.dg/torture/pr70623.c
+ da4037959e336e19cb95c25f91f8eb52  gcc/testsuite/gcc.dg/torture/pr70628.c
  058fe139380690d2ec38aa882c1f7908  gcc/testsuite/gcc.dg/torture/pr70780.c
  b6bb0c63d9e968f4f16f282365518a50  gcc/testsuite/gcc.dg/torture/pr70941.c
+ 08b15e14c6c9f4cc6291f19fc8ba963b  gcc/testsuite/gcc.dg/torture/pr71423.c
+ 0c398d952cf20fc83aec050f85d8a44b  gcc/testsuite/gcc.dg/torture/pr71452.c
+ d7822d9246b54abacbdc7d6230ab041d  gcc/testsuite/gcc.dg/torture/pr71522.c
+ b0020481b01ba2fea155b7e666817dc3  gcc/testsuite/gcc.dg/torture/pr71606.c
+ 84d2efbfb6770d353f4734e7a4b8472e  gcc/testsuite/gcc.dg/torture/pr75964.c
+ a60b7965903cb9c959e40c476b74eee8  gcc/testsuite/gcc.dg/torture/pr77309.c
+ b2079f895bb4a53a9fb50a4f7f4dad38  gcc/testsuite/gcc.dg/torture/pr77436.c
+ 3738145bdfb921ff6fde7c38cba0ffc4  gcc/testsuite/gcc.dg/torture/pr77478.c
+ 3bb780f180e0ee73008ad02127a056f8  gcc/testsuite/gcc.dg/torture/pr77605.c
+ 57be2089dac1fb2e85cd58323205f9a6  gcc/testsuite/gcc.dg/torture/pr77646.c
+ 865946206183cafa8a5643538e8b0fbb  gcc/testsuite/gcc.dg/torture/pr77648-1.c
+ c945e3dac4b0d4098ff940d231eba713  gcc/testsuite/gcc.dg/torture/pr77648-2.c
+ 114db937484a8170c1da6ce7c65177ca  gcc/testsuite/gcc.dg/torture/pr77768.c
+ 853e8eecbb93209860176f0749d7795f  gcc/testsuite/gcc.dg/torture/pr77855.c
+ a878d4452d87793c8c44834bb0002252  gcc/testsuite/gcc.dg/torture/pr77916.c
+ 11ecd2bf13f49659549b909ba5e89a22  gcc/testsuite/gcc.dg/torture/pr77937-1.c
+ 93456a1afa9bdb206d19c956fc09d572  gcc/testsuite/gcc.dg/torture/pr77937-2.c
+ 97a06daa72abd05b50e081d28e95b4ab  gcc/testsuite/gcc.dg/torture/pr78416.c
+ 993a3dda89ab325c2c0104a20a2b3aa2  gcc/testsuite/gcc.dg/torture/pr78731.c
+ 454f620b10b777ffe98a6272450350e7  gcc/testsuite/gcc.dg/torture/pr79666.c
+ f32c1c2791d7c91b2c9f4e051cb74457  gcc/testsuite/gcc.dg/torture/pr79732.c
+ 028eb97756cfe96f0e2005402ce583df  gcc/testsuite/gcc.dg/torture/pr80025.c
+ 836cdc8e8c71c2a740d491e170406a0c  gcc/testsuite/gcc.dg/torture/pr80122.c
+ 18bcc1e2a028a46b70391f66f2fe3019  gcc/testsuite/gcc.dg/torture/pr80362.c
+ 87d263c15a5b5f49fa4a5414786fd90b  gcc/testsuite/gcc.dg/torture/pr80539.c
  62b28db4200d0c4e51bde8d1e5693886  gcc/testsuite/gcc.dg/torture/pr8081.c
  b3a9e4f2af6462183da8d6c5cb13bf1f  gcc/testsuite/gcc.dg/torture/pta-callused-1.c
  98fde0e59e55c1ed923ee9d9f034d7f2  gcc/testsuite/gcc.dg/torture/pta-escape-1.c
*************** fa7217b4e402db46b1d64ca38eb6f212  gcc/te
*** 30018,30023 ****
--- 30197,30203 ----
  504f32de54a5ad49b342a10f337e5dab  gcc/testsuite/gcc.dg/tree-prof/pr52027.c
  345c39022fa99a5e40eae744b8bcc403  gcc/testsuite/gcc.dg/tree-prof/pr52150.c
  3f27342de254e8240c99bdedc574ddfe  gcc/testsuite/gcc.dg/tree-prof/pr59003.c
+ 41f2b0f1caac2c21616dfe0830cd87fe  gcc/testsuite/gcc.dg/tree-prof/pr79587.c
  6326a041bce19e077fb8352676c53447  gcc/testsuite/gcc.dg/tree-prof/prof-robust-1.c
  c5f69c00bf64730ff83c8cc52b120cc7  gcc/testsuite/gcc.dg/tree-prof/stringop-1.c
  e55a1b3e5811e1e818cfe423498ef259  gcc/testsuite/gcc.dg/tree-prof/stringop-2.c
*************** a58f4de98c197990fcf2e4713881d8ca  gcc/te
*** 30681,30690 ****
--- 30861,30874 ----
  1d0372f8ae37d080e68785ebbe3c78fa  gcc/testsuite/gcc.dg/tree-ssa/pr64801.c
  0490327703b674d0b535db002e92f1b3  gcc/testsuite/gcc.dg/tree-ssa/pr65136.c
  bb8857e07a5b85d146bcc9aec96d0c1b  gcc/testsuite/gcc.dg/tree-ssa/pr67755.c
+ 9d94b8736a8137db631f83d5452e4332  gcc/testsuite/gcc.dg/tree-ssa/pr68021.c
  4c8881edc71005a1d85370d1a8358a54  gcc/testsuite/gcc.dg/tree-ssa/pr69355.c
  da374335b5ce20d724b67b01ce0e71d3  gcc/testsuite/gcc.dg/tree-ssa/pr69666.c
  f7a3fabc9425270a4d8e40f8a991ca09  gcc/testsuite/gcc.dg/tree-ssa/pr69845-1.c
  885c1be5e32bb9fbd61002b21649165d  gcc/testsuite/gcc.dg/tree-ssa/pr69845-2.c
+ 54361b5a6c79884df71815f5ccc04ff8  gcc/testsuite/gcc.dg/tree-ssa/pr78428.c
+ bbf1c06c2256a14579c491f2da36264f  gcc/testsuite/gcc.dg/tree-ssa/pr78886.c
+ 4ac3ddbb068bcfee51e3aaeaaa518512  gcc/testsuite/gcc.dg/tree-ssa/pr79803.c
  cfcca8eb5b4b49640309e8c296b2f651  gcc/testsuite/gcc.dg/tree-ssa/predcom-1.c
  e69a11968c8d3bd61d110c2fbc09a63f  gcc/testsuite/gcc.dg/tree-ssa/predcom-2.c
  d2bb80f7dc1eb91f7fc51b7e83fa8b73  gcc/testsuite/gcc.dg/tree-ssa/predcom-3.c
*************** a8a75b36b3cbde1b2efc3f3da0ae398d  gcc/te
*** 31179,31184 ****
--- 31363,31371 ----
  27953860ae581b218a25877813bf7792  gcc/testsuite/gcc.dg/ubsan/object-size-9.c
  8b53119c2975ba4eb7e0a8a3f21049bc  gcc/testsuite/gcc.dg/ubsan/pr63690.c
  c9a455b03d901e306e1836d50e9e37d6  gcc/testsuite/gcc.dg/ubsan/pr67662.c
+ 796829af36eae05fda4a4c261de44807  gcc/testsuite/gcc.dg/ubsan/pr70878.c
+ 3037e107357a95ddd6b61dbb90af7fde  gcc/testsuite/gcc.dg/ubsan/pr80097.c
+ 6dd5a7b8f1dd237a95a0f42766ee64d9  gcc/testsuite/gcc.dg/ubsan/pr81162.c
  b8151850777ff6cf7e08f49727bb9591  gcc/testsuite/gcc.dg/ubsan/ubsan.exp
  b749062a1214fdf6ba947d30bdf90f30  gcc/testsuite/gcc.dg/ucnid-1.c
  deec75fcb663af9b8c0ad9b43a81dd3b  gcc/testsuite/gcc.dg/ucnid-10.c
*************** c1a258213052c3dfbc9b6a8c1c0d6d6c  gcc/te
*** 32237,32242 ****
--- 32424,32430 ----
  1e23759ae2d20580a48c9849cfca511f  gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-2short.c
  3d5e5f3957e344192acd9a441f82efd1  gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-dot-s8b.c
  8fa0c79d0870b4c3bfed6efe4bdb678f  gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-pattern-2c.c
+ deacf2b346fc9032e20669526a1ad31d  gcc/testsuite/gcc.dg/vector-1.c
  94848eb0772411f3b0653cf4ece16fb2  gcc/testsuite/gcc.dg/vector-shift-2.c
  86f897d771475ca631b3e92b126d1939  gcc/testsuite/gcc.dg/vector-shift.c
  682b52464ba3c1efc4293e4f2d4ba5b7  gcc/testsuite/gcc.dg/verbose-asm.c
*************** d8fe1df6bd60ee66e08bb71c04737d68  gcc/te
*** 32949,32954 ****
--- 33137,33144 ----
  b8f90423eef94b7a240f40a79251eabf  gcc/testsuite/gcc.target/aarch64/pr68363_1.c
  c78c0b4bf1f9d71f6874b0be55f3f7b8  gcc/testsuite/gcc.target/aarch64/pr70044.c
  e7efe396ef16dbc7526785247ead6d84  gcc/testsuite/gcc.target/aarch64/pr70809_1.c
+ c8c052e3ffb361fbe4b0043b1414c58b  gcc/testsuite/gcc.target/aarch64/pr78038.c
+ ed6579d962ab6988afc3e526e6c51275  gcc/testsuite/gcc.target/aarch64/pr78255.c
  1f95766b4ed5bfb5f2cf1f168a607a8d  gcc/testsuite/gcc.target/aarch64/predefine_large.c
  d38e476730748c653068e7cb2d8d6ca6  gcc/testsuite/gcc.target/aarch64/predefine_small.c
  29e7dbfba15c0f945488b33400b908b4  gcc/testsuite/gcc.target/aarch64/predefine_tiny.c
*************** aa8e6314969635296b924c21de596181  gcc/te
*** 33640,33645 ****
--- 33830,33837 ----
  b80315a2e089ca4c3248a4d827eb49ef  gcc/testsuite/gcc.target/arm/atomic-op-seq_cst.c
  d6a110ab8373cfe1039d83e073de1dee  gcc/testsuite/gcc.target/arm/atomic-op-short.c
  6888ada4c21cda37da2310c44f94d92a  gcc/testsuite/gcc.target/arm/atomic_loaddi_1.c
+ 5859020e19de924a786d03d4bd1ea91f  gcc/testsuite/gcc.target/arm/atomic_loaddi_10.c
+ 342a363b77439a8d8d3d8a12284842d1  gcc/testsuite/gcc.target/arm/atomic_loaddi_11.c
  748d8b48dbda98ef62ce99a5203312e7  gcc/testsuite/gcc.target/arm/atomic_loaddi_2.c
  3fe801d58f3b70880715055726fee231  gcc/testsuite/gcc.target/arm/atomic_loaddi_3.c
  b7ab6cc044af1bed0ca099a7f8685f4e  gcc/testsuite/gcc.target/arm/atomic_loaddi_4.c
*************** d721a88ae72a8be261b58663490fc7ee  gcc/te
*** 33688,33693 ****
--- 33880,33886 ----
  aac420c0b357d3ff45f93061cf99e491  gcc/testsuite/gcc.target/arm/divzero.c
  3a4cc77eebab8f993d561b9747c869c2  gcc/testsuite/gcc.target/arm/eabi1.c
  14c1154266333682f985fe7c6c6e3911  gcc/testsuite/gcc.target/arm/eliminate.c
+ 35daa2bef7020b26f98b70184aa411d4  gcc/testsuite/gcc.target/arm/empty_fiq_handler.c
  78487646e9710e62b0d506909e9588a8  gcc/testsuite/gcc.target/arm/epilog-1.c
  af1ccf2d19987a11d4e08cd9cccf8a69  gcc/testsuite/gcc.target/arm/fixed-point-exec.c
  8c44444b0855c804bcef7d0e74866430  gcc/testsuite/gcc.target/arm/fixed_float_conversion.c
*************** ef3b417cb5557b3d4caf7046dd71a0f6  gcc/te
*** 33730,33735 ****
--- 33923,33929 ----
  59b43d7fa573aec56d37e8d3ee175b75  gcc/testsuite/gcc.target/arm/fp16-unprototyped-1.c
  a60c72361842412ed806a9caeafedd5b  gcc/testsuite/gcc.target/arm/fp16-unprototyped-2.c
  b627f1fc53dc3aa6e38826de78cc3f9d  gcc/testsuite/gcc.target/arm/fp16-variadic-1.c
+ e8ad8b3e7c27f53eca5540f75a6dc2be  gcc/testsuite/gcc.target/arm/fpscr.c
  becd73a8b67b5a5ea5ac098897654766  gcc/testsuite/gcc.target/arm/frame-pointer-1.c
  d197c58c217da8cdebc4b5d30cce8a52  gcc/testsuite/gcc.target/arm/ftest-armv4-arm.c
  f8c88e22189f7cae3d54e35f7511abc6  gcc/testsuite/gcc.target/arm/ftest-armv4t-arm.c
*************** a38ba5635fcb15a6a5c3bd66dca37b1c  gcc/te
*** 35995,36000 ****
--- 36189,36199 ----
  51f46e9158ad549a6f9079f849c4c10d  gcc/testsuite/gcc.target/arm/pr69187.c
  b1f1919dcfa1287f837de2b937769050  gcc/testsuite/gcc.target/arm/pr69194.c
  e5aafcaef63ec87ca861c2c3df04f753  gcc/testsuite/gcc.target/arm/pr69614.c
+ 4c5ae74514e166984fa2a6889c2e475e  gcc/testsuite/gcc.target/arm/pr77933-1.c
+ 5569dab63bab16df7a85b99d44757d38  gcc/testsuite/gcc.target/arm/pr77933-2.c
+ 68c26348d2a6791f295710024aba5c21  gcc/testsuite/gcc.target/arm/pr78041.c
+ 7ff23bd8b3754acf52c8f22104b1f9b6  gcc/testsuite/gcc.target/arm/pr78255-1.c
+ 4fffc267d9c8775478c72209db83f52e  gcc/testsuite/gcc.target/arm/pr78255-2.c
  3143560976572191d8bba6ba78a45aa6  gcc/testsuite/gcc.target/arm/register-variables.c
  9891ac3dc9739983de683e418f98f801  gcc/testsuite/gcc.target/arm/require-pic-register-loc.c
  7488cdc20f835bda2359993c0ec74d15  gcc/testsuite/gcc.target/arm/rev16.c
*************** f1148ddb95a6320ace4c79914eafc0a3  gcc/te
*** 36272,36282 ****
--- 36471,36484 ----
  d31812204be066c0a4bf4f23121c0961  gcc/testsuite/gcc.target/avr/avr.exp
  a6701935d18c8ed062555c8a48454bc9  gcc/testsuite/gcc.target/avr/dev-specific-rmw.c
  2028ceccf9f97e5e84e9adf6beb7597e  gcc/testsuite/gcc.target/avr/exit-abort.h
+ 17f2d31ca17ff746ab26fee309e56e95  gcc/testsuite/gcc.target/avr/isr-test.h
  2931177f4aeff49d531d5474224448f6  gcc/testsuite/gcc.target/avr/pr46779-1.c
  572dc228e08385a1db0fcbab66dbaa4e  gcc/testsuite/gcc.target/avr/pr46779-2.c
  fc917fcfe7cfe97b5f27265d5960f0e6  gcc/testsuite/gcc.target/avr/pr52472.c
  421d2b9b36fa2496dce05d129d2c352b  gcc/testsuite/gcc.target/avr/pr58545.c
  9e82df166e8b559cb56d2c4f48cbaf30  gcc/testsuite/gcc.target/avr/pr60991.c
+ 94f026369213dad7565383028ef6afcf  gcc/testsuite/gcc.target/avr/pr65210.c
+ 292bf2dc33b5cfededd107fe1c0ebc88  gcc/testsuite/gcc.target/avr/pr71103.c
  881cb1836ddfc3105e0aacacc481aa09  gcc/testsuite/gcc.target/avr/progmem-error-1.c
  2eb3f167ae58b534e25afc1b94617746  gcc/testsuite/gcc.target/avr/progmem-error-1.cpp
  56de611fd29076ce9da389a853476819  gcc/testsuite/gcc.target/avr/progmem-warning-1.c
*************** b886957d93603d104ce113c5f6f5b702  gcc/te
*** 36304,36309 ****
--- 36506,36514 ----
  4a5987f17a5b1c68712021003150be18  gcc/testsuite/gcc.target/avr/torture/builtins-error.c
  c458c2462e23a4c58a7e4d05b6200907  gcc/testsuite/gcc.target/avr/torture/fix-types.h
  9c259c4f72a85d057a7f86dee19660cc  gcc/testsuite/gcc.target/avr/torture/int24-mul.c
+ f07474ce14e61da44f73f5bc38af0fa5  gcc/testsuite/gcc.target/avr/torture/isr-01-simple.c
+ fcfc22b5becf29a31bc290457133738d  gcc/testsuite/gcc.target/avr/torture/isr-02-call.c
+ 9cae7dcbc57747c7d869b4d66a99221f  gcc/testsuite/gcc.target/avr/torture/isr-03-fixed.c
  0844a939ea2464d30cc8892c85b4aecc  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
*************** fea352b16ae79edc9965b1f39680a709  gcc/te
*** 36314,36319 ****
--- 36519,36526 ----
  7f56c1b750dfe8d7e4128f15aa3eaffe  gcc/testsuite/gcc.target/avr/torture/pr63633-ice-mult.c
  44584f49cd0975073be7b86102774077  gcc/testsuite/gcc.target/avr/torture/pr64331.c
  dcabffeb42e88a442661b9e47e43a9c1  gcc/testsuite/gcc.target/avr/torture/pr64452.c
+ ab53af0eb6dbfe2791a8ac1bbaf0c11f  gcc/testsuite/gcc.target/avr/torture/pr71103-2.c
+ 5f3be2dbb82f715c14a1a41fff447a60  gcc/testsuite/gcc.target/avr/torture/pr77326.c
  21a45d34960ba9567b9f2483d22c843f  gcc/testsuite/gcc.target/avr/torture/progmem-1.c
  564c71a894aff68e98d5c4a6db2b47ae  gcc/testsuite/gcc.target/avr/torture/progmem-1.cpp
  e3e1c41865f5287c9ff7e200745758fd  gcc/testsuite/gcc.target/avr/torture/sat-hr-plus-minus.c
*************** c437ae63e2540199d8c765547fc407d6  gcc/te
*** 36819,36824 ****
--- 37026,37032 ----
  b6e744a5c521873cc8be2dbb5f25790d  gcc/testsuite/gcc.target/i386/avx-pr57233.c
  ab15d222e706bd85c87c037d1e9b6f51  gcc/testsuite/gcc.target/i386/avx-pr63594-1.c
  7e490de1d2a70d21844cdc70c1546f49  gcc/testsuite/gcc.target/i386/avx-pr63594-2.c
+ 15722fba52fd43dd64c47b080c1c307c  gcc/testsuite/gcc.target/i386/avx-pr80286.c
  4e3d37bb04b99394790fa9e8caddf790  gcc/testsuite/gcc.target/i386/avx-recip-vec.c
  02ae18a66bd7b76f7a651b896f066b70  gcc/testsuite/gcc.target/i386/avx-reduc-1.c
  772f703b19bb27d5947d136a2f72221e  gcc/testsuite/gcc.target/i386/avx-rint-sfix-2-vec.c
*************** adf63582badc02467af57f768108628f  gcc/te
*** 37395,37400 ****
--- 37603,37609 ----
  23119c1a19029b030f8d77ec9d58b970  gcc/testsuite/gcc.target/i386/avx2-pr63594-2.c
  adb7b1598c20430c16f98c7ec509cbbc  gcc/testsuite/gcc.target/i386/avx2-pr64252.c
  ba17e5440f855d5b86affe06cb486090  gcc/testsuite/gcc.target/i386/avx2-pr64286.c
+ 757f2803cb524594784445d322b67fa5  gcc/testsuite/gcc.target/i386/avx2-pr70574.c
  2b83554762241a146df7ccc1617e1bfa  gcc/testsuite/gcc.target/i386/avx2-vbroadcastsd_pd-1.c
  193f0a7d029b84ce4e3b2e58eac8240a  gcc/testsuite/gcc.target/i386/avx2-vbroadcastsd_pd-2.c
  84a46e7f4338347591f1c8fe0aaceda5  gcc/testsuite/gcc.target/i386/avx2-vbroadcastsi128-1.c
*************** e77e7a8b9ae50a450a04aced77a9cbd0  gcc/te
*** 40068,40073 ****
--- 40277,40287 ----
  d961249337eb5f0487f3f532312e3199  gcc/testsuite/gcc.target/i386/mpx/pr68337-1.c
  e64de766303ab8d2b507adb2517650f5  gcc/testsuite/gcc.target/i386/mpx/pr68337-2.c
  dedcdece98d6722cf60573a8409aaa81  gcc/testsuite/gcc.target/i386/mpx/pr68416.c
+ 51d453987274aa6444003b6ad207c139  gcc/testsuite/gcc.target/i386/mpx/pr78339.c
+ 07d6ed7d973e170542d15b433c8db44e  gcc/testsuite/gcc.target/i386/mpx/pr79631.c
+ d637fa6066a7da620fed27559d7da1b7  gcc/testsuite/gcc.target/i386/mpx/pr79753.c
+ e96704aac9ccfcbb20830047695ce956  gcc/testsuite/gcc.target/i386/mpx/pr79770.c
+ 1ef078c4aeea1e1432f65bde3abbd4a3  gcc/testsuite/gcc.target/i386/mpx/pr79987.c
  cb8a04ee24250678af3e3e0db64ccfa6  gcc/testsuite/gcc.target/i386/mpx/realloc-1-lbv.c
  16d5e4ac393ac4db6f87f25b4aab5ba2  gcc/testsuite/gcc.target/i386/mpx/realloc-1-nov.c
  967cd8d609c7360939caec43d90b8813  gcc/testsuite/gcc.target/i386/mpx/realloc-1-ubv.c
*************** bccc40fa95a11c992c5319581f1c269f  gcc/te
*** 40237,40243 ****
  b6587e8091b873e052b86981b4c6dd26  gcc/testsuite/gcc.target/i386/pclmul-avx-check.h
  56f7ac50c182627b5551065184b25a3b  gcc/testsuite/gcc.target/i386/pclmul-check.h
  15dd7e15fc38c0bad00692ec554b7cd1  gcc/testsuite/gcc.target/i386/pclmulqdq.c
- 7cba7c855889c19a09d531a2facd7ecd  gcc/testsuite/gcc.target/i386/pcommit-1.c
  9679e778097966e5b39d1c4130b0ee74  gcc/testsuite/gcc.target/i386/pentium4-not-mull.c
  51cadc9814c437e72abf8293afd36241  gcc/testsuite/gcc.target/i386/perm-concat.c
  d5d456417fd703ff892cd508c42e4f32  gcc/testsuite/gcc.target/i386/pic-1.c
--- 40451,40456 ----
*************** fcdb8a2e469f382466d55620e63345f4  gcc/te
*** 40820,40826 ****
  10edafa5d28fec2dd9bc1ecab31a24f3  gcc/testsuite/gcc.target/i386/pr64617.c
  564104a134a0332a3502e02b96c94cb3  gcc/testsuite/gcc.target/i386/pr64805.c
  1373d22a1c11a77bbd5c3b0ae7ab163b  gcc/testsuite/gcc.target/i386/pr64905.c
! c134506d0c4ff040cc182846148e7f4c  gcc/testsuite/gcc.target/i386/pr65044.c
  3f9f04c2528a876d6e1d568bacdc4432  gcc/testsuite/gcc.target/i386/pr65078-1.c
  eb5c42e7434196907a6b147b87ede739  gcc/testsuite/gcc.target/i386/pr65078-2.c
  0135600497644144bf44c86c6019c038  gcc/testsuite/gcc.target/i386/pr65078-3.c
--- 41033,41039 ----
  10edafa5d28fec2dd9bc1ecab31a24f3  gcc/testsuite/gcc.target/i386/pr64617.c
  564104a134a0332a3502e02b96c94cb3  gcc/testsuite/gcc.target/i386/pr64805.c
  1373d22a1c11a77bbd5c3b0ae7ab163b  gcc/testsuite/gcc.target/i386/pr64905.c
! acc9972da84530cb5b60a756f1263cf4  gcc/testsuite/gcc.target/i386/pr65044.c
  3f9f04c2528a876d6e1d568bacdc4432  gcc/testsuite/gcc.target/i386/pr65078-1.c
  eb5c42e7434196907a6b147b87ede739  gcc/testsuite/gcc.target/i386/pr65078-2.c
  0135600497644144bf44c86c6019c038  gcc/testsuite/gcc.target/i386/pr65078-3.c
*************** a7ae171348479a97f8436614b36fd410  gcc/te
*** 40893,40898 ****
--- 41106,41139 ----
  9a6009bd978dadd47bb2a756be9c41cb  gcc/testsuite/gcc.target/i386/pr70525.c
  63614f4a8e03a5baed97479f04e87900  gcc/testsuite/gcc.target/i386/pr70662.c
  1003b2af30448864252327bd08ddb57b  gcc/testsuite/gcc.target/i386/pr70858.c
+ 27e030b5f9e35d267c9bd37d4e1e4a68  gcc/testsuite/gcc.target/i386/pr71458.c
+ 4e5dce84b234a32706534e5c74192ab3  gcc/testsuite/gcc.target/i386/pr76342.c
+ bb7f521a5508d5630cc282c2daf09320  gcc/testsuite/gcc.target/i386/pr77377.c
+ e600788d6e924c2ec9337867af173298  gcc/testsuite/gcc.target/i386/pr77403.c
+ 8778824d1f460735e2e28b66438ebdc3  gcc/testsuite/gcc.target/i386/pr77594.c
+ ebdf78610e5253029e5305e68875b6c9  gcc/testsuite/gcc.target/i386/pr77991.c
+ 49ae150fd045d15f422427bbe3805a0d  gcc/testsuite/gcc.target/i386/pr78227-1.c
+ 4730916a53a530c342916eb3f8c600f0  gcc/testsuite/gcc.target/i386/pr78227-2.c
+ 65244d7660e21de57b2f5bdf3df24107  gcc/testsuite/gcc.target/i386/pr78262.c
+ deb27ae8ba4b14e7c0102c71de9b30e7  gcc/testsuite/gcc.target/i386/pr78310.c
+ bc00dfd68405a008b750f094120fac4f  gcc/testsuite/gcc.target/i386/pr79514.c
+ e24bb155bc16036a1f39902f9cda1133  gcc/testsuite/gcc.target/i386/pr79559.c
+ 7dda7ba5d0bc563d983cbcd61cf05cc8  gcc/testsuite/gcc.target/i386/pr79568-1.c
+ a11495811689152262f1a40e2f796ce9  gcc/testsuite/gcc.target/i386/pr79568-2.c
+ 18b2847f138512a15d9b786fc39ff5df  gcc/testsuite/gcc.target/i386/pr79568-3.c
+ 775e7fe3e5625b784949e1922efab9ea  gcc/testsuite/gcc.target/i386/pr79729.c
+ b3b6f5c8ba17ba3296bdffadca2efac2  gcc/testsuite/gcc.target/i386/pr79733.c
+ d6a597f0fbd3fbabaff69609d7a1c3b9  gcc/testsuite/gcc.target/i386/pr79807.c
+ 79f33466eabfc2e257a8fa0ed96c57ab  gcc/testsuite/gcc.target/i386/pr79901.c
+ d8519fa7ee590fbd3c0a85e2b8653841  gcc/testsuite/gcc.target/i386/pr79932-1.c
+ f971fc2176ce03b9a33ca253f2499ca0  gcc/testsuite/gcc.target/i386/pr79932-2.c
+ e4e5537356578134ed01182ab2552b70  gcc/testsuite/gcc.target/i386/pr80019.c
+ ccd1c247864f05916416dc77c0aee2d4  gcc/testsuite/gcc.target/i386/pr80569.c
+ 4aa131c4fd40500edf612c2566a0a1b2  gcc/testsuite/gcc.target/i386/pr81128.c
+ 80d88d513f3bb1b8ed658fe8c37fb6b0  gcc/testsuite/gcc.target/i386/pr81300.c
+ 245854ca702959ab30c393829f2b36d0  gcc/testsuite/gcc.target/i386/pr81375.c
+ 4a3389f7f2146d2198f9c46d5209ba9f  gcc/testsuite/gcc.target/i386/pr81471.c
+ 056554173d9ac80e5694f760fcde429f  gcc/testsuite/gcc.target/i386/pr81766.c
  849234c7a569c1e86023244bc5561263  gcc/testsuite/gcc.target/i386/pr9771-1.c
  24ceb6d5f3f5cde4b9d852839bdb98ae  gcc/testsuite/gcc.target/i386/prefetchw-1.c
  f11f4731c396f099373c033ab016a64f  gcc/testsuite/gcc.target/i386/prefetchwt1-1.c
*************** b5540c2e6c4aa6f5730ae17876c12e1f  gcc/te
*** 40967,40975 ****
  adcdec8ed0466d3411f5313513271763  gcc/testsuite/gcc.target/i386/sse-1.c
  9bad27158ce36a5ce8a320dbc944e434  gcc/testsuite/gcc.target/i386/sse-10.c
  49bde97b271274cb2bc26697ce2b19be  gcc/testsuite/gcc.target/i386/sse-11.c
! b1922e4b811b524fb9a72b3667d4205a  gcc/testsuite/gcc.target/i386/sse-12.c
! 5bd97335c84a4012a534aa711724e3e3  gcc/testsuite/gcc.target/i386/sse-13.c
! 59f65127e4306b04c4edd395175d17d4  gcc/testsuite/gcc.target/i386/sse-14.c
  92ad37b5ad7426d489b1b6f1ba0f41ea  gcc/testsuite/gcc.target/i386/sse-15.c
  2e7b115c4bd7984925f1a8d17a5faf67  gcc/testsuite/gcc.target/i386/sse-16.c
  f660e67b22cb44e6a6b38a247b1d78c3  gcc/testsuite/gcc.target/i386/sse-17.c
--- 41208,41216 ----
  adcdec8ed0466d3411f5313513271763  gcc/testsuite/gcc.target/i386/sse-1.c
  9bad27158ce36a5ce8a320dbc944e434  gcc/testsuite/gcc.target/i386/sse-10.c
  49bde97b271274cb2bc26697ce2b19be  gcc/testsuite/gcc.target/i386/sse-11.c
! a613331cf0e550f53937d03f9ba82ce8  gcc/testsuite/gcc.target/i386/sse-12.c
! bbb64420b015cf302f12ba0ad4bc78bd  gcc/testsuite/gcc.target/i386/sse-13.c
! 017ebf9358d6b45c149825a404799798  gcc/testsuite/gcc.target/i386/sse-14.c
  92ad37b5ad7426d489b1b6f1ba0f41ea  gcc/testsuite/gcc.target/i386/sse-15.c
  2e7b115c4bd7984925f1a8d17a5faf67  gcc/testsuite/gcc.target/i386/sse-16.c
  f660e67b22cb44e6a6b38a247b1d78c3  gcc/testsuite/gcc.target/i386/sse-17.c
*************** f660e67b22cb44e6a6b38a247b1d78c3  gcc/te
*** 40978,40986 ****
  bb148b6e9dd40de90aed723794e38216  gcc/testsuite/gcc.target/i386/sse-2.c
  d7a71bae6a12771a9057e2d3a60c39f1  gcc/testsuite/gcc.target/i386/sse-20.c
  d5e7e4c7d488a953399d853e48aa484e  gcc/testsuite/gcc.target/i386/sse-21.c
! 92ad47a6f70deff310c4e461938aa1a8  gcc/testsuite/gcc.target/i386/sse-22.c
  1c2df57cb3d7d6a3daf4084135ba9b1b  gcc/testsuite/gcc.target/i386/sse-22a.c
! e1e366d9dd70dd006735a11cc450b1f1  gcc/testsuite/gcc.target/i386/sse-23.c
  3fe1d48ff9d52631da56f04cc922a9cb  gcc/testsuite/gcc.target/i386/sse-24.c
  f839ec28fa786a06dabe541954c1b1ae  gcc/testsuite/gcc.target/i386/sse-25.c
  9dfe2cc74e998cef475e202f64ff8322  gcc/testsuite/gcc.target/i386/sse-3.c
--- 41219,41227 ----
  bb148b6e9dd40de90aed723794e38216  gcc/testsuite/gcc.target/i386/sse-2.c
  d7a71bae6a12771a9057e2d3a60c39f1  gcc/testsuite/gcc.target/i386/sse-20.c
  d5e7e4c7d488a953399d853e48aa484e  gcc/testsuite/gcc.target/i386/sse-21.c
! 9b7f6a37430a3c027acf0ac92511dc70  gcc/testsuite/gcc.target/i386/sse-22.c
  1c2df57cb3d7d6a3daf4084135ba9b1b  gcc/testsuite/gcc.target/i386/sse-22a.c
! 2adcc515214e42e9744582c3b0d4c596  gcc/testsuite/gcc.target/i386/sse-23.c
  3fe1d48ff9d52631da56f04cc922a9cb  gcc/testsuite/gcc.target/i386/sse-24.c
  f839ec28fa786a06dabe541954c1b1ae  gcc/testsuite/gcc.target/i386/sse-25.c
  9dfe2cc74e998cef475e202f64ff8322  gcc/testsuite/gcc.target/i386/sse-3.c
*************** caf01994c96172dac156c3da29317823  gcc/te
*** 42411,42416 ****
--- 42652,42658 ----
  37c12fff6f77333d7cb7d787bbb7f908  gcc/testsuite/gcc.target/powerpc/bswap64-4.c
  1bdcd38f4043a35aa4799e5b7e1fd590  gcc/testsuite/gcc.target/powerpc/builtins-1.c
  fc8793b521e1298ab0e99e4fb318b34b  gcc/testsuite/gcc.target/powerpc/builtins-2.c
+ 456232eb27e86ab509433f0e3c8f547d  gcc/testsuite/gcc.target/powerpc/builtins-3-p8.c
  aa7f028ee43d6de435ef9e96d16926a5  gcc/testsuite/gcc.target/powerpc/cell_builtin-1.c
  4d701030026d89cdc9d316ac4b013baa  gcc/testsuite/gcc.target/powerpc/cell_builtin-2.c
  49e4d6ccb42c80379975f32fce0efd5b  gcc/testsuite/gcc.target/powerpc/cell_builtin-3.c
*************** e5a3f954e535f339c4a0f35fc50c6302  gcc/te
*** 42447,42454 ****
  a034d7a8bf265623a75800f01113e836  gcc/testsuite/gcc.target/powerpc/darwin-split-ld-stret.c
  548fc585bcbf766f23bef7319f0b0a18  gcc/testsuite/gcc.target/powerpc/darwin64-abi.c
  b4bba5410c6e6f914897ce86ffaca508  gcc/testsuite/gcc.target/powerpc/dfmode_off.c
! f2e8694ab86e1d671840cc1b4d010431  gcc/testsuite/gcc.target/powerpc/dfp-builtin-1.c
! 70b901aef4fec169c6e0277e173417fe  gcc/testsuite/gcc.target/powerpc/dfp-builtin-2.c
  edc590c61b2a5fd6c1f8da5e10b52099  gcc/testsuite/gcc.target/powerpc/dfp-dd-2.c
  127103864713219a50dac28ee38910e0  gcc/testsuite/gcc.target/powerpc/dfp-dd.c
  918f43d2707c381ec6a3c8f95d06ba7a  gcc/testsuite/gcc.target/powerpc/dfp-td-2.c
--- 42689,42696 ----
  a034d7a8bf265623a75800f01113e836  gcc/testsuite/gcc.target/powerpc/darwin-split-ld-stret.c
  548fc585bcbf766f23bef7319f0b0a18  gcc/testsuite/gcc.target/powerpc/darwin64-abi.c
  b4bba5410c6e6f914897ce86ffaca508  gcc/testsuite/gcc.target/powerpc/dfmode_off.c
! e861a888f1deb9e37547f0da1a5f7f2d  gcc/testsuite/gcc.target/powerpc/dfp-builtin-1.c
! e5999c82fe083b7c9a7cd976f61a514b  gcc/testsuite/gcc.target/powerpc/dfp-builtin-2.c
  edc590c61b2a5fd6c1f8da5e10b52099  gcc/testsuite/gcc.target/powerpc/dfp-dd-2.c
  127103864713219a50dac28ee38910e0  gcc/testsuite/gcc.target/powerpc/dfp-dd.c
  918f43d2707c381ec6a3c8f95d06ba7a  gcc/testsuite/gcc.target/powerpc/dfp-td-2.c
*************** faf2ed46677346059dd2b7fd42254985  gcc/te
*** 42688,42693 ****
--- 42930,42946 ----
  03eb7b91e6fcf641d03ca949346d2dc9  gcc/testsuite/gcc.target/powerpc/pr69969.c
  a31fef5f59c5f12ea342e66137c45ae7  gcc/testsuite/gcc.target/powerpc/pr70117.c
  d3a79432800e585b3905439b686d873b  gcc/testsuite/gcc.target/powerpc/pr70963.c
+ 3228b8ac65fb541db916e5ebac3f487e  gcc/testsuite/gcc.target/powerpc/pr71763.c
+ d13df2d4752807dad63a970f45225730  gcc/testsuite/gcc.target/powerpc/pr72863.c
+ fb524be9fd12ca8094bde96a06f3bdd5  gcc/testsuite/gcc.target/powerpc/pr79197.c
+ 0f9344c270baf27d9a4762d111adbc5e  gcc/testsuite/gcc.target/powerpc/pr79439.c
+ 8c1e3ce96b0244e674ef5e0620a4b88e  gcc/testsuite/gcc.target/powerpc/pr79544.c
+ 8fe70e669118bfd74ac64bf553741d89  gcc/testsuite/gcc.target/powerpc/pr79951.c
+ 32dc6ec7c4a1a3cefe2efbb3b602ef2c  gcc/testsuite/gcc.target/powerpc/pr80210.c
+ c74100b0e24e645cbd51ff8d93f11730  gcc/testsuite/gcc.target/powerpc/pr80246.c
+ 91aa94bfbc5294b4a595ae532afc83cc  gcc/testsuite/gcc.target/powerpc/pr81833-1.c
+ 19cfa2a5c1f2939acd4ac7362754d9b0  gcc/testsuite/gcc.target/powerpc/pr81833-2.c
+ 118dd26456facc5560611716506ec4a3  gcc/testsuite/gcc.target/powerpc/pr82112.c
  742150395e718873f58ee06d0f2e2f7a  gcc/testsuite/gcc.target/powerpc/quad-atomic.c
  cb3bd735d825c9be9fe7e29ef8447b76  gcc/testsuite/gcc.target/powerpc/recip-1.c
  b92b990991453f4ef11c93b9c58b05be  gcc/testsuite/gcc.target/powerpc/recip-2.c
*************** b7b97cacccde5659943f0834decbd080  gcc/te
*** 42728,42733 ****
--- 42981,42989 ----
  965d7565d6b0810f8220d916ba958565  gcc/testsuite/gcc.target/powerpc/swaps-p8-17.c
  88eda95ce377e04d1b34e1304ee82ffa  gcc/testsuite/gcc.target/powerpc/swaps-p8-18.c
  89b4a8bdc073fb0fe5966edfd7443dd9  gcc/testsuite/gcc.target/powerpc/swaps-p8-2.c
+ c891211b25d5266010cad8266c02fe3c  gcc/testsuite/gcc.target/powerpc/swaps-p8-20.c
+ 8cb758ec48a4fd3447970d6f85159dea  gcc/testsuite/gcc.target/powerpc/swaps-p8-23.c
+ 99bc5494b60bcbe35a2499e7bc74a125  gcc/testsuite/gcc.target/powerpc/swaps-p8-24.c
  84237fc0555dd56c639a0274a8f4dbde  gcc/testsuite/gcc.target/powerpc/swaps-p8-3.c
  0df14a19fd6ee081105fc2b90003a0b4  gcc/testsuite/gcc.target/powerpc/swaps-p8-4.c
  26517c689d143f1397c457beaff12ae6  gcc/testsuite/gcc.target/powerpc/swaps-p8-5.c
*************** b8cea10d187ee0ff03310bf53b54d85e  gcc/te
*** 42736,42751 ****
  ce6b26ef67ffe555b789e4205dc2e809  gcc/testsuite/gcc.target/powerpc/swaps-p8-8.c
  8abb62ec1d013c705390c6c55084378d  gcc/testsuite/gcc.target/powerpc/swaps-p8-9.c
  18366289600f6f5c0ed1255bd8c267db  gcc/testsuite/gcc.target/powerpc/tfmode_off.c
! c2edbb1afba546ea3ac8a5efcaca9c38  gcc/testsuite/gcc.target/powerpc/ti_math1.c
  c3d0d51284479d220a6166a0f362536c  gcc/testsuite/gcc.target/powerpc/ti_math2.c
  fd114dcd0b2119a748387046e861a6dd  gcc/testsuite/gcc.target/powerpc/timode_off.c
  fe21d9465e0313b29a24703b2cef2b7e  gcc/testsuite/gcc.target/powerpc/upper-regs-df.c
  7f45b205e570d7d45266076bd4fd4f4c  gcc/testsuite/gcc.target/powerpc/upper-regs-sf.c
  6359ddccab89d64974aacae92509fc9e  gcc/testsuite/gcc.target/powerpc/vec-cg.c
  8ee50015e788404267646adf1ac95972  gcc/testsuite/gcc.target/powerpc/vec-shr.c
  4ceb6855c2485b8644bf41d0692dce88  gcc/testsuite/gcc.target/powerpc/vsx-builtin-1.c
  6281c614296bfbf072b62d6fba22f72a  gcc/testsuite/gcc.target/powerpc/vsx-builtin-2.c
! 2cbc6ebb458b1e9d41b7cd611b4dbd55  gcc/testsuite/gcc.target/powerpc/vsx-builtin-3.c
  6246ea29025c11b1b9f4c6b8d036cbc3  gcc/testsuite/gcc.target/powerpc/vsx-builtin-4.c
  acf95bd1a1e2b9b14c0640b45f2e75f5  gcc/testsuite/gcc.target/powerpc/vsx-builtin-5.c
  0b61a376e7164778a523a0766df4ce6e  gcc/testsuite/gcc.target/powerpc/vsx-builtin-6.c
--- 42992,43008 ----
  ce6b26ef67ffe555b789e4205dc2e809  gcc/testsuite/gcc.target/powerpc/swaps-p8-8.c
  8abb62ec1d013c705390c6c55084378d  gcc/testsuite/gcc.target/powerpc/swaps-p8-9.c
  18366289600f6f5c0ed1255bd8c267db  gcc/testsuite/gcc.target/powerpc/tfmode_off.c
! 2669e2fc765583ed6aa74dabc19e373c  gcc/testsuite/gcc.target/powerpc/ti_math1.c
  c3d0d51284479d220a6166a0f362536c  gcc/testsuite/gcc.target/powerpc/ti_math2.c
  fd114dcd0b2119a748387046e861a6dd  gcc/testsuite/gcc.target/powerpc/timode_off.c
  fe21d9465e0313b29a24703b2cef2b7e  gcc/testsuite/gcc.target/powerpc/upper-regs-df.c
  7f45b205e570d7d45266076bd4fd4f4c  gcc/testsuite/gcc.target/powerpc/upper-regs-sf.c
  6359ddccab89d64974aacae92509fc9e  gcc/testsuite/gcc.target/powerpc/vec-cg.c
  8ee50015e788404267646adf1ac95972  gcc/testsuite/gcc.target/powerpc/vec-shr.c
+ 2f7d0faae17249a4c0239bf8d90e399a  gcc/testsuite/gcc.target/powerpc/vec-xxpermdi.c
  4ceb6855c2485b8644bf41d0692dce88  gcc/testsuite/gcc.target/powerpc/vsx-builtin-1.c
  6281c614296bfbf072b62d6fba22f72a  gcc/testsuite/gcc.target/powerpc/vsx-builtin-2.c
! d6aef2cc5b6d426a696fad3f9bd0cf2c  gcc/testsuite/gcc.target/powerpc/vsx-builtin-3.c
  6246ea29025c11b1b9f4c6b8d036cbc3  gcc/testsuite/gcc.target/powerpc/vsx-builtin-4.c
  acf95bd1a1e2b9b14c0640b45f2e75f5  gcc/testsuite/gcc.target/powerpc/vsx-builtin-5.c
  0b61a376e7164778a523a0766df4ce6e  gcc/testsuite/gcc.target/powerpc/vsx-builtin-6.c
*************** ac1eca0e08377612e3d778bc122efa1c  gcc/te
*** 42903,42913 ****
  283b6978739165f436839fd30df4e9a4  gcc/testsuite/gcc.target/s390/vector/vec-genmask-2.c
  1afa4a6190a988fb5a4fad356fbdd30d  gcc/testsuite/gcc.target/s390/vector/vec-init-1.c
  03cc140b84b037d2fe9c9c0be079e135  gcc/testsuite/gcc.target/s390/vector/vec-int-math-compile-1.c
! 939d61e5473a534f524e495e1799f4ac  gcc/testsuite/gcc.target/s390/vector/vec-scalar-cmp-1.c
  8de36944e18edbbcc735c9baad533f52  gcc/testsuite/gcc.target/s390/vector/vec-shift-1.c
  cea49877a5895e80cb13491b6cdfa2a2  gcc/testsuite/gcc.target/s390/vector/vec-sub-1.c
  db4e2b1f6b0441e2f2f64b6e141245cd  gcc/testsuite/gcc.target/s390/vector/vec-vcond-1.c
  fea8a607b23a38dcc79782200801aa4a  gcc/testsuite/gcc.target/s390/vector/vec-vrepi-1.c
  911df970b217779536d2fbc571abe9e4  gcc/testsuite/gcc.target/s390/zvector/vec-dbl-math-compile-1.c
  f42e228f92a8dfb9e1ded9cb20bc6622  gcc/testsuite/gcc.target/s390/zvector/vec-elem-1.c
  a7f2bd9fee8c03add8265ce21e47cb8f  gcc/testsuite/gcc.target/s390/zvector/vec-genbytemask-1.c
--- 43160,43171 ----
  283b6978739165f436839fd30df4e9a4  gcc/testsuite/gcc.target/s390/vector/vec-genmask-2.c
  1afa4a6190a988fb5a4fad356fbdd30d  gcc/testsuite/gcc.target/s390/vector/vec-init-1.c
  03cc140b84b037d2fe9c9c0be079e135  gcc/testsuite/gcc.target/s390/vector/vec-int-math-compile-1.c
! b66b681f30cd927a8eb9e75f64dccd1f  gcc/testsuite/gcc.target/s390/vector/vec-scalar-cmp-1.c
  8de36944e18edbbcc735c9baad533f52  gcc/testsuite/gcc.target/s390/vector/vec-shift-1.c
  cea49877a5895e80cb13491b6cdfa2a2  gcc/testsuite/gcc.target/s390/vector/vec-sub-1.c
  db4e2b1f6b0441e2f2f64b6e141245cd  gcc/testsuite/gcc.target/s390/vector/vec-vcond-1.c
  fea8a607b23a38dcc79782200801aa4a  gcc/testsuite/gcc.target/s390/vector/vec-vrepi-1.c
+ 0c165e95e0c22e3574ecd2aa4b395cb1  gcc/testsuite/gcc.target/s390/zvector/vec-cmp-1.c
  911df970b217779536d2fbc571abe9e4  gcc/testsuite/gcc.target/s390/zvector/vec-dbl-math-compile-1.c
  f42e228f92a8dfb9e1ded9cb20bc6622  gcc/testsuite/gcc.target/s390/zvector/vec-elem-1.c
  a7f2bd9fee8c03add8265ce21e47cb8f  gcc/testsuite/gcc.target/s390/zvector/vec-genbytemask-1.c
*************** c0fe12b65277b653de804b8be0683e07  gcc/te
*** 43144,43152 ****
  82c2e387bd540b74637065450948138c  gcc/testsuite/gcc.target/sparc/20020416-1.c
  c538bfaba12da814b09545c9ac7fb347  gcc/testsuite/gcc.target/sparc/20111102-1.c
  ffba4a644f6c776dd608a5285349bff8  gcc/testsuite/gcc.target/sparc/20151219-1.c
  44373c57181608413fc07f3ec0e2ad6e  gcc/testsuite/gcc.target/sparc/align.c
  667a877a2fb02d919c4eaaea6fbccbad  gcc/testsuite/gcc.target/sparc/array.c
! 51da71a9631e2769588765c1734024be  gcc/testsuite/gcc.target/sparc/bmaskbshuf.c
  019da970597edf6187323a8e6d8d3fd7  gcc/testsuite/gcc.target/sparc/cas64.c
  8b7e178ec9569253b3b34020d323079f  gcc/testsuite/gcc.target/sparc/cmask.c
  61fdcc3e39deca7e4f123378b814dd0f  gcc/testsuite/gcc.target/sparc/combined-1.c
--- 43402,43412 ----
  82c2e387bd540b74637065450948138c  gcc/testsuite/gcc.target/sparc/20020416-1.c
  c538bfaba12da814b09545c9ac7fb347  gcc/testsuite/gcc.target/sparc/20111102-1.c
  ffba4a644f6c776dd608a5285349bff8  gcc/testsuite/gcc.target/sparc/20151219-1.c
+ e470b0a0d1a056b60c3915a6dfcfd4ae  gcc/testsuite/gcc.target/sparc/20170228-1.c
  44373c57181608413fc07f3ec0e2ad6e  gcc/testsuite/gcc.target/sparc/align.c
  667a877a2fb02d919c4eaaea6fbccbad  gcc/testsuite/gcc.target/sparc/array.c
! 51da71a9631e2769588765c1734024be  gcc/testsuite/gcc.target/sparc/bmaskbshuf-1.c
! 2fde479e25184fdcc6f9e94d0b5c15ad  gcc/testsuite/gcc.target/sparc/bmaskbshuf-2.c
  019da970597edf6187323a8e6d8d3fd7  gcc/testsuite/gcc.target/sparc/cas64.c
  8b7e178ec9569253b3b34020d323079f  gcc/testsuite/gcc.target/sparc/cmask.c
  61fdcc3e39deca7e4f123378b814dd0f  gcc/testsuite/gcc.target/sparc/combined-1.c
*************** eb9fea9eb3ccdd5fb4d85ac011c10dc5  gcc/te
*** 43221,43226 ****
--- 43481,43487 ----
  632f93e6b0314e25ec1b43c771cb405c  gcc/testsuite/gcc.target/sparc/sparc-reg-1.c
  49d4346a32402759d7a9329d2375c502  gcc/testsuite/gcc.target/sparc/sparc-ret-1.c
  111c6ff31ffc23f4b402354941b88338  gcc/testsuite/gcc.target/sparc/sparc-ret-2.c
+ 96ac755e92338efd01e188e2e94bbf8f  gcc/testsuite/gcc.target/sparc/sparc-ret-3.c
  1943f3e1f1253e644f6fe445637c2dec  gcc/testsuite/gcc.target/sparc/sparc-trap-1.c
  ec2f5c33e342e497e03a9918860ce2f7  gcc/testsuite/gcc.target/sparc/sparc.exp
  9d0e2b5fe42dfe4e33a910954d24877b  gcc/testsuite/gcc.target/sparc/struct-ret-check.c
*************** aa0e2acc5bfe4a7ddc3c5e96cc91be7e  gcc/te
*** 43831,43836 ****
--- 44092,44098 ----
  d67e73274a9e1605edc8f7d9ca4781a6  gcc/testsuite/gfortran.dg/allocate_with_source_16.f90
  64f8c5ad89b6221999b048eb2ce143f1  gcc/testsuite/gfortran.dg/allocate_with_source_18.f03
  f4a7a7cae5d96eb1020cfcf8e519b49b  gcc/testsuite/gfortran.dg/allocate_with_source_2.f90
+ 8c1d244f6031789916017b9201b706b1  gcc/testsuite/gfortran.dg/allocate_with_source_20.f03
  a5e1f5792644ea510ff26752c63c0de0  gcc/testsuite/gfortran.dg/allocate_with_source_3.f90
  6e6cc1fe5ed4f0f5c650bc8b6e0634b0  gcc/testsuite/gfortran.dg/allocate_with_source_4.f90
  113541ed2576712921a648846cb830f4  gcc/testsuite/gfortran.dg/allocate_with_source_5.f90
*************** a6bd048866027ea6bf597acb23ef25d0  gcc/te
*** 43911,43918 ****
  02d67df422b75276f6a95d5a60796b9b  gcc/testsuite/gfortran.dg/array_constructor_23.f
  3da281b068891ab68547f22bcc2f9943  gcc/testsuite/gfortran.dg/array_constructor_24.f
  e1c301e198e52e75cc41d51cb75f5d30  gcc/testsuite/gfortran.dg/array_constructor_25.f03
! d6c2c3288acb90c26cdc335883518c00  gcc/testsuite/gfortran.dg/array_constructor_26.f03
! 47dc9e56356c3381bf8e1688acb22722  gcc/testsuite/gfortran.dg/array_constructor_27.f03
  21daf278376911ce8154964d3e92e438  gcc/testsuite/gfortran.dg/array_constructor_28.f03
  d75b0075c8c6384eac9f0e38dc4e226f  gcc/testsuite/gfortran.dg/array_constructor_29.f03
  1f97b4f0dca764838294052acc156f85  gcc/testsuite/gfortran.dg/array_constructor_3.f90
--- 44173,44180 ----
  02d67df422b75276f6a95d5a60796b9b  gcc/testsuite/gfortran.dg/array_constructor_23.f
  3da281b068891ab68547f22bcc2f9943  gcc/testsuite/gfortran.dg/array_constructor_24.f
  e1c301e198e52e75cc41d51cb75f5d30  gcc/testsuite/gfortran.dg/array_constructor_25.f03
! 8ce528e13a8cd6b6ce743c2f0874ad48  gcc/testsuite/gfortran.dg/array_constructor_26.f03
! 5ca9cc7c393792c1c73cb103841df1e1  gcc/testsuite/gfortran.dg/array_constructor_27.f03
  21daf278376911ce8154964d3e92e438  gcc/testsuite/gfortran.dg/array_constructor_28.f03
  d75b0075c8c6384eac9f0e38dc4e226f  gcc/testsuite/gfortran.dg/array_constructor_29.f03
  1f97b4f0dca764838294052acc156f85  gcc/testsuite/gfortran.dg/array_constructor_3.f90
*************** e6b75f0001c9601e03995e3536377638  gcc/te
*** 43936,43943 ****
  e60167e5bb1be4ddb5c51310faf2e72a  gcc/testsuite/gfortran.dg/array_constructor_46.f90
  64814f1455379ac75272891a122c068e  gcc/testsuite/gfortran.dg/array_constructor_47.f90
  71b1b67746cb3b141002319b6af5c534  gcc/testsuite/gfortran.dg/array_constructor_48.f90
! e661acbbbb83a6c7a9d1ef58b171eeb5  gcc/testsuite/gfortran.dg/array_constructor_49.f90
  9918ac77cf760a3800e94da773f0a74b  gcc/testsuite/gfortran.dg/array_constructor_5.f90
  6dc05669b848d267b25c38806e59d51f  gcc/testsuite/gfortran.dg/array_constructor_6.f90
  0965c3437a2116ac32e573441184fdee  gcc/testsuite/gfortran.dg/array_constructor_7.f90
  b4019b0f6faabbc51d698bec4f4094ee  gcc/testsuite/gfortran.dg/array_constructor_8.f90
--- 44198,44206 ----
  e60167e5bb1be4ddb5c51310faf2e72a  gcc/testsuite/gfortran.dg/array_constructor_46.f90
  64814f1455379ac75272891a122c068e  gcc/testsuite/gfortran.dg/array_constructor_47.f90
  71b1b67746cb3b141002319b6af5c534  gcc/testsuite/gfortran.dg/array_constructor_48.f90
! 25a689cddf3ad19f4b612318a3a8e6e3  gcc/testsuite/gfortran.dg/array_constructor_49.f90
  9918ac77cf760a3800e94da773f0a74b  gcc/testsuite/gfortran.dg/array_constructor_5.f90
+ 7b8fbbe044e7a6ab2be8274984852be8  gcc/testsuite/gfortran.dg/array_constructor_50.f90
  6dc05669b848d267b25c38806e59d51f  gcc/testsuite/gfortran.dg/array_constructor_6.f90
  0965c3437a2116ac32e573441184fdee  gcc/testsuite/gfortran.dg/array_constructor_7.f90
  b4019b0f6faabbc51d698bec4f4094ee  gcc/testsuite/gfortran.dg/array_constructor_8.f90
*************** cf4d952c77026c12dcef405f6e7f2e49  gcc/te
*** 44034,44039 ****
--- 44297,44304 ----
  0ed1ec5c859d3837356536ddd0e6f9ac  gcc/testsuite/gfortran.dg/associate_16.f90
  d8912284402d7f10695694e5d787c65c  gcc/testsuite/gfortran.dg/associate_17.f90
  c066328da870ad9b313bf9491c5b72d6  gcc/testsuite/gfortran.dg/associate_2.f95
+ 79c66e6ef8d2160f4b4fcb4c44322791  gcc/testsuite/gfortran.dg/associate_21.f90
+ 8af1b6b8d72f3c807df4def38ed13d8c  gcc/testsuite/gfortran.dg/associate_22.f90
  ada9a3758cef9c8c02a55f1139c4f13b  gcc/testsuite/gfortran.dg/associate_3.f03
  a1f5f0d8423367d45fe9382b407ce7e9  gcc/testsuite/gfortran.dg/associate_4.f08
  5dfaf5e9c3d8b8b8f835046ca42ccbf4  gcc/testsuite/gfortran.dg/associate_5.f03
*************** d8f73ab42d904ef5f062bf0a25a370e5  gcc/te
*** 44311,44317 ****
  283d675eb1076656e705ce94dd65baa2  gcc/testsuite/gfortran.dg/bounds_check_fail_3.f90
  e2fa324bd643dad4595427c0cf6e27fd  gcc/testsuite/gfortran.dg/bounds_check_fail_4.f90
  47cd7c4192bcfdf1b9792fc175c39955  gcc/testsuite/gfortran.dg/bounds_check_strlen_1.f90
! 1927337e410ca88c64bac6ed1c490e09  gcc/testsuite/gfortran.dg/bounds_check_strlen_2.f90
  f145202f2e2e4fd5f13808086de4de58  gcc/testsuite/gfortran.dg/bounds_check_strlen_3.f90
  8d10f29783ca2636d630f6e16779efcd  gcc/testsuite/gfortran.dg/bounds_check_strlen_4.f90
  1aa5b9216e33e8838fd724d3e1bed124  gcc/testsuite/gfortran.dg/bounds_check_strlen_5.f90
--- 44576,44582 ----
  283d675eb1076656e705ce94dd65baa2  gcc/testsuite/gfortran.dg/bounds_check_fail_3.f90
  e2fa324bd643dad4595427c0cf6e27fd  gcc/testsuite/gfortran.dg/bounds_check_fail_4.f90
  47cd7c4192bcfdf1b9792fc175c39955  gcc/testsuite/gfortran.dg/bounds_check_strlen_1.f90
! f33baaa73ebbc0a23938401a171f0b68  gcc/testsuite/gfortran.dg/bounds_check_strlen_2.f90
  f145202f2e2e4fd5f13808086de4de58  gcc/testsuite/gfortran.dg/bounds_check_strlen_3.f90
  8d10f29783ca2636d630f6e16779efcd  gcc/testsuite/gfortran.dg/bounds_check_strlen_4.f90
  1aa5b9216e33e8838fd724d3e1bed124  gcc/testsuite/gfortran.dg/bounds_check_strlen_5.f90
*************** d24202e03865bc6c7b065012f5b50aa9  gcc/te
*** 44338,44349 ****
  dbab7052c49d479a8d2e25e0b571b1d8  gcc/testsuite/gfortran.dg/byte_1.f90
  d04db9714722a890fe3f299c043d6607  gcc/testsuite/gfortran.dg/byte_2.f90
  4f9563018c9cc84eb08854d1cad6dbdb  gcc/testsuite/gfortran.dg/c_assoc.f90
! cf6662e8969a47673112bad7c51f6cbd  gcc/testsuite/gfortran.dg/c_assoc_2.f03
  2b97f1cb4868fd97cb12455cd6c2a56e  gcc/testsuite/gfortran.dg/c_assoc_3.f90
! 17251f7d69b81c543e8bd11bce31202f  gcc/testsuite/gfortran.dg/c_assoc_4.f90
  85765b6794108949ee955541b1efb540  gcc/testsuite/gfortran.dg/c_assoc_5.f90
  1e7649b256bbeeebbd2063422e65deb7  gcc/testsuite/gfortran.dg/c_by_val.c
! 0eab6a68f39b8a389cf7b5acfbeb63e0  gcc/testsuite/gfortran.dg/c_by_val_1.f
  2e01e4009d12269c05b8f480e81cd06d  gcc/testsuite/gfortran.dg/c_by_val_2.f90
  813d55579374e020bb56ba96bcaca976  gcc/testsuite/gfortran.dg/c_by_val_3.f90
  c976bb6d4dfaa0c0883ce8e498e42afc  gcc/testsuite/gfortran.dg/c_by_val_4.f
--- 44603,44614 ----
  dbab7052c49d479a8d2e25e0b571b1d8  gcc/testsuite/gfortran.dg/byte_1.f90
  d04db9714722a890fe3f299c043d6607  gcc/testsuite/gfortran.dg/byte_2.f90
  4f9563018c9cc84eb08854d1cad6dbdb  gcc/testsuite/gfortran.dg/c_assoc.f90
! e14363ef7ec116f69833dd73d5b857ce  gcc/testsuite/gfortran.dg/c_assoc_2.f03
  2b97f1cb4868fd97cb12455cd6c2a56e  gcc/testsuite/gfortran.dg/c_assoc_3.f90
! 02f524bf53c504b18b887bbe53c78952  gcc/testsuite/gfortran.dg/c_assoc_4.f90
  85765b6794108949ee955541b1efb540  gcc/testsuite/gfortran.dg/c_assoc_5.f90
  1e7649b256bbeeebbd2063422e65deb7  gcc/testsuite/gfortran.dg/c_by_val.c
! a7dfa88a3db218310d3d606d8f2632fc  gcc/testsuite/gfortran.dg/c_by_val_1.f
  2e01e4009d12269c05b8f480e81cd06d  gcc/testsuite/gfortran.dg/c_by_val_2.f90
  813d55579374e020bb56ba96bcaca976  gcc/testsuite/gfortran.dg/c_by_val_3.f90
  c976bb6d4dfaa0c0883ce8e498e42afc  gcc/testsuite/gfortran.dg/c_by_val_4.f
*************** da95c5400735f4c2f4fc34487feb21f8  gcc/te
*** 44592,44597 ****
--- 44857,44863 ----
  081b7861449ee503eb0eafc38aa74102  gcc/testsuite/gfortran.dg/class_56.f90
  e656331cc901eecd1321f4812180dc51  gcc/testsuite/gfortran.dg/class_57.f90
  58bc4a716942caffe0323c7d0b20a63e  gcc/testsuite/gfortran.dg/class_6.f03
+ 28b51cf2f3868e0d992356221459b6b8  gcc/testsuite/gfortran.dg/class_62.f90
  cc0c048415b8d0593fe7e5b164763dc7  gcc/testsuite/gfortran.dg/class_7.f03
  765b5ae237d318aee8909def266c457e  gcc/testsuite/gfortran.dg/class_8.f03
  dac9a57a157d95214c44d80cc02bd042  gcc/testsuite/gfortran.dg/class_9.f03
*************** dbc20d52e3c86639db916ad3c6392de8  gcc/te
*** 44646,44651 ****
--- 44912,44918 ----
  9d2e1be7c7b774543dde26355644bb63  gcc/testsuite/gfortran.dg/class_optional_2.f90
  7c2579227e2041f067b68fc6f25175f5  gcc/testsuite/gfortran.dg/class_result_1.f03
  3b8f230b7e31089a91042ffa36e727e5  gcc/testsuite/gfortran.dg/class_result_2.f90
+ 6b5e22364a04ac278db525f084255294  gcc/testsuite/gfortran.dg/class_result_4.f90
  5d07b7c2ecf498e131ae5188ddbe6b92  gcc/testsuite/gfortran.dg/class_to_type_1.f03
  21073ee635adb08a389a867157f17f96  gcc/testsuite/gfortran.dg/class_to_type_2.f90
  c9fdcdd06c1c6e20c522e1369363b98c  gcc/testsuite/gfortran.dg/class_to_type_3.f03
*************** c567396424187bd0948b83e9c61b5979  gcc/te
*** 44749,44755 ****
  81fd1e6351c645ebf88041e29cf3bf54  gcc/testsuite/gfortran.dg/coarray_atomic_5.f90
  53606f253145ffe43df39cc61fe5aef2  gcc/testsuite/gfortran.dg/coarray_atomic_6.f90
  47af4614d0edd5061b2696b16ddcf85a  gcc/testsuite/gfortran.dg/coarray_class_1.f90
! 6fa0a1006cd787f89c84f44f3ec35a09  gcc/testsuite/gfortran.dg/coarray_collectives_1.f90
  c7ab539006f03be6ad432509119b0289  gcc/testsuite/gfortran.dg/coarray_collectives_10.f90
  a30a873aff97aee8d07f4441b69ea970  gcc/testsuite/gfortran.dg/coarray_collectives_11.f90
  a75d71135318aec398606a593707099a  gcc/testsuite/gfortran.dg/coarray_collectives_12.f90
--- 45016,45022 ----
  81fd1e6351c645ebf88041e29cf3bf54  gcc/testsuite/gfortran.dg/coarray_atomic_5.f90
  53606f253145ffe43df39cc61fe5aef2  gcc/testsuite/gfortran.dg/coarray_atomic_6.f90
  47af4614d0edd5061b2696b16ddcf85a  gcc/testsuite/gfortran.dg/coarray_class_1.f90
! 6de791f875807c75d853f11a61b02a94  gcc/testsuite/gfortran.dg/coarray_collectives_1.f90
  c7ab539006f03be6ad432509119b0289  gcc/testsuite/gfortran.dg/coarray_collectives_10.f90
  a30a873aff97aee8d07f4441b69ea970  gcc/testsuite/gfortran.dg/coarray_collectives_11.f90
  a75d71135318aec398606a593707099a  gcc/testsuite/gfortran.dg/coarray_collectives_12.f90
*************** f733c7f025390aaf3d27f0e9c2725809  gcc/te
*** 44799,44804 ****
--- 45066,45073 ----
  b2dba23fc22128a647db42769be9f272  gcc/testsuite/gfortran.dg/coindexed_1.f90
  f921a7c5a0e4098dd6b6edf4e317a4e1  gcc/testsuite/gfortran.dg/com_block_driver.f90
  2595b7b0d8e86ae62cf503bd5080ee45  gcc/testsuite/gfortran.dg/comma.f
+ ca9b384b7523fa630f1d4edff3cd4267  gcc/testsuite/gfortran.dg/comma_IO_extension_1.f90
+ 7b4fe3be18cf5d3e2bcac0b98a2191d6  gcc/testsuite/gfortran.dg/comma_IO_extension_2.f90
  b68510025102f4e42c5ab3a0ebf1b5aa  gcc/testsuite/gfortran.dg/comma_format_extension_1.f
  e9f174aaa655ec093b7c3dc075581e89  gcc/testsuite/gfortran.dg/comma_format_extension_2.f
  e38edb0e607a003fddf67b7597b40626  gcc/testsuite/gfortran.dg/comma_format_extension_3.f
*************** c26c871bf08605ce024253a49da3b53a  gcc/te
*** 44979,44984 ****
--- 45248,45254 ----
  1c4f05212f5447da65bd477a1f755ce9  gcc/testsuite/gfortran.dg/deferred_character_15.f90
  59d41c7b1a9540c60dceedddcfb4c674  gcc/testsuite/gfortran.dg/deferred_character_16.f90
  bcdb84ffa3c50231ecd967d3114134ae  gcc/testsuite/gfortran.dg/deferred_character_17.f90
+ c2d3fe3d7d640f7941cc2bc632a62dae  gcc/testsuite/gfortran.dg/deferred_character_18.f90
  4a4c8c394c686eaf43c4ce53d6803cbc  gcc/testsuite/gfortran.dg/deferred_character_2.f90
  496fec17b89042f5546165ec11d36f09  gcc/testsuite/gfortran.dg/deferred_character_3.f90
  1d0633419cdd140f8ca51872f6219b2d  gcc/testsuite/gfortran.dg/deferred_character_4.f90
*************** b697022c211753c6e3f026bc337e8683  gcc/te
*** 45053,45058 ****
--- 45323,45332 ----
  dca63cf93efe22616e44d9f46b5b1933  gcc/testsuite/gfortran.dg/dependency_43.f90
  52a475961b0e9c97d571fa626e1754b5  gcc/testsuite/gfortran.dg/dependency_44.f90
  9908775fdc0125fcca5e0250d562cdb1  gcc/testsuite/gfortran.dg/dependency_45.f90
+ 18bd6a173b22bb353c669d8ab0cbe6df  gcc/testsuite/gfortran.dg/dependency_46.f90
+ 83ed09b1543e3059e9067be926a73b31  gcc/testsuite/gfortran.dg/dependency_47.f90
+ 0b500dcd3858e049021939919e789ac4  gcc/testsuite/gfortran.dg/dependency_48.f90
+ b708a831578a6c876ea16b95695f6103  gcc/testsuite/gfortran.dg/dependency_49.f90
  bbca43e474853e196b5ef3cebb69a8c3  gcc/testsuite/gfortran.dg/dependency_5.f90
  0ac149b1aeb883fd64f93f0129019639  gcc/testsuite/gfortran.dg/dependency_6.f90
  00f6d5a2a991eed5c94bfa092755e91f  gcc/testsuite/gfortran.dg/dependency_7.f90
*************** b548bb0b7feaba31a7b00bfc777f13ec  gcc/te
*** 45355,45361 ****
  8226a4361c480063e7d5f12e2c912654  gcc/testsuite/gfortran.dg/extends_9.f03
  2e24b5c52856c87eaacc1ab507836e95  gcc/testsuite/gfortran.dg/extends_type_of_1.f03
  e2f900b7d3f108cf2755f6050abacbb5  gcc/testsuite/gfortran.dg/extends_type_of_2.f03
! 16282ed6a6dfaa23ec630501c664016c  gcc/testsuite/gfortran.dg/extends_type_of_3.f90
  df764dd66e24cfa5a1af1a03b983104b  gcc/testsuite/gfortran.dg/external_implicit_none.f90
  4eca303332980555d4132fbdc52d774a  gcc/testsuite/gfortran.dg/external_initializer.f90
  e858d42afb6c6feb41d75f84594d0e1f  gcc/testsuite/gfortran.dg/external_procedures_1.f90
--- 45629,45635 ----
  8226a4361c480063e7d5f12e2c912654  gcc/testsuite/gfortran.dg/extends_9.f03
  2e24b5c52856c87eaacc1ab507836e95  gcc/testsuite/gfortran.dg/extends_type_of_1.f03
  e2f900b7d3f108cf2755f6050abacbb5  gcc/testsuite/gfortran.dg/extends_type_of_2.f03
! 2b2e0c519730f74c1bda60dc62dc4e70  gcc/testsuite/gfortran.dg/extends_type_of_3.f90
  df764dd66e24cfa5a1af1a03b983104b  gcc/testsuite/gfortran.dg/external_implicit_none.f90
  4eca303332980555d4132fbdc52d774a  gcc/testsuite/gfortran.dg/external_initializer.f90
  e858d42afb6c6feb41d75f84594d0e1f  gcc/testsuite/gfortran.dg/external_procedures_1.f90
*************** c97065b51ddecb2dd0bed020f4e461ed  gcc/te
*** 45385,45390 ****
--- 45659,45666 ----
  8d8068df6ac24ffed1c07629391baa04  gcc/testsuite/gfortran.dg/fgetc_2.f90
  a5092dd9571c4f2b5be00428c0f86f5a  gcc/testsuite/gfortran.dg/filename_null.f90
  5131e5c566230f78ec144630a732c7a7  gcc/testsuite/gfortran.dg/filepos1.f90
+ 18131393256651d0bd551639eab3e10e  gcc/testsuite/gfortran.dg/fimplicit_none_1.f90
+ c77a0a5fc1106230319c2398b807df5c  gcc/testsuite/gfortran.dg/fimplicit_none_2.f90
  c031807c998e0243776199536a506418  gcc/testsuite/gfortran.dg/finalize_1.f08
  47d98b4d6bf4d568243f0e04b8f960e6  gcc/testsuite/gfortran.dg/finalize_10.f90
  784234f297364a91d0841e02c618213b  gcc/testsuite/gfortran.dg/finalize_11.f90
*************** eaf23174c6029667231249368fe23589  gcc/te
*** 45464,45469 ****
--- 45740,45746 ----
  5b794289929a15d260c59f382cfe8811  gcc/testsuite/gfortran.dg/fmt_t_5.f90
  9c6bd875f3fd65a51cdb51c78adfb02e  gcc/testsuite/gfortran.dg/fmt_t_6.f
  4fa11e7dddaa11d12a44f35882072dbc  gcc/testsuite/gfortran.dg/fmt_t_7.f
+ 3f87ad026e8e229565569c7c330e0a69  gcc/testsuite/gfortran.dg/fmt_t_9.f
  625bb67e826b6523c78dac865313c537  gcc/testsuite/gfortran.dg/fmt_tab_1.f90
  0b53a934fb8ae81a4e9e95e9513f6a8c  gcc/testsuite/gfortran.dg/fmt_tab_2.f90
  8ba0d4541559e2d3061e83bbc985d7bb  gcc/testsuite/gfortran.dg/fmt_tl.f
*************** f5e676182c3ece6f6ba4e0ce914c5292  gcc/te
*** 45482,45487 ****
--- 45759,45765 ----
  c285395065c37858799b8d8ab104b3d1  gcc/testsuite/gfortran.dg/forall_15.f90
  674de0e9b0693fe66b62c929b5455f39  gcc/testsuite/gfortran.dg/forall_16.f90
  8e8eb52d04f70625b3d219d75404ef60  gcc/testsuite/gfortran.dg/forall_17.f90
+ d0fbcfc827c29dc44f64559d48817278  gcc/testsuite/gfortran.dg/forall_18.f90
  52a3f13b979b92e74930c12598ca953e  gcc/testsuite/gfortran.dg/forall_2.f90
  2a37c865afb27d8a80cb1bb50744c3ac  gcc/testsuite/gfortran.dg/forall_3.f90
  bee539d260330f8ac4ac6e60f403dcc8  gcc/testsuite/gfortran.dg/forall_4.f90
*************** cafc37a00e5afe68a6324ac000be3d97  gcc/te
*** 45765,45770 ****
--- 46043,46049 ----
  70ae710349adcc430545a7b417cf2abd  gcc/testsuite/gfortran.dg/goacc/parallel-kernels-regions.f95
  90484f6fe5760420b49de86f5a625616  gcc/testsuite/gfortran.dg/goacc/parallel-tree.f95
  0137033259c36b89d8a2645a08e759e5  gcc/testsuite/gfortran.dg/goacc/parameter.f95
+ 1d8a1a9a5f7a28b0895a29c53bdd9bf9  gcc/testsuite/gfortran.dg/goacc/pr71704.f90
  7753b890b709c0e25711d5d71f9690c1  gcc/testsuite/gfortran.dg/goacc/private-1.f95
  24e251dd88a9ea6377e535f5ee5f31ed  gcc/testsuite/gfortran.dg/goacc/private-2.f95
  3dbf6ee3e166ab37549a376045135194  gcc/testsuite/gfortran.dg/goacc/private-3.f95
*************** a467591fa5a7397d62aff928d63eb0ad  gcc/te
*** 45849,45855 ****
  b7bb651884d39c2e5dce7d57d46f40a5  gcc/testsuite/gfortran.dg/gomp/free-2.f90
  76bbc2b9dfa2c387c9d8d642c2e8f1eb  gcc/testsuite/gfortran.dg/gomp/gomp.exp
  0cfd422be152bb21744cc7cfe5baf808  gcc/testsuite/gfortran.dg/gomp/intentin1.f90
! b1673181b9c53873249af351f2b5c845  gcc/testsuite/gfortran.dg/gomp/map-1.f90
  52223211c34f4dbace5e033f8243ae1f  gcc/testsuite/gfortran.dg/gomp/omp_atomic1.f90
  0e5454ac80bc199d6cf3e96e9750c33f  gcc/testsuite/gfortran.dg/gomp/omp_atomic2.f90
  5d43e477ab60e438b8824d612b24022d  gcc/testsuite/gfortran.dg/gomp/omp_clauses1.f90
--- 46128,46134 ----
  b7bb651884d39c2e5dce7d57d46f40a5  gcc/testsuite/gfortran.dg/gomp/free-2.f90
  76bbc2b9dfa2c387c9d8d642c2e8f1eb  gcc/testsuite/gfortran.dg/gomp/gomp.exp
  0cfd422be152bb21744cc7cfe5baf808  gcc/testsuite/gfortran.dg/gomp/intentin1.f90
! be152538cccb659bb8dac0eda81355e5  gcc/testsuite/gfortran.dg/gomp/map-1.f90
  52223211c34f4dbace5e033f8243ae1f  gcc/testsuite/gfortran.dg/gomp/omp_atomic1.f90
  0e5454ac80bc199d6cf3e96e9750c33f  gcc/testsuite/gfortran.dg/gomp/omp_atomic2.f90
  5d43e477ab60e438b8824d612b24022d  gcc/testsuite/gfortran.dg/gomp/omp_clauses1.f90
*************** bcd9a8c5acf05494271659304f0f0a60  gcc/te
*** 45902,45907 ****
--- 46181,46197 ----
  624512980f4f3b39deb857cfdd5fdeba  gcc/testsuite/gfortran.dg/gomp/pr62131.f90
  5d7b04ab3b84314d89ea68a7f054ea17  gcc/testsuite/gfortran.dg/gomp/pr66633.f90
  008d934abb38a4acedd9f90092aa4b6d  gcc/testsuite/gfortran.dg/gomp/pr69128.f90
+ 5a8d2190eb640c3738f51f5cbe21a0b5  gcc/testsuite/gfortran.dg/gomp/pr69183.f90
+ 1724cefc87db9a0a62b6387ee74cffc2  gcc/testsuite/gfortran.dg/gomp/pr71704.f90
+ 7d3f1abdbdd106580173760b443a9b40  gcc/testsuite/gfortran.dg/gomp/pr71705.f90
+ d07d71ded0663c9dc2e67b06e6231cfc  gcc/testsuite/gfortran.dg/gomp/pr71758.f90
+ bb35c5bd7245c0d5e4e5f3ed549e7fef  gcc/testsuite/gfortran.dg/gomp/pr77500.f90
+ 722f7db78e9c772f54ff8a774026a2f1  gcc/testsuite/gfortran.dg/gomp/pr77516.f90
+ 8688817c97ff87e4020efce6973a3d5b  gcc/testsuite/gfortran.dg/gomp/pr77665.f90
+ e5f0ff2c94fb41e447563955917d04b7  gcc/testsuite/gfortran.dg/gomp/pr77666.f90
+ 597f76dd386ee781839ef6d3ac92cd38  gcc/testsuite/gfortran.dg/gomp/pr78298.f90
+ 6ac88ac18616a41dfc1d4490ac0180ca  gcc/testsuite/gfortran.dg/gomp/pr78866-1.f90
+ 7be086a304cd4d607913bd32ad2448ca  gcc/testsuite/gfortran.dg/gomp/pr78866-2.f90
  b4be3f9de7631846875a711ae9b67293  gcc/testsuite/gfortran.dg/gomp/proc_ptr_1.f90
  87885556568e657ef4c936c53e1c7305  gcc/testsuite/gfortran.dg/gomp/proc_ptr_2.f90
  59e444df8ec8f5ea9859b5aef4d75865  gcc/testsuite/gfortran.dg/gomp/reduction1.f90
*************** cec7b350b054a17b7f0b5726d4a21711  gcc/te
*** 45981,45987 ****
  5754b3cf46378cb45f6e5a1d41b0cd4a  gcc/testsuite/gfortran.dg/graphite/pr37852.f90
  d056a2044b7a3f7f763fe76fad38958d  gcc/testsuite/gfortran.dg/graphite/pr37857.f90
  39980079ddf92937d334ad4fa7d63b74  gcc/testsuite/gfortran.dg/graphite/pr37980.f90
! 9fd92c1b4b047e3ecad9e87cacd557e5  gcc/testsuite/gfortran.dg/graphite/pr38083.f90
  2f361e4dc036f2a777b5340709d7cbad  gcc/testsuite/gfortran.dg/graphite/pr38459.f90
  68989e2f56ab16cebeffc96df65b3c7d  gcc/testsuite/gfortran.dg/graphite/pr38953.f90
  c5c4a63aba69d822a86d91f0242eb7c9  gcc/testsuite/gfortran.dg/graphite/pr39516.f
--- 46271,46277 ----
  5754b3cf46378cb45f6e5a1d41b0cd4a  gcc/testsuite/gfortran.dg/graphite/pr37852.f90
  d056a2044b7a3f7f763fe76fad38958d  gcc/testsuite/gfortran.dg/graphite/pr37857.f90
  39980079ddf92937d334ad4fa7d63b74  gcc/testsuite/gfortran.dg/graphite/pr37980.f90
! 5d9ba2a3b15bd5a5d3fec321b23e780b  gcc/testsuite/gfortran.dg/graphite/pr38083.f90
  2f361e4dc036f2a777b5340709d7cbad  gcc/testsuite/gfortran.dg/graphite/pr38459.f90
  68989e2f56ab16cebeffc96df65b3c7d  gcc/testsuite/gfortran.dg/graphite/pr38953.f90
  c5c4a63aba69d822a86d91f0242eb7c9  gcc/testsuite/gfortran.dg/graphite/pr39516.f
*************** a9d76d71bfd312f4638121eef4a5b755  gcc/te
*** 46012,46018 ****
  f49e90e6478af8a81f9217414f29fd9c  gcc/testsuite/gfortran.dg/graphite/vect-pr40979.f90
  f9932e22f4bc6baa989154035dbac7c1  gcc/testsuite/gfortran.dg/guality/arg1.f90
  49b421794f66b18bf7f66026f68f035f  gcc/testsuite/gfortran.dg/guality/guality.exp
! 34aa3a6f198ba5d265275076a07dbf9a  gcc/testsuite/gfortran.dg/guality/pr41558.f90
  85b827d8051a3d9581ba2a6e6709d5c9  gcc/testsuite/gfortran.dg/hollerith.f90
  855af7807ad9d75aef7ff85c2859a0c2  gcc/testsuite/gfortran.dg/hollerith2.f90
  ac7abff09db32e7d44719f0d0472dc64  gcc/testsuite/gfortran.dg/hollerith3.f90
--- 46302,46308 ----
  f49e90e6478af8a81f9217414f29fd9c  gcc/testsuite/gfortran.dg/graphite/vect-pr40979.f90
  f9932e22f4bc6baa989154035dbac7c1  gcc/testsuite/gfortran.dg/guality/arg1.f90
  49b421794f66b18bf7f66026f68f035f  gcc/testsuite/gfortran.dg/guality/guality.exp
! d4523e218e3a6d976774e7e026bca339  gcc/testsuite/gfortran.dg/guality/pr41558.f90
  85b827d8051a3d9581ba2a6e6709d5c9  gcc/testsuite/gfortran.dg/hollerith.f90
  855af7807ad9d75aef7ff85c2859a0c2  gcc/testsuite/gfortran.dg/hollerith2.f90
  ac7abff09db32e7d44719f0d0472dc64  gcc/testsuite/gfortran.dg/hollerith3.f90
*************** d7dcbbbf51853a9d7416a34ec7d5e19b  gcc/te
*** 46066,46071 ****
--- 46356,46362 ----
  ff6483fe1d08d736f63b71ce2d35d964  gcc/testsuite/gfortran.dg/ieee/ieee_7.f90
  bfd28208c7b1f6a5bf27d778e77b30a1  gcc/testsuite/gfortran.dg/ieee/intrinsics_1.f90
  5b4c9cca5fe34ca3db33f17cc3b0ae09  gcc/testsuite/gfortran.dg/ieee/intrinsics_2.F90
+ d19c8b732b5cf70aa6edcc4165fe30b3  gcc/testsuite/gfortran.dg/ieee/pr77507.f90
  817bcd68ef086363a121829f06905660  gcc/testsuite/gfortran.dg/ieee/rounding_1.f90
  7dc8b356113d0ea92e104407ded23209  gcc/testsuite/gfortran.dg/ieee/underflow_1.f90
  d827b941652feab002a335b27a4dd9f2  gcc/testsuite/gfortran.dg/imag_1.f
*************** fe4f5eeb546eda9f57d05796db3291be  gcc/te
*** 46188,46193 ****
--- 46479,46485 ----
  a85d9b173509ec81f0e8eea4f903aedf  gcc/testsuite/gfortran.dg/inquire_14.f90
  83afca5041b4e1bc04aa54f0efed9e5a  gcc/testsuite/gfortran.dg/inquire_15.f90
  44cdb6f6eed5f646190e5ec3eb4b5886  gcc/testsuite/gfortran.dg/inquire_16.f90
+ 709b7d5db0659cf45b4d7a89c9c7e176  gcc/testsuite/gfortran.dg/inquire_17.f90
  46381b0ac618fd43b13d9fe6a0683198  gcc/testsuite/gfortran.dg/inquire_5.f90
  416611b673267dc72f7c7b52abfa5158  gcc/testsuite/gfortran.dg/inquire_6.f90
  8283bb4be36f05c63ad546fdd62f3531  gcc/testsuite/gfortran.dg/inquire_7.f90
*************** ba5ca4bc88cb0228b15a134fc77b011f  gcc/te
*** 46207,46213 ****
  fa2faf183145bf87d1497a8e18cf67c2  gcc/testsuite/gfortran.dg/integer_exponentiation_3.F90
  901fdf8ccfce7240b5e2cfa3f7fcb07c  gcc/testsuite/gfortran.dg/integer_exponentiation_4.f90
  ebd2c7181d1d1a74fb8d92fa4d5dcadf  gcc/testsuite/gfortran.dg/integer_exponentiation_5.F90
! fcfb49c9fc1a86ba81cd5f03602cd781  gcc/testsuite/gfortran.dg/integer_exponentiation_6.F90
  f12f73c690278c3c3bdcebfa2a843dfa  gcc/testsuite/gfortran.dg/intent_optimize_1.f90
  6ad3133cfe62e722e018d386dbfd3404  gcc/testsuite/gfortran.dg/intent_out_1.f90
  56f012500f1600964f96a00b144bd1bb  gcc/testsuite/gfortran.dg/intent_out_2.f90
--- 46499,46505 ----
  fa2faf183145bf87d1497a8e18cf67c2  gcc/testsuite/gfortran.dg/integer_exponentiation_3.F90
  901fdf8ccfce7240b5e2cfa3f7fcb07c  gcc/testsuite/gfortran.dg/integer_exponentiation_4.f90
  ebd2c7181d1d1a74fb8d92fa4d5dcadf  gcc/testsuite/gfortran.dg/integer_exponentiation_5.F90
! 5436c9710c4dbacc08026642a5d88b2d  gcc/testsuite/gfortran.dg/integer_exponentiation_6.F90
  f12f73c690278c3c3bdcebfa2a843dfa  gcc/testsuite/gfortran.dg/intent_optimize_1.f90
  6ad3133cfe62e722e018d386dbfd3404  gcc/testsuite/gfortran.dg/intent_out_1.f90
  56f012500f1600964f96a00b144bd1bb  gcc/testsuite/gfortran.dg/intent_out_2.f90
*************** cda7326b348930cf4a6bae1122ef6b01  gcc/te
*** 46317,46323 ****
  d45379bc70cd62e1018f6a89d6d3dc32  gcc/testsuite/gfortran.dg/intrinsic_intent_1.f03
  fa319bdd335ad2c9c2a50fa4627455cd  gcc/testsuite/gfortran.dg/intrinsic_intkinds_1.f90
  90b3155638c5685439fb666f6912408c  gcc/testsuite/gfortran.dg/intrinsic_modulo_1.f90
! 2e668f5f8ed611e1726a4f7dc6a6609b  gcc/testsuite/gfortran.dg/intrinsic_numeric_arg.f
  bbe577fd068c3156ebf6e56c01cf4a83  gcc/testsuite/gfortran.dg/intrinsic_optional_char_arg_1.f90
  09e46ae239bc513dd67f9fa8c76e39ad  gcc/testsuite/gfortran.dg/intrinsic_pack_1.f90
  fe865725bfa3323563a596d77f333f3f  gcc/testsuite/gfortran.dg/intrinsic_pack_2.f90
--- 46609,46615 ----
  d45379bc70cd62e1018f6a89d6d3dc32  gcc/testsuite/gfortran.dg/intrinsic_intent_1.f03
  fa319bdd335ad2c9c2a50fa4627455cd  gcc/testsuite/gfortran.dg/intrinsic_intkinds_1.f90
  90b3155638c5685439fb666f6912408c  gcc/testsuite/gfortran.dg/intrinsic_modulo_1.f90
! 9ecac424cdaf840622239656867130dd  gcc/testsuite/gfortran.dg/intrinsic_numeric_arg.f
  bbe577fd068c3156ebf6e56c01cf4a83  gcc/testsuite/gfortran.dg/intrinsic_optional_char_arg_1.f90
  09e46ae239bc513dd67f9fa8c76e39ad  gcc/testsuite/gfortran.dg/intrinsic_pack_1.f90
  fe865725bfa3323563a596d77f333f3f  gcc/testsuite/gfortran.dg/intrinsic_pack_2.f90
*************** f7a6d95010c982f683429c683e7cf5f0  gcc/te
*** 46753,46758 ****
--- 47045,47051 ----
  e1d9529615ee393bcd26c894368a6218  gcc/testsuite/gfortran.dg/namelist_86.f90
  fec7274f12ad58ba111ee97c209eab90  gcc/testsuite/gfortran.dg/namelist_87.f90
  ca386a76e9a345aefe2a4fb9e5c66ed8  gcc/testsuite/gfortran.dg/namelist_88.f90
+ 5aaf8fc3255579614c27bdf43512d3fc  gcc/testsuite/gfortran.dg/namelist_90.f
  b8f12d194aa9b2cfb5214297f897456c  gcc/testsuite/gfortran.dg/namelist_assumed_char.f90
  73de646ecd69b0bf965fecc1ccd64052  gcc/testsuite/gfortran.dg/namelist_blockdata.f
  069dbff7c2c727c922c2a492f0feb75e  gcc/testsuite/gfortran.dg/namelist_char_only.f90
*************** e5fa40276b7e0de18f35bf0ad1ffb8bc  gcc/te
*** 46830,46835 ****
--- 47123,47129 ----
  e67abf33c2578358a5d5bab3e11f00e9  gcc/testsuite/gfortran.dg/null_6.f90
  4f1c65ac34bcf6b5e6d3fa579b4e5be7  gcc/testsuite/gfortran.dg/null_7.f90
  a268bf435ff3e542009031168b6619a0  gcc/testsuite/gfortran.dg/null_8.f90
+ ec5957a6e0e29cbef74656afc663b247  gcc/testsuite/gfortran.dg/null_9.f90
  fb9d6abbd9b9049c00ee6e992d1a8859  gcc/testsuite/gfortran.dg/null_actual.f90
  eb6af590881f3e995fc6b2c78089f277  gcc/testsuite/gfortran.dg/nullify_1.f
  f202e3843710f9492560538fa53c3847  gcc/testsuite/gfortran.dg/nullify_2.f90
*************** ef168d64f89feac76b2e6a32df0ca37b  gcc/te
*** 47187,47194 ****
--- 47481,47490 ----
  f5878abe544570f500d4148c17a74cc4  gcc/testsuite/gfortran.dg/pr59440-3.f90
  4d2d4770d539b54391d7391e2ff84899  gcc/testsuite/gfortran.dg/pr59700.f90
  896a650820f1e92f30e2b2e4435e6335  gcc/testsuite/gfortran.dg/pr59706.f90
+ 31f41b11c36de9a6e9353abe63042a24  gcc/testsuite/gfortran.dg/pr59910.f90
  649ea9d3e6b33e6ac70422c5becd7c00  gcc/testsuite/gfortran.dg/pr60126.f90
  d03f1dd77bd6dee9a89da7373579df73  gcc/testsuite/gfortran.dg/pr61209.f90
+ 42d2f6829d59339ccc9ed3c123a5fc25  gcc/testsuite/gfortran.dg/pr61318.f90
  fce6bb3e21f230d6e3cee74cb2b4e71d  gcc/testsuite/gfortran.dg/pr61335.f90
  6dedb63c784b5018b208a0535bbce9a1  gcc/testsuite/gfortran.dg/pr61454.f90
  2c95c461b017b811d75f842a5f254b83  gcc/testsuite/gfortran.dg/pr61669.f90
*************** c0ada255b8d4b02a2bf3f62ec3fd9223  gcc/te
*** 47243,47252 ****
--- 47539,47583 ----
  53367d2d1c3060e4cca1dbeebef89967  gcc/testsuite/gfortran.dg/pr68318_1.f90
  b3ef2aaf4796b96c50079acc822669c9  gcc/testsuite/gfortran.dg/pr68318_2.f90
  94426d6f9de03e56102a32084142c32c  gcc/testsuite/gfortran.dg/pr68319.f90
+ 2f9568ad37c56b0f20f67f32b2afa76c  gcc/testsuite/gfortran.dg/pr68566.f90
  b9749045f7e8d01ce770bef143077398  gcc/testsuite/gfortran.dg/pr69055.f90
+ af40f4dedd6541b74e692dc2ab3d113d  gcc/testsuite/gfortran.dg/pr69514_1.f90
+ a76232d35f35517cbd958d99d1ca3975  gcc/testsuite/gfortran.dg/pr69514_2.f90
  68938073de3c2383615f40d0ec615519  gcc/testsuite/gfortran.dg/pr69603.f90
+ ad1c20f5706de185c8d1a0e845e5710d  gcc/testsuite/gfortran.dg/pr69867.f90
+ 29610fdfa7dcc34c2dbc61b21af1103e  gcc/testsuite/gfortran.dg/pr69962.f90
+ 5a944c3b5c5553f279b49a5886af1f27  gcc/testsuite/gfortran.dg/pr70006.f90
+ 7f656e5a6d13d6ab788f5c3e8fb90572  gcc/testsuite/gfortran.dg/pr70040.f90
+ 23dc11b0707086a8168e76c17d13d620  gcc/testsuite/gfortran.dg/pr70673.f90
  0e424f05f2fdeb786b877ace2617112d  gcc/testsuite/gfortran.dg/pr70931.f90
+ 2adcf4116aa4365895bb3d287e182ddd  gcc/testsuite/gfortran.dg/pr71067_1.f90
+ 17102b0b3177b5b5beb36730bd460100  gcc/testsuite/gfortran.dg/pr71067_2.f90
  75b8abd1f0f9d2e236605ecc6792b9fb  gcc/testsuite/gfortran.dg/pr71204.f90
+ dffe49f90e191f0e0d1a1c6f8d53f854  gcc/testsuite/gfortran.dg/pr71688.f90
+ 1aa045033f7cb52ec480e9dcc3daf999  gcc/testsuite/gfortran.dg/pr71730.f90
+ ea322d8eb84f224e47f5c54a96e8cd2d  gcc/testsuite/gfortran.dg/pr71764.f90
+ 71aa02c8e336e26a15cc65118a5c7776  gcc/testsuite/gfortran.dg/pr71799.f90
+ 47c2b1d1e6313ea63cccc86bf3e3641a  gcc/testsuite/gfortran.dg/pr71859.f90
+ a5f4703aabb6d4a57c3b221a398aae60  gcc/testsuite/gfortran.dg/pr71883.f90
+ ea6f420ce4d3bbc8e6c948a8f185ace7  gcc/testsuite/gfortran.dg/pr71895.f90
+ 000ce2c7042160052125874cc82a4790  gcc/testsuite/gfortran.dg/pr77260_1.f90
+ e0d908d5f885bc381038df323bdf79ed  gcc/testsuite/gfortran.dg/pr77260_2.f90
+ ab680d2f6cc0648921a054114a485973  gcc/testsuite/gfortran.dg/pr77351.f90
+ 0e6eddcfc83690ffde7c6675dbaf7f56  gcc/testsuite/gfortran.dg/pr77380.f90
+ c80f60155bcb84d08e36147df56ee2a7  gcc/testsuite/gfortran.dg/pr77391.f90
+ 273708f3f44a1085948126b236c9f875  gcc/testsuite/gfortran.dg/pr77420_1.f90
+ 85915b4b10039334da3368e57192ff34  gcc/testsuite/gfortran.dg/pr77420_2.f90
+ e88169f0671cbd27372fc637327b8b76  gcc/testsuite/gfortran.dg/pr77420_3.f90
+ 260e188355d107cc59e00853573d2426  gcc/testsuite/gfortran.dg/pr77420_4.f90
+ b41dce20e2213fb234886325f924905e  gcc/testsuite/gfortran.dg/pr77460.f90
+ 7ac13d0d1a6ccb282debcd0ac4bf69fd  gcc/testsuite/gfortran.dg/pr77506.f90
+ a99d6d5592ea6b962b6a45223a22a17f  gcc/testsuite/gfortran.dg/pr77612.f90
+ a0e0cbaff470d13a9247b4f6f66572d6  gcc/testsuite/gfortran.dg/pr77694.f90
+ 4fd680a925c1f4e38d7234b314567aa4  gcc/testsuite/gfortran.dg/pr77978_1.f90
+ 6c1eb527a1773bb547e0372dd833482b  gcc/testsuite/gfortran.dg/pr77978_2.f90
+ a997ec96c9e5b5703664c90f0b844fe1  gcc/testsuite/gfortran.dg/pr77978_3.f90
+ 38417bf1cb92bb7d70724f9be2c325ca  gcc/testsuite/gfortran.dg/pr78279.f90
+ c8893a59741e05d503a560b19c9684a9  gcc/testsuite/gfortran.dg/pr78297.f90
  6ff99f4b0021f30bee039a61db7cba9d  gcc/testsuite/gfortran.dg/predcom-1.f
  20a411a7e5a57891297c4c6a96d92009  gcc/testsuite/gfortran.dg/predcom-2.f
  80cf60710448ac2378aecda5fc4a57b6  gcc/testsuite/gfortran.dg/present_1.f90
*************** b56e9f2b05e65e28487a8445ef02657c  gcc/te
*** 47346,47351 ****
--- 47677,47683 ----
  3112dbb40c03404d9c8244c53b09b776  gcc/testsuite/gfortran.dg/proc_ptr_45.f90
  fbfcfdd0751320bb90e2488052dfe7de  gcc/testsuite/gfortran.dg/proc_ptr_46.f90
  81e72e4ab4eb9b9c94a4c6b8c55d5ea5  gcc/testsuite/gfortran.dg/proc_ptr_47.f90
+ a50ed014f3fd628f8e8e8e09f44f8c0f  gcc/testsuite/gfortran.dg/proc_ptr_49.f90
  8315cc72db332168e57edf018a4b8f1f  gcc/testsuite/gfortran.dg/proc_ptr_5.f90
  2e1358865c3ec02c3c45568f5eebb128  gcc/testsuite/gfortran.dg/proc_ptr_6.f90
  3648c097522ae5858550c7d7776afd28  gcc/testsuite/gfortran.dg/proc_ptr_7.c
*************** d93a9e353ffa27762f707c539093d6ce  gcc/te
*** 47395,47401 ****
--- 47727,47735 ----
  7e0250e09f1d6fd62c3c197b85915c43  gcc/testsuite/gfortran.dg/proc_ptr_comp_43.f90
  72f01172bd92b8cb8853693a0a79310d  gcc/testsuite/gfortran.dg/proc_ptr_comp_44.f90
  c7c6f9039ee8a7d60608874366e1f0e6  gcc/testsuite/gfortran.dg/proc_ptr_comp_45.f90
+ c75d4858dc637cf3362d7fd34a2b2c12  gcc/testsuite/gfortran.dg/proc_ptr_comp_49.f90
  9440b7a38d0f8e2941673b44554c91fe  gcc/testsuite/gfortran.dg/proc_ptr_comp_5.f90
+ 301350ead67fb8e45886f0d873e81b06  gcc/testsuite/gfortran.dg/proc_ptr_comp_50.f90
  6347d321213f9347afa49d4354eb67f7  gcc/testsuite/gfortran.dg/proc_ptr_comp_6.f90
  f41c3a8af3a63f5aef54c294fa8cd9c5  gcc/testsuite/gfortran.dg/proc_ptr_comp_7.f90
  a43898fbcd332118da14c8be5eec75b3  gcc/testsuite/gfortran.dg/proc_ptr_comp_8.f90
*************** e7c2d02458f702cc0b7a63dc66256cd9  gcc/te
*** 47529,47534 ****
--- 47863,47869 ----
  c4ab590e1a84db0ed7c686c504deea8d  gcc/testsuite/gfortran.dg/realloc_on_assign_23.f90
  7c2988bf2d788d39fc96e4716d3fa82e  gcc/testsuite/gfortran.dg/realloc_on_assign_24.f90
  6da090aaff0dee1f6b557a0ebdf387d1  gcc/testsuite/gfortran.dg/realloc_on_assign_25.f90
+ 77311ad18cfec3fcffefaedf658436db  gcc/testsuite/gfortran.dg/realloc_on_assign_26.f90
  10876d611fdffc7b6cf97c8e1abf90b2  gcc/testsuite/gfortran.dg/realloc_on_assign_3.f03
  f49b54ba1324c9645d5ab321e82b6873  gcc/testsuite/gfortran.dg/realloc_on_assign_4.f03
  600455d0e569cd93d229832b42ef84a2  gcc/testsuite/gfortran.dg/realloc_on_assign_5.f03
*************** e4078fcf84bae622e034eda4e4a7bd1b  gcc/te
*** 47689,47694 ****
--- 48024,48030 ----
  0fa3636ab8c629eaf962c9d4116c05fb  gcc/testsuite/gfortran.dg/select_type_32.f90
  65d1bc4754dda94ab063cc52f230bad4  gcc/testsuite/gfortran.dg/select_type_33.f03
  8400e196604f257ef8d8e9269bae6945  gcc/testsuite/gfortran.dg/select_type_34.f90
+ d0d3f92f35bb90787623ca24c03d4429  gcc/testsuite/gfortran.dg/select_type_35.f03
  402dd7c959e0269e964ee68c701dfb67  gcc/testsuite/gfortran.dg/select_type_4.f90
  3ab901522e5a6c2930daa42a08c5a4c3  gcc/testsuite/gfortran.dg/select_type_5.f03
  08871f191c3a23bf7de4d00e2c1959a3  gcc/testsuite/gfortran.dg/select_type_6.f03
*************** c82e3d4ced9692fe4990fecf9df45032  gcc/te
*** 47808,47813 ****
--- 48144,48150 ----
  1c47ac1ad9850bdd467c47a14971211e  gcc/testsuite/gfortran.dg/string_ctor_1.f90
  b1f748dc53cd2b4d995595954b8f1b1c  gcc/testsuite/gfortran.dg/string_length_1.f90
  787d84b84ac7cdaa67b10d6cbb2c2b69  gcc/testsuite/gfortran.dg/string_length_2.f90
+ 99908b0af6994996f1c93547721b5740  gcc/testsuite/gfortran.dg/string_length_3.f90
  f664c3c8552e12e2a8d7f4d3566f9877  gcc/testsuite/gfortran.dg/string_null_compare_1.f
  230f3ac65d829fdd4d14a340c2dcc070  gcc/testsuite/gfortran.dg/string_pad_trunc.f90
  4682a1485627795a4c59238a19670fbb  gcc/testsuite/gfortran.dg/structure_constructor_1.f03
*************** d2dc7256f9f6b0f1b0f453193aa85a1e  gcc/te
*** 47912,47917 ****
--- 48249,48255 ----
  6506a123d51822842dbe5e02506d47b2  gcc/testsuite/gfortran.dg/type_decl_1.f90
  c0cc1239e52334af5a04ed643213a49a  gcc/testsuite/gfortran.dg/type_decl_2.f90
  2c63f395713929a496928e4aff896804  gcc/testsuite/gfortran.dg/type_decl_3.f90
+ c914c554b6efc28d2508d046a68ecb4e  gcc/testsuite/gfortran.dg/type_decl_4.f90
  ff2f764b4ce4d63b5d7f275525c26c9f  gcc/testsuite/gfortran.dg/type_is_1.f90
  b6b351a9a6361cfeabc7ee30143ed4ad  gcc/testsuite/gfortran.dg/type_to_class_1.f03
  37644b30f4d8b85311b58a66b1a032ca  gcc/testsuite/gfortran.dg/type_to_class_2.f03
*************** e037876e10ff67588872661e14eb5fe3  gcc/te
*** 48020,48025 ****
--- 48358,48364 ----
  a0d15cb58d5be89e3ac3346c05d54cde  gcc/testsuite/gfortran.dg/typebound_proc_31.f90
  535243935a3e86462ce476cfcbe5e3cf  gcc/testsuite/gfortran.dg/typebound_proc_32.f90
  4b72996d3d40cfba872c79978844e194  gcc/testsuite/gfortran.dg/typebound_proc_33.f90
+ e97979b0f8627009589defb1d5445a99  gcc/testsuite/gfortran.dg/typebound_proc_35.f90
  5a85f8e544f2db7331aec686a5caf7ee  gcc/testsuite/gfortran.dg/typebound_proc_4.f03
  a7d68db5c429562164ea47edc8677d14  gcc/testsuite/gfortran.dg/typebound_proc_5.f03
  2bba47d31700cbba32684f0f2e15c7bc  gcc/testsuite/gfortran.dg/typebound_proc_6.f03
*************** c3ddd813e72b606d44cdfd47616fff95  gcc/te
*** 48262,48268 ****
  34c261a55c7392e9ef695c645bb69cdc  gcc/testsuite/gfortran.dg/warn_std_3.f90
  236f4177fe831ff31ad3388fde56d3a7  gcc/testsuite/gfortran.dg/warn_target_lifetime_1.f90
  10c0140b52dfb08b0d4c05279aec231b  gcc/testsuite/gfortran.dg/warn_target_lifetime_2.f90
! 800aafcb3c3ed159b7bce10c0bd7cb2b  gcc/testsuite/gfortran.dg/warn_target_lifetime_3.f90
  faef1baec47674d096569b4803422d64  gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_1.f90
  9cdfca84c19b8b4bfd5f9be4a921f068  gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_2.f90
  62c8995bb923620e3509b9bd179b618c  gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_3.f90
--- 48601,48608 ----
  34c261a55c7392e9ef695c645bb69cdc  gcc/testsuite/gfortran.dg/warn_std_3.f90
  236f4177fe831ff31ad3388fde56d3a7  gcc/testsuite/gfortran.dg/warn_target_lifetime_1.f90
  10c0140b52dfb08b0d4c05279aec231b  gcc/testsuite/gfortran.dg/warn_target_lifetime_2.f90
! e6acf6c0973fa26724b28e6ea1651bdb  gcc/testsuite/gfortran.dg/warn_target_lifetime_3.f90
! 2ece2210488f4ed099be674644f83ed0  gcc/testsuite/gfortran.dg/warn_target_lifetime_4.f90
  faef1baec47674d096569b4803422d64  gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_1.f90
  9cdfca84c19b8b4bfd5f9be4a921f068  gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_2.f90
  62c8995bb923620e3509b9bd179b618c  gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_3.f90
*************** e82dfc5497ff6edd4197a823d1a6ed2f  gcc/te
*** 48284,48289 ****
--- 48624,48631 ----
  e2dd8115622860575ce72139d603a847  gcc/testsuite/gfortran.dg/where_2.f90
  3516e7a52673173d6551f02dca2c1f39  gcc/testsuite/gfortran.dg/where_3.f90
  4179a357d57c03402f3b139d65faa997  gcc/testsuite/gfortran.dg/where_4.f90
+ 182a4bf9b505e389529f505ad87bcede  gcc/testsuite/gfortran.dg/where_5.f90
+ 1d287cc9e958f47ab705383330836258  gcc/testsuite/gfortran.dg/where_6.f90
  355f71857e4d70eec2b706ae1ab82a95  gcc/testsuite/gfortran.dg/where_nested_1.f90
  9ed3fb7c28651e33f2d22957e7ad8da6  gcc/testsuite/gfortran.dg/where_operator_assign_1.f90
  e065fb63b7634d2874e6ce1fb7f3c610  gcc/testsuite/gfortran.dg/where_operator_assign_2.f90
*************** c27c40295b5b2f36efed49db8c2db03d  gcc/te
*** 48854,48859 ****
--- 49196,49202 ----
  3a730714e4c3a60b9772fac2b31dd88a  gcc/testsuite/gnat.dg/atomic6_pkg.ads
  16c10ef2b56763079ce902fa8a6be517  gcc/testsuite/gnat.dg/atomic8.adb
  3a29826c9a71b419b0c2323869c82f42  gcc/testsuite/gnat.dg/bad_array.adb
+ aae39b549f5bb7a2b837495c637aaa94  gcc/testsuite/gnat.dg/biased_subtype.adb
  9bbc182ee19d36c4abbd7d6046ac5664  gcc/testsuite/gnat.dg/biased_uc.adb
  faf4a0c852ea85d2eab4ec4413be5fba  gcc/testsuite/gnat.dg/bip_aggregate_bug.adb
  6044ac207f7472a4725aeb0f351b7051  gcc/testsuite/gnat.dg/bip_prim_func.adb
*************** fd22c732c21e91285f5ea42a557f1f49  gcc/te
*** 49248,49253 ****
--- 49591,49599 ----
  1b643fb3739678632ebe4630a04230df  gcc/testsuite/gnat.dg/loop_optimization18_pkg.ads
  f541e6bfbb5ebc32c8c88b9475f024d2  gcc/testsuite/gnat.dg/loop_optimization2.adb
  c127785f315390b699c7fa039c495c81  gcc/testsuite/gnat.dg/loop_optimization2.ads
+ 5ca0d17cca59c53807e5c7d2a3068310  gcc/testsuite/gnat.dg/loop_optimization23.adb
+ df5553454da09f33ff8096bbd9239d7f  gcc/testsuite/gnat.dg/loop_optimization23_pkg.adb
+ cf019b8f607e5bc1ba11cbef1df535c9  gcc/testsuite/gnat.dg/loop_optimization23_pkg.ads
  5e481abfdb92dddf7569d6c4d76c865f  gcc/testsuite/gnat.dg/loop_optimization3.adb
  578b49122b45d68bcca85ccfda38435f  gcc/testsuite/gnat.dg/loop_optimization3_pkg.adb
  2daefc09b2855fc2ec65dad098246f1f  gcc/testsuite/gnat.dg/loop_optimization3_pkg.ads
*************** db1f6b82d662e78fa1b88b4ed3fb6ee4  gcc/te
*** 49473,49478 ****
--- 49819,49825 ----
  3d44b5cac38d62a85266069665682f5d  gcc/testsuite/gnat.dg/opt5.adb
  e5e7ff61479fbeb7973786d07f72ba84  gcc/testsuite/gnat.dg/opt6.adb
  87097de987361854f4c5179a6de42c2c  gcc/testsuite/gnat.dg/opt6.ads
+ 05b2d9ff3364801eae257251792ddd49  gcc/testsuite/gnat.dg/opt63.adb
  a441d166cc0d4b34342468308b350060  gcc/testsuite/gnat.dg/opt7.adb
  8ea613067c21d3bbf860fb8bb4013c79  gcc/testsuite/gnat.dg/opt7.ads
  81951fc84d3d36131be8aca4f80c113b  gcc/testsuite/gnat.dg/opt7_pkg.ads
*************** e06de9a11cbeb2ddc0612001c1933fdd  gcc/te
*** 51250,51256 ****
  6e643feacf8db3458a4d6e8e64dc79a2  gcc/testsuite/lib/gcc-gdb-test.exp
  ad7d745c5dbf5092c97d72e0e4fe30fa  gcc/testsuite/lib/gcc-simulate-thread.exp
  64b7d9e1e766ac7334d0a3b7fdf42d43  gcc/testsuite/lib/gcc.exp
! 0116fd37fb9d84a3bbedcbaecf4b44fb  gcc/testsuite/lib/gcov.exp
  3004916b628274ad3e5d83b5d49ab697  gcc/testsuite/lib/gfortran-dg.exp
  0bf1be2e7b4255e1f5dee134c8c0827e  gcc/testsuite/lib/gfortran.exp
  6ca9dc2d5d074129cdee174b3aebda49  gcc/testsuite/lib/gnat-dg.exp
--- 51597,51603 ----
  6e643feacf8db3458a4d6e8e64dc79a2  gcc/testsuite/lib/gcc-gdb-test.exp
  ad7d745c5dbf5092c97d72e0e4fe30fa  gcc/testsuite/lib/gcc-simulate-thread.exp
  64b7d9e1e766ac7334d0a3b7fdf42d43  gcc/testsuite/lib/gcc.exp
! 8fdb38890fceb66b6363d8808abebb30  gcc/testsuite/lib/gcov.exp
  3004916b628274ad3e5d83b5d49ab697  gcc/testsuite/lib/gfortran-dg.exp
  0bf1be2e7b4255e1f5dee134c8c0827e  gcc/testsuite/lib/gfortran.exp
  6ca9dc2d5d074129cdee174b3aebda49  gcc/testsuite/lib/gnat-dg.exp
*************** c54ca31ae71a78f54aedce70fdefdb94  gcc/te
*** 51278,51284 ****
  3326d5b2fe3470fc2f28624e149b110d  gcc/testsuite/lib/scantree.exp
  d48e7bf65e56a3ceb35bc0375451b088  gcc/testsuite/lib/target-libpath.exp
  f65311b4bdf7a8c2a72c6444d35a9a03  gcc/testsuite/lib/target-supports-dg.exp
! b630987467fdf586142ff4aeb8d08248  gcc/testsuite/lib/target-supports.exp
  f417379063d9ca3e2d5de200bdbaea83  gcc/testsuite/lib/target-utils.exp
  1cd569154317cc35dbb2d75d36e0d897  gcc/testsuite/lib/timeout-dg.exp
  9603570719708c5c2e637053a9efa25d  gcc/testsuite/lib/timeout.exp
--- 51625,51631 ----
  3326d5b2fe3470fc2f28624e149b110d  gcc/testsuite/lib/scantree.exp
  d48e7bf65e56a3ceb35bc0375451b088  gcc/testsuite/lib/target-libpath.exp
  f65311b4bdf7a8c2a72c6444d35a9a03  gcc/testsuite/lib/target-supports-dg.exp
! e7ddc1d1b301a640284878360a3d371e  gcc/testsuite/lib/target-supports.exp
  f417379063d9ca3e2d5de200bdbaea83  gcc/testsuite/lib/target-utils.exp
  1cd569154317cc35dbb2d75d36e0d897  gcc/testsuite/lib/timeout-dg.exp
  9603570719708c5c2e637053a9efa25d  gcc/testsuite/lib/timeout.exp
*************** a57e521085412bbde60e78229ace4fd5  gcc/te
*** 52226,52232 ****
  02def33a82a56a833dbb9c81b36b4fe6  gcc/timevar.def
  39583dacf15fae594898b65a054da27f  gcc/timevar.h
  610597527691a71e6efbabe2eb667519  gcc/tlink.c
! d35abdc27940e320bb4ab78e72e993a0  gcc/toplev.c
  c3e9cb4d79158c9d4373bf9f04b642a2  gcc/toplev.h
  88d47eb6984b1c342e82e3a075dee56e  gcc/tracer.c
  beeb838b6a8b1de3d650f8a6473c851f  gcc/trans-mem.c
--- 52573,52579 ----
  02def33a82a56a833dbb9c81b36b4fe6  gcc/timevar.def
  39583dacf15fae594898b65a054da27f  gcc/timevar.h
  610597527691a71e6efbabe2eb667519  gcc/tlink.c
! f1b9c7911ab550bce8c9323183428d6b  gcc/toplev.c
  c3e9cb4d79158c9d4373bf9f04b642a2  gcc/toplev.h
  88d47eb6984b1c342e82e3a075dee56e  gcc/tracer.c
  beeb838b6a8b1de3d650f8a6473c851f  gcc/trans-mem.c
*************** f242bcc9e019bd65499ed02bbdc04207  gcc/tr
*** 52235,52253 ****
  6dfe265c99c28bf824e45cc0e928d6d4  gcc/tree-affine.h
  60574cf7cbc2685ed641d917a92bbeba  gcc/tree-browser.c
  7d9e5c2c159dab95b024e66b72fafade  gcc/tree-browser.def
! 52e81cece35aca1c5386e2717c3043d4  gcc/tree-call-cdce.c
! 8781caef5599ff0627495265c6d5a894  gcc/tree-cfg.c
  e2fb6ab59dfa38cf567381d5de6cebbd  gcc/tree-cfg.h
  2c018fcde361a9be2fb71797b3d21cf4  gcc/tree-cfgcleanup.c
  cd8285c7fa2dff58a664c24cb7d72452  gcc/tree-cfgcleanup.h
! 7f09aea3497ab36d0a995d1c8c81d973  gcc/tree-chkp-opt.c
! 454f72a54338fe7e3cbefd99722adeb8  gcc/tree-chkp.c
  afca43a41fd6e7920fa4404477919548  gcc/tree-chkp.h
! 6e6794f1c9717a7f7edee1c50ce238c8  gcc/tree-chrec.c
  f1271a4c583fb31ffb253b63bf223aec  gcc/tree-chrec.h
  52b5381f503bfc832d09b2266b7a0054  gcc/tree-complex.c
  7a92432a403654536cafe1143f0dabb1  gcc/tree-core.h
! 69a33c580e226e4da71164ff771f8852  gcc/tree-data-ref.c
  965a1a11be8d3a6abe6e477c44ebf1d7  gcc/tree-data-ref.h
  126503575134c87d19540481bb5f0726  gcc/tree-dfa.c
  40c0fde0870f0a9908bf3d9e09175d39  gcc/tree-dfa.h
--- 52582,52600 ----
  6dfe265c99c28bf824e45cc0e928d6d4  gcc/tree-affine.h
  60574cf7cbc2685ed641d917a92bbeba  gcc/tree-browser.c
  7d9e5c2c159dab95b024e66b72fafade  gcc/tree-browser.def
! e78adc565fb9476663e496d881567ec7  gcc/tree-call-cdce.c
! 03bb5d5fe7113ef086e3c3cd1157c4e0  gcc/tree-cfg.c
  e2fb6ab59dfa38cf567381d5de6cebbd  gcc/tree-cfg.h
  2c018fcde361a9be2fb71797b3d21cf4  gcc/tree-cfgcleanup.c
  cd8285c7fa2dff58a664c24cb7d72452  gcc/tree-cfgcleanup.h
! 5a32d3ef4ca145648448b11f489c8ddc  gcc/tree-chkp-opt.c
! 25e1351697744dfe21edf90de2cd0c81  gcc/tree-chkp.c
  afca43a41fd6e7920fa4404477919548  gcc/tree-chkp.h
! f215eae8be0aafafaf718174ae72e99e  gcc/tree-chrec.c
  f1271a4c583fb31ffb253b63bf223aec  gcc/tree-chrec.h
  52b5381f503bfc832d09b2266b7a0054  gcc/tree-complex.c
  7a92432a403654536cafe1143f0dabb1  gcc/tree-core.h
! d2170997fe7d554e9f2d1953fd5703d2  gcc/tree-data-ref.c
  965a1a11be8d3a6abe6e477c44ebf1d7  gcc/tree-data-ref.h
  126503575134c87d19540481bb5f0726  gcc/tree-dfa.c
  40c0fde0870f0a9908bf3d9e09175d39  gcc/tree-dfa.h
*************** f1271a4c583fb31ffb253b63bf223aec  gcc/tr
*** 52255,52273 ****
  8f214d77d1ea8631ae83aabe1246b99c  gcc/tree-diagnostic.h
  1f32c65edbf5fb5abc6da7355a5ce802  gcc/tree-dump.c
  b5a85421dc2e95629798fea9169c034a  gcc/tree-dump.h
! 7baecd2aac9f0b63a7824add0e65644a  gcc/tree-eh.c
  e7357477d6dd5ecc872096025db0c187  gcc/tree-eh.h
  f20097df896a6b83fa1afb7b50fed939  gcc/tree-emutls.c
  dffdefd7e0250ee886f32492046f4844  gcc/tree-hasher.h
  4b804f75b87cd984a01836701a30dc12  gcc/tree-if-conv.c
! 9ad2aa103361743dc3d31264127be043  gcc/tree-inline.c
! c60d96a93cf29457f9e34476e0d12d79  gcc/tree-inline.h
  98b8ebbf5a13f5d83c72a0c936a4b401  gcc/tree-into-ssa.c
  8b617746a33769bcf7601a0ad81cf23e  gcc/tree-into-ssa.h
  f8f490a2171e0556bd6bbfbf77417e19  gcc/tree-iterator.c
  0ccb05b6605cb7d2376b2e5f19041f22  gcc/tree-iterator.h
! 0a64502f3bd845d490c5e574edd6690d  gcc/tree-loop-distribution.c
! 6aefa028c358d3bb194613635a50a54a  gcc/tree-nested.c
  520ed1c82085e4c3f5e637bc176592de  gcc/tree-nested.h
  ff78a2b956781bfa246f936b136a7d93  gcc/tree-nrv.c
  c7cb82b9acdf5a01359dfdde7b1d589a  gcc/tree-object-size.c
--- 52602,52620 ----
  8f214d77d1ea8631ae83aabe1246b99c  gcc/tree-diagnostic.h
  1f32c65edbf5fb5abc6da7355a5ce802  gcc/tree-dump.c
  b5a85421dc2e95629798fea9169c034a  gcc/tree-dump.h
! 866b98116a1e6419c9c87e9a59bb3108  gcc/tree-eh.c
  e7357477d6dd5ecc872096025db0c187  gcc/tree-eh.h
  f20097df896a6b83fa1afb7b50fed939  gcc/tree-emutls.c
  dffdefd7e0250ee886f32492046f4844  gcc/tree-hasher.h
  4b804f75b87cd984a01836701a30dc12  gcc/tree-if-conv.c
! 6fa4e7f18648019c793254e0d563988a  gcc/tree-inline.c
! 4e18705e50dfac9c68b59bc4594ae166  gcc/tree-inline.h
  98b8ebbf5a13f5d83c72a0c936a4b401  gcc/tree-into-ssa.c
  8b617746a33769bcf7601a0ad81cf23e  gcc/tree-into-ssa.h
  f8f490a2171e0556bd6bbfbf77417e19  gcc/tree-iterator.c
  0ccb05b6605cb7d2376b2e5f19041f22  gcc/tree-iterator.h
! bab095d213ce12330715eda187dc6550  gcc/tree-loop-distribution.c
! 0eadf82f91b10f15f85b8967efd22517  gcc/tree-nested.c
  520ed1c82085e4c3f5e637bc176592de  gcc/tree-nested.h
  ff78a2b956781bfa246f936b136a7d93  gcc/tree-nrv.c
  c7cb82b9acdf5a01359dfdde7b1d589a  gcc/tree-object-size.c
*************** df676b935cd9953017cf760735cb6bed  gcc/tr
*** 52279,52288 ****
  f7740ed423524819a13383b22733aa44  gcc/tree-pass.h
  847ae30a26b2e24e4a4d15080627c866  gcc/tree-phinodes.c
  a2b8be62c65245fe4dbdbf48fb94b4b8  gcc/tree-phinodes.h
! e8dc2ef08537c036bcbc6e19cd546a92  gcc/tree-predcom.c
  23063fd6d1165991824e519f53c6b978  gcc/tree-pretty-print.c
  012a08b509af2af89d176f9afd91d742  gcc/tree-pretty-print.h
! 6ab10b5cdfe7c6e3d23fb446c019158b  gcc/tree-profile.c
  7950dc9efe213a11698aa568b68dba72  gcc/tree-scalar-evolution.c
  0a30d2f901eedbf84f6fc4aa167cc770  gcc/tree-scalar-evolution.h
  63cd9e795495c7ea303a2a59c82c4a45  gcc/tree-sra.c
--- 52626,52635 ----
  f7740ed423524819a13383b22733aa44  gcc/tree-pass.h
  847ae30a26b2e24e4a4d15080627c866  gcc/tree-phinodes.c
  a2b8be62c65245fe4dbdbf48fb94b4b8  gcc/tree-phinodes.h
! b38a2e4e500303be334be9c605e2cabd  gcc/tree-predcom.c
  23063fd6d1165991824e519f53c6b978  gcc/tree-pretty-print.c
  012a08b509af2af89d176f9afd91d742  gcc/tree-pretty-print.h
! a1a6a38f885419a6775f74d432b65f02  gcc/tree-profile.c
  7950dc9efe213a11698aa568b68dba72  gcc/tree-scalar-evolution.c
  0a30d2f901eedbf84f6fc4aa167cc770  gcc/tree-scalar-evolution.h
  63cd9e795495c7ea303a2a59c82c4a45  gcc/tree-sra.c
*************** ef11cb4378e75d19b41ddf0e0147781d  gcc/tr
*** 52304,52345 ****
  1630fe605b5b6bf0cbb4b22860930d8d  gcc/tree-ssa-live.c
  785a288e802c81d0d93faaab5b8ed23d  gcc/tree-ssa-live.h
  233ef46708a1fd344ff5e9af4eed2fd8  gcc/tree-ssa-loop-ch.c
! b96f336f2d2a4969cac141f76107fa85  gcc/tree-ssa-loop-im.c
  9a0cfa106d91a1d71984addd8ae1849c  gcc/tree-ssa-loop-ivcanon.c
! c39ee9c000b27e6489e6846a4aeac3d3  gcc/tree-ssa-loop-ivopts.c
  d1c21aa39a8915a8534cbb56bd874120  gcc/tree-ssa-loop-ivopts.h
  39ad6122d8a13b09c5aaa8048171c0d0  gcc/tree-ssa-loop-manip.c
  f8c807fd578b0d10eeaa9c42dda96141  gcc/tree-ssa-loop-manip.h
  0ac21478f3b232984a23f449922ea043  gcc/tree-ssa-loop-niter.c
  2c11b23b57c3a2806a4a9646518324f4  gcc/tree-ssa-loop-niter.h
! 112f81a5b979a334e76d3c8b1189fbc7  gcc/tree-ssa-loop-prefetch.c
  9aa4e084725ec91fd63e0dd510d9af9a  gcc/tree-ssa-loop-unswitch.c
  322dd4e0c5d4a6db9fc15baf24e6e3e2  gcc/tree-ssa-loop.c
  3a30d070906d5f236060d468d5a8035b  gcc/tree-ssa-loop.h
! 88123d8155bff2ab85c6ef8b6573c1c7  gcc/tree-ssa-math-opts.c
  d96698e3cacb09616d77632a6a67cdad  gcc/tree-ssa-operands.c
  a59f49560dfcdb9638878f1a8fee0ae1  gcc/tree-ssa-operands.h
  76d2e3c18c163a49c75e0593647e4449  gcc/tree-ssa-phiopt.c
  da848edf835c88b1fbfc7394660f0b25  gcc/tree-ssa-phiprop.c
! 1672b2db13dcefdea0d64cda9ced203f  gcc/tree-ssa-pre.c
  04a19ca6a46fb743663742a6d09d70d9  gcc/tree-ssa-propagate.c
  1d4916d6a91480afb813bd74af4bbe92  gcc/tree-ssa-propagate.h
! 853e7a7e6df02e052e24c85760247dc7  gcc/tree-ssa-reassoc.c
! a0c698babed931f788852f483e46223b  gcc/tree-ssa-sccvn.c
  b42a1186d296df90103546ced447f858  gcc/tree-ssa-sccvn.h
  6663d9bf83807058be78203635c0de96  gcc/tree-ssa-sink.c
! 65409ab9527b3299a8b572e89748d5db  gcc/tree-ssa-strlen.c
! e41b02404b08195b4c981422c8711892  gcc/tree-ssa-structalias.c
! 01e014783f365a87eccc3d505534ac3d  gcc/tree-ssa-tail-merge.c
  6a77691d1fb2a5b12cf503b3bf58439c  gcc/tree-ssa-ter.c
  13dbd5bf9605e518725670d8eb521194  gcc/tree-ssa-ter.h
! 161dc0f109259dad1b338f00b60f9bf5  gcc/tree-ssa-threadedge.c
  49a3b60521278d0c45b9be3e06e3c920  gcc/tree-ssa-threadedge.h
  6b0fe7b7bec125be10ab0c25d17fb3cf  gcc/tree-ssa-threadupdate.c
  ff24dbb48d4e2449fa9bee2136643f54  gcc/tree-ssa-threadupdate.h
  c217d2d5d8998a91987448aeb5ed9a82  gcc/tree-ssa-uncprop.c
! 4048e90db6282ef3feb696a6fce82056  gcc/tree-ssa-uninit.c
! 09cd8dee84f6553a1f6fe67f22f37958  gcc/tree-ssa.c
  39d9c89c9806851ec6d163f79092e19a  gcc/tree-ssa.h
  f6de1ad5ebb4114fbeb91658b375e94f  gcc/tree-ssanames.c
  381300f399c718dcfeabfe039cc2eac6  gcc/tree-ssanames.h
--- 52651,52692 ----
  1630fe605b5b6bf0cbb4b22860930d8d  gcc/tree-ssa-live.c
  785a288e802c81d0d93faaab5b8ed23d  gcc/tree-ssa-live.h
  233ef46708a1fd344ff5e9af4eed2fd8  gcc/tree-ssa-loop-ch.c
! d06868e7de992ca04f09ac6b73e0788c  gcc/tree-ssa-loop-im.c
  9a0cfa106d91a1d71984addd8ae1849c  gcc/tree-ssa-loop-ivcanon.c
! 82c4c96c63c28c54161392caa63652fb  gcc/tree-ssa-loop-ivopts.c
  d1c21aa39a8915a8534cbb56bd874120  gcc/tree-ssa-loop-ivopts.h
  39ad6122d8a13b09c5aaa8048171c0d0  gcc/tree-ssa-loop-manip.c
  f8c807fd578b0d10eeaa9c42dda96141  gcc/tree-ssa-loop-manip.h
  0ac21478f3b232984a23f449922ea043  gcc/tree-ssa-loop-niter.c
  2c11b23b57c3a2806a4a9646518324f4  gcc/tree-ssa-loop-niter.h
! 92e7b8886ac7087ea2f2ede1ff141c6d  gcc/tree-ssa-loop-prefetch.c
  9aa4e084725ec91fd63e0dd510d9af9a  gcc/tree-ssa-loop-unswitch.c
  322dd4e0c5d4a6db9fc15baf24e6e3e2  gcc/tree-ssa-loop.c
  3a30d070906d5f236060d468d5a8035b  gcc/tree-ssa-loop.h
! 768b7334b5acc595dad955400edd5c24  gcc/tree-ssa-math-opts.c
  d96698e3cacb09616d77632a6a67cdad  gcc/tree-ssa-operands.c
  a59f49560dfcdb9638878f1a8fee0ae1  gcc/tree-ssa-operands.h
  76d2e3c18c163a49c75e0593647e4449  gcc/tree-ssa-phiopt.c
  da848edf835c88b1fbfc7394660f0b25  gcc/tree-ssa-phiprop.c
! 785002446b6717c8b0b6ad2420eaebe9  gcc/tree-ssa-pre.c
  04a19ca6a46fb743663742a6d09d70d9  gcc/tree-ssa-propagate.c
  1d4916d6a91480afb813bd74af4bbe92  gcc/tree-ssa-propagate.h
! 6603222e5bfa9a45146845f48b52fffe  gcc/tree-ssa-reassoc.c
! 426e1e72dc5c9e7aa041052bb24d28a9  gcc/tree-ssa-sccvn.c
  b42a1186d296df90103546ced447f858  gcc/tree-ssa-sccvn.h
  6663d9bf83807058be78203635c0de96  gcc/tree-ssa-sink.c
! d712da5e07a6b32dd6adc8c97f1ee0d0  gcc/tree-ssa-strlen.c
! 4fe1be29549d3098f69fcaa6fa10bc15  gcc/tree-ssa-structalias.c
! a521b391a7009282d5346ecb2454db9e  gcc/tree-ssa-tail-merge.c
  6a77691d1fb2a5b12cf503b3bf58439c  gcc/tree-ssa-ter.c
  13dbd5bf9605e518725670d8eb521194  gcc/tree-ssa-ter.h
! 7338662856d7362cf91f7fca33e008ff  gcc/tree-ssa-threadedge.c
  49a3b60521278d0c45b9be3e06e3c920  gcc/tree-ssa-threadedge.h
  6b0fe7b7bec125be10ab0c25d17fb3cf  gcc/tree-ssa-threadupdate.c
  ff24dbb48d4e2449fa9bee2136643f54  gcc/tree-ssa-threadupdate.h
  c217d2d5d8998a91987448aeb5ed9a82  gcc/tree-ssa-uncprop.c
! de60049ad2b83be4b1e2b5c299f73cef  gcc/tree-ssa-uninit.c
! deadb068751a58ed6e6f0b5470e1a153  gcc/tree-ssa.c
  39d9c89c9806851ec6d163f79092e19a  gcc/tree-ssa.h
  f6de1ad5ebb4114fbeb91658b375e94f  gcc/tree-ssanames.c
  381300f399c718dcfeabfe039cc2eac6  gcc/tree-ssanames.h
*************** b4fb036bbd93781343e1ccd5a3ddf61c  gcc/tr
*** 52351,52380 ****
  483d95927517fbe03e0f08e632717a48  gcc/tree-streamer.h
  33cdc129e6789ba93a67254346d6a71f  gcc/tree-switch-conversion.c
  9b958bc38f56d1a0d82986d5203e53cf  gcc/tree-tailcall.c
! d6e6d4988bc01b2a441218e918cefe5f  gcc/tree-vect-data-refs.c
  4dc1bc83ace380b24de4d2211762ab95  gcc/tree-vect-generic.c
! 397c9113ec9062fcbae4f5034a83354f  gcc/tree-vect-loop-manip.c
  d46a16ac67ad3c8071dea8b16226d941  gcc/tree-vect-loop.c
  052e18d386adf0c55d60a4bf881c7b8d  gcc/tree-vect-patterns.c
  464f5e5e5b0be806fbc23d637e74db98  gcc/tree-vect-slp.c
  96fd3e7bbcae78c3667155ea2833dc70  gcc/tree-vect-stmts.c
  7386b843e36e5386b183ded60d6b68bd  gcc/tree-vectorizer.c
  0eac16b82bdef4054b71d4123dab2ccd  gcc/tree-vectorizer.h
! 58e4dd91abd5c1a884887b62b4fb1d30  gcc/tree-vrp.c
  cfc61c839a405d7b71e5b625c972bd21  gcc/tree.c
  f7de16c46209940608cbed33a0a06376  gcc/tree.def
  c3e3c038371e526c67ccba883e4123ae  gcc/tree.h
  cace18a7ab81cbeabc9c78b632d4dc16  gcc/treestruct.def
! 0fd44a0608f48a6b0a9e513c3ee75421  gcc/tsan.c
  b0f430e5be31fdcd3b3bcaa650a66c57  gcc/tsan.h
  ce33c51b11fa0bcf28a6fef0b45e6a6b  gcc/tsystem.h
  de2daf58e365fe2a48e98494585c4534  gcc/typeclass.h
  10732b9b25f2b33cf6915f230032c60f  gcc/typed-splay-tree.h
! 1b828541ce5ca869f602b86d8cfc6639  gcc/ubsan.c
  10800b6daf82b55573af5d0038a35f16  gcc/ubsan.h
  05e35041a6a3becd9bfa121294260ba8  gcc/valtrack.c
  2903bf55b0ed8c4c030b8a33ae7f7137  gcc/valtrack.h
! 55edc710428f9b3989e8bfe07ebe4daf  gcc/value-prof.c
  00f6b8a1bacc500a9b58d35b172bd3d4  gcc/value-prof.h
  1d2f7eb1753d6c80eaa87ea0e0757d13  gcc/var-tracking.c
  313e03a54bd7b093045135301b2c8303  gcc/varasm.c
--- 52698,52727 ----
  483d95927517fbe03e0f08e632717a48  gcc/tree-streamer.h
  33cdc129e6789ba93a67254346d6a71f  gcc/tree-switch-conversion.c
  9b958bc38f56d1a0d82986d5203e53cf  gcc/tree-tailcall.c
! 6967f5dae4c9ac671ac65c7a752a0d83  gcc/tree-vect-data-refs.c
  4dc1bc83ace380b24de4d2211762ab95  gcc/tree-vect-generic.c
! 70e32aed464b3eedbafc3ddf0e40f53e  gcc/tree-vect-loop-manip.c
  d46a16ac67ad3c8071dea8b16226d941  gcc/tree-vect-loop.c
  052e18d386adf0c55d60a4bf881c7b8d  gcc/tree-vect-patterns.c
  464f5e5e5b0be806fbc23d637e74db98  gcc/tree-vect-slp.c
  96fd3e7bbcae78c3667155ea2833dc70  gcc/tree-vect-stmts.c
  7386b843e36e5386b183ded60d6b68bd  gcc/tree-vectorizer.c
  0eac16b82bdef4054b71d4123dab2ccd  gcc/tree-vectorizer.h
! 72887466225c9ce09ee5ec7bb37fa619  gcc/tree-vrp.c
  cfc61c839a405d7b71e5b625c972bd21  gcc/tree.c
  f7de16c46209940608cbed33a0a06376  gcc/tree.def
  c3e3c038371e526c67ccba883e4123ae  gcc/tree.h
  cace18a7ab81cbeabc9c78b632d4dc16  gcc/treestruct.def
! 638e4f5384b73114384b940b265b2015  gcc/tsan.c
  b0f430e5be31fdcd3b3bcaa650a66c57  gcc/tsan.h
  ce33c51b11fa0bcf28a6fef0b45e6a6b  gcc/tsystem.h
  de2daf58e365fe2a48e98494585c4534  gcc/typeclass.h
  10732b9b25f2b33cf6915f230032c60f  gcc/typed-splay-tree.h
! f7893ef8cc319b88f5c84d6fb3929666  gcc/ubsan.c
  10800b6daf82b55573af5d0038a35f16  gcc/ubsan.h
  05e35041a6a3becd9bfa121294260ba8  gcc/valtrack.c
  2903bf55b0ed8c4c030b8a33ae7f7137  gcc/valtrack.h
! 2f75f47fe51d91f71ec109f5e71ce5cb  gcc/value-prof.c
  00f6b8a1bacc500a9b58d35b172bd3d4  gcc/value-prof.h
  1d2f7eb1753d6c80eaa87ea0e0757d13  gcc/var-tracking.c
  313e03a54bd7b093045135301b2c8303  gcc/varasm.c
*************** a6ba50a06d56ab1547b581447627c124  gcc/wi
*** 52396,52406 ****
  e4debe67922b4d5dfaebcffc93db4c88  gcc/xcoff.h
  ae782b20e65b91b020560956bee4480b  gcc/xcoffout.c
  7913404fae11483f78d1e14688f4592c  gcc/xcoffout.h
! e55eb058df316f44e09de56b6c57eab1  gnattools/ChangeLog
  692322cbac4dbf19144764e4486b9f54  gnattools/Makefile.in
  41b96b7921d11e52b1d8465ea57136ad  gnattools/configure
  a73c18d8f44ab8bc3e71c3d530fa603e  gnattools/configure.ac
! 78b6c28e960008919df6178357e7dda0  gotools/ChangeLog
  f94b48bc3593ed09d6e2588fea0c47e0  gotools/Makefile.am
  2ff781c9acd2d56facfcd0d537b17141  gotools/Makefile.in
  7e23031e2e274aaa07b61c1e8f18dc99  gotools/README
--- 52743,52753 ----
  e4debe67922b4d5dfaebcffc93db4c88  gcc/xcoff.h
  ae782b20e65b91b020560956bee4480b  gcc/xcoffout.c
  7913404fae11483f78d1e14688f4592c  gcc/xcoffout.h
! fc72338ba22300c12892cd3747874c54  gnattools/ChangeLog
  692322cbac4dbf19144764e4486b9f54  gnattools/Makefile.in
  41b96b7921d11e52b1d8465ea57136ad  gnattools/configure
  a73c18d8f44ab8bc3e71c3d530fa603e  gnattools/configure.ac
! 9ef15743b0d4be306e22532cdccd3bea  gotools/ChangeLog
  f94b48bc3593ed09d6e2588fea0c47e0  gotools/Makefile.am
  2ff781c9acd2d56facfcd0d537b17141  gotools/Makefile.in
  7e23031e2e274aaa07b61c1e8f18dc99  gotools/README
*************** c4e8176c1964a5ebe0a55900f2141299  gotool
*** 52412,52418 ****
  eb2aeb3a6cffe7b26a8f1c8a2da23dcd  gotools/gofmt.1
  59530bdf33659b29e73d4adb9f9f6552  include/COPYING
  d32239bcb673463ab874e80d47fae504  include/COPYING3
! fa7377a2f7845d30f7e40c62ec9f3352  include/ChangeLog
  4263432a72ff47ed8bf420208ee7eea5  include/ChangeLog-9103
  a43d76108493b20da790f953f829c6a5  include/ChangeLog.jit
  171a864be3edfa751919fdfd5a2b2f30  include/ansidecl.h
--- 52759,52765 ----
  eb2aeb3a6cffe7b26a8f1c8a2da23dcd  gotools/gofmt.1
  59530bdf33659b29e73d4adb9f9f6552  include/COPYING
  d32239bcb673463ab874e80d47fae504  include/COPYING3
! f3dd18aa32aeecf126e534c1fe5b8971  include/ChangeLog
  4263432a72ff47ed8bf420208ee7eea5  include/ChangeLog-9103
  a43d76108493b20da790f953f829c6a5  include/ChangeLog.jit
  171a864be3edfa751919fdfd5a2b2f30  include/ansidecl.h
*************** e34d525d7faceda0dd5cb3eae49c1548  includ
*** 52452,52458 ****
  0294cecbb1f66d640ccba3a5d862d05b  include/xregex2.h
  f648a66ed08e079e26a24c4346a3ba03  include/xtensa-config.h
  361482dd6b5b5eb7090fff3986fba68a  install-sh
! 6709b7c9549223f3ce30a176464803e5  intl/ChangeLog
  cad1d6fab2274517783de7433c0faa74  intl/Makefile.in
  6ec998bb4716c744bf8185e607f69301  intl/README
  76ca170a525d5b84d90f0478fe788931  intl/VERSION
--- 52799,52805 ----
  0294cecbb1f66d640ccba3a5d862d05b  include/xregex2.h
  f648a66ed08e079e26a24c4346a3ba03  include/xtensa-config.h
  361482dd6b5b5eb7090fff3986fba68a  install-sh
! 70a03dbded73db4d85df617a8f0779f2  intl/ChangeLog
  cad1d6fab2274517783de7433c0faa74  intl/Makefile.in
  6ec998bb4716c744bf8185e607f69301  intl/README
  76ca170a525d5b84d90f0478fe788931  intl/VERSION
*************** d50a8c6c5b41089930accbdce767d3c0  intl/p
*** 52494,52505 ****
  b4758a0194e3e41362b939911472ce62  intl/relocatable.c
  bedade7bcfc3bc5eb09a2c6844f637f3  intl/relocatable.h
  43f287d082528203fc85c1d2d81bf30d  intl/textdomain.c
! d68481f398bfa51e73ea43565a8528d1  libada/ChangeLog
  23431a8157594a82b6d6e6ba4f2ee7ba  libada/Makefile.in
  68395a53adb86132c753b865a97f49e5  libada/configure
  e05623ca0be117eb9a5d4bb2008fb09c  libada/configure.ac
  46d3fe6da7a771cc2d5420c4137a6861  libatomic/.gitignore
! 082378bb99fec2c2e8dd8dffccce2ce0  libatomic/ChangeLog
  8996f665152f36a53464c30cbff03a9e  libatomic/Makefile.am
  f2aab8f3131149baace703d7539dd126  libatomic/Makefile.in
  f7853b06953072a9987a45a5b00782d6  libatomic/acinclude.m4
--- 52841,52852 ----
  b4758a0194e3e41362b939911472ce62  intl/relocatable.c
  bedade7bcfc3bc5eb09a2c6844f637f3  intl/relocatable.h
  43f287d082528203fc85c1d2d81bf30d  intl/textdomain.c
! e53e5fa85fab8e4f8291f3d0841f625a  libada/ChangeLog
  23431a8157594a82b6d6e6ba4f2ee7ba  libada/Makefile.in
  68395a53adb86132c753b865a97f49e5  libada/configure
  e05623ca0be117eb9a5d4bb2008fb09c  libada/configure.ac
  46d3fe6da7a771cc2d5420c4137a6861  libatomic/.gitignore
! ac7c579336e1937d03feb92dfc5bd22e  libatomic/ChangeLog
  8996f665152f36a53464c30cbff03a9e  libatomic/Makefile.am
  f2aab8f3131149baace703d7539dd126  libatomic/Makefile.in
  f7853b06953072a9987a45a5b00782d6  libatomic/acinclude.m4
*************** cbeb120f3cb8c120de8a74a3dee23e10  libato
*** 52507,52513 ****
  e143acd5b2c5b05cc850e294c26cb1c6  libatomic/auto-config.h.in
  c77a380c7c7be939a4e5ac6c3d020cf6  libatomic/cas_n.c
  100355d478e4b048b44e1a3566fae65c  libatomic/config/arm/arm-config.h
! 245315155acf6ade4342e6e157df386e  libatomic/config/arm/exch_n.c
  6b272347b6495b829ff036ddf4d65e93  libatomic/config/arm/host-config.h
  db43cf5a187a91251ef3198570679f95  libatomic/config/ia64/host-config.h
  c582fae44e9352139df88c3e869ecbc3  libatomic/config/linux/arm/host-config.h
--- 52854,52860 ----
  e143acd5b2c5b05cc850e294c26cb1c6  libatomic/auto-config.h.in
  c77a380c7c7be939a4e5ac6c3d020cf6  libatomic/cas_n.c
  100355d478e4b048b44e1a3566fae65c  libatomic/config/arm/arm-config.h
! 551413876a4336e62a07b4e6f83a5e3c  libatomic/config/arm/exch_n.c
  6b272347b6495b829ff036ddf4d65e93  libatomic/config/arm/host-config.h
  db43cf5a187a91251ef3198570679f95  libatomic/config/ia64/host-config.h
  c582fae44e9352139df88c3e869ecbc3  libatomic/config/linux/arm/host-config.h
*************** c03a072efac9b30f8f8429ac52fd246b  libato
*** 52581,52587 ****
  8a7308fda7ed1543cb9e3be0f8e47bce  libatomic/testsuite/libatomic.c/atomic-store-5.c
  40618200985a15bcba64f871863da498  libatomic/testsuite/libatomic.c/c.exp
  97b0c9cdfcb733664bdf4efe0f5dc449  libatomic/testsuite/libatomic.c/generic-2.c
! a3f52f84b280cb83d387f44053a32875  libbacktrace/ChangeLog
  eb3a88b53140eb234a99a4b3a55e56bf  libbacktrace/ChangeLog.jit
  c794c48bf2fbd5ee29733ac698f1838b  libbacktrace/Makefile.am
  10502b510e3bb652e63f65eab6326c9d  libbacktrace/Makefile.in
--- 52928,52934 ----
  8a7308fda7ed1543cb9e3be0f8e47bce  libatomic/testsuite/libatomic.c/atomic-store-5.c
  40618200985a15bcba64f871863da498  libatomic/testsuite/libatomic.c/c.exp
  97b0c9cdfcb733664bdf4efe0f5dc449  libatomic/testsuite/libatomic.c/generic-2.c
! 6ca11ac387c73c315670752f16559a4e  libbacktrace/ChangeLog
  eb3a88b53140eb234a99a4b3a55e56bf  libbacktrace/ChangeLog.jit
  c794c48bf2fbd5ee29733ac698f1838b  libbacktrace/Makefile.am
  10502b510e3bb652e63f65eab6326c9d  libbacktrace/Makefile.in
*************** ad498528fecdbff6d6f48133f2ea65aa  libbac
*** 52612,52618 ****
  c74edc0237b059b4e285bd8e28a7ea98  libbacktrace/state.c
  32208a7e36d7fdfa5f56cefc0efc03b2  libbacktrace/stest.c
  6414d319baa03d40347ac5d0d4928f24  libbacktrace/unknown.c
! ea714ce94383bd8d3aa47ba867222f95  libcc1/ChangeLog
  42436e3dc549d6555a58651626425bf1  libcc1/Makefile.am
  9b1c517416247bed077f6542eb58fb63  libcc1/Makefile.in
  88f6ca6808c90ecedbfd1dac80714d9e  libcc1/aclocal.m4
--- 52959,52965 ----
  c74edc0237b059b4e285bd8e28a7ea98  libbacktrace/state.c
  32208a7e36d7fdfa5f56cefc0efc03b2  libbacktrace/stest.c
  6414d319baa03d40347ac5d0d4928f24  libbacktrace/unknown.c
! e9bc7e029dc6fb8320ee9ce770647d34  libcc1/ChangeLog
  42436e3dc549d6555a58651626425bf1  libcc1/Makefile.am
  9b1c517416247bed077f6542eb58fb63  libcc1/Makefile.in
  88f6ca6808c90ecedbfd1dac80714d9e  libcc1/aclocal.m4
*************** ec29c212d8342e282234e53f69b3f8e6  libcc1
*** 52635,52641 ****
  559bc993c28302af171c959deb0cce45  libcc1/plugin.cc
  595b9a542a8f80367ebbeecbc51b1ac7  libcc1/rpc.hh
  14f215429d450a743fce24b101552f3e  libcc1/status.hh
! 77c93ab0fcaad6b8b341b8ee292cac5c  libcilkrts/ChangeLog
  df0ff198f37089171b490f87912f9602  libcilkrts/Makefile.am
  ed1f9b951d32febb494035c07d5da44c  libcilkrts/Makefile.in
  4a307b1474cad63768b2ae0c183b6259  libcilkrts/README
--- 52982,52988 ----
  559bc993c28302af171c959deb0cce45  libcc1/plugin.cc
  595b9a542a8f80367ebbeecbc51b1ac7  libcc1/rpc.hh
  14f215429d450a743fce24b101552f3e  libcc1/status.hh
! 05be436c14129a36a087eab030d6ac3b  libcilkrts/ChangeLog
  df0ff198f37089171b490f87912f9602  libcilkrts/Makefile.am
  ed1f9b951d32febb494035c07d5da44c  libcilkrts/Makefile.in
  4a307b1474cad63768b2ae0c183b6259  libcilkrts/README
*************** d4a2c447aba3e1afe4e9522d132a2e62  libcil
*** 52743,52749 ****
  94c538f9a3100a27649a9dc4d63d1677  libcilkrts/runtime/sysdep.h
  ffd8820979e88b4845e4b6ae604d2fdf  libcilkrts/runtime/worker_mutex.c
  9af2df6acad19a2001c2b1f68f5f59be  libcilkrts/runtime/worker_mutex.h
! 4c40031248c45266a01684029e71b1fb  libcpp/ChangeLog
  2bd831b17997584e38305782cebe6948  libcpp/ChangeLog.jit
  d6bac27ed901db3b33a0f3a3c7a24ecc  libcpp/Makefile.in
  7307c791a8de641ef6dada9a179ece57  libcpp/aclocal.m4
--- 53090,53096 ----
  94c538f9a3100a27649a9dc4d63d1677  libcilkrts/runtime/sysdep.h
  ffd8820979e88b4845e4b6ae604d2fdf  libcilkrts/runtime/worker_mutex.c
  9af2df6acad19a2001c2b1f68f5f59be  libcilkrts/runtime/worker_mutex.h
! edb6c9f04d9d6eb042868a8b683ff5aa  libcpp/ChangeLog
  2bd831b17997584e38305782cebe6948  libcpp/ChangeLog.jit
  d6bac27ed901db3b33a0f3a3c7a24ecc  libcpp/Makefile.in
  7307c791a8de641ef6dada9a179ece57  libcpp/aclocal.m4
*************** e48415cf03d09cea7adee0f3511f26b9  libcpp
*** 52765,52776 ****
  03386d55bf76adddaf87568de3091e89  libcpp/init.c
  2a37d5645af605a7c199c2019fc8e7ac  libcpp/internal.h
  204b2ce1dce9e3e9b8d73e06e8afe4d6  libcpp/lex.c
! 131c0bc663ea3ae4b1dc51b3d346dfe2  libcpp/line-map.c
  9165063770fb3cf0a84aabfd9af700c4  libcpp/macro.c
  1d651323454588d5ac3192c963d238b9  libcpp/makeucnid.c
  49c53ce2919b867b1b9d35fe5c26c6dd  libcpp/mkdeps.c
  6487368e1472b8cb5f645a9e97ef5cf6  libcpp/pch.c
! 889b52115db4e1501bb9060e1f929fdc  libcpp/po/ChangeLog
  101efbaa2450173d329333a67141a247  libcpp/po/be.gmo
  c2be8180550596c4811c937d293aca92  libcpp/po/be.po
  db5b3af91d18380e7a9ecbc08056e193  libcpp/po/ca.gmo
--- 53112,53123 ----
  03386d55bf76adddaf87568de3091e89  libcpp/init.c
  2a37d5645af605a7c199c2019fc8e7ac  libcpp/internal.h
  204b2ce1dce9e3e9b8d73e06e8afe4d6  libcpp/lex.c
! a274d691bf526941838fb42bd995371f  libcpp/line-map.c
  9165063770fb3cf0a84aabfd9af700c4  libcpp/macro.c
  1d651323454588d5ac3192c963d238b9  libcpp/makeucnid.c
  49c53ce2919b867b1b9d35fe5c26c6dd  libcpp/mkdeps.c
  6487368e1472b8cb5f645a9e97ef5cf6  libcpp/pch.c
! 60dc662b6f723bdce9e3b03cd41fe362  libcpp/po/ChangeLog
  101efbaa2450173d329333a67141a247  libcpp/po/be.gmo
  c2be8180550596c4811c937d293aca92  libcpp/po/be.po
  db5b3af91d18380e7a9ecbc08056e193  libcpp/po/ca.gmo
*************** c18e29874a5ea89f5716b740bd1be354  libcpp
*** 52820,52826 ****
  cba4c6c6128f95fc36dbe86aaca44f0b  libcpp/ucnid.h
  c9110040e0f379fdd157cf4f47d49dd9  libcpp/ucnid.tab
  a6c2b3de06c7424706b16f4c206396a1  libdecnumber/.gitignore
! 80601d6e2f5771774d21b54c65a9d9c3  libdecnumber/ChangeLog
  2bd831b17997584e38305782cebe6948  libdecnumber/ChangeLog.jit
  6486a184d61fdeeaa63ff335e5ed0491  libdecnumber/Makefile.in
  2746a1155d319a2cda823ee5b58921ce  libdecnumber/aclocal.m4
--- 53167,53173 ----
  cba4c6c6128f95fc36dbe86aaca44f0b  libcpp/ucnid.h
  c9110040e0f379fdd157cf4f47d49dd9  libcpp/ucnid.tab
  a6c2b3de06c7424706b16f4c206396a1  libdecnumber/.gitignore
! a530513989f84079f40546f9299706eb  libdecnumber/ChangeLog
  2bd831b17997584e38305782cebe6948  libdecnumber/ChangeLog.jit
  6486a184d61fdeeaa63ff335e5ed0491  libdecnumber/Makefile.in
  2746a1155d319a2cda823ee5b58921ce  libdecnumber/aclocal.m4
*************** a97c47969dfc92a7666dfe3c2e1e1448  libdec
*** 52883,52889 ****
  794b407db90b31cc93f5a7a7570e62de  libdecnumber/dpd/decimal64.c
  9ac3897c9a40e31bff405af880fafb97  libdecnumber/dpd/decimal64.h
  0f6db29710e7075c2fd62bc4478b3b8d  libdecnumber/dpd/decimal64Symbols.h
! 54a9f53ea3864c8367b7659c4e6e2097  libffi/ChangeLog
  ba66fc19311348d373ec271be939a659  libffi/ChangeLog.libffi
  fbbc216bc25d759a72ea3e6d734af56b  libffi/ChangeLog.libgcj
  d946d2b97454ad50a1dbfbf48923c5be  libffi/ChangeLog.v1
--- 53230,53236 ----
  794b407db90b31cc93f5a7a7570e62de  libdecnumber/dpd/decimal64.c
  9ac3897c9a40e31bff405af880fafb97  libdecnumber/dpd/decimal64.h
  0f6db29710e7075c2fd62bc4478b3b8d  libdecnumber/dpd/decimal64Symbols.h
! 5c6513be7c11959fc5d1f2e3d99b7635  libffi/ChangeLog
  ba66fc19311348d373ec271be939a659  libffi/ChangeLog.libffi
  fbbc216bc25d759a72ea3e6d734af56b  libffi/ChangeLog.libgcj
  d946d2b97454ad50a1dbfbf48923c5be  libffi/ChangeLog.v1
*************** f0aff67c9a90cc128022ee5b0055b968  libffi
*** 52896,52902 ****
  7e596b9d2421204d33c50e2a7d0f8e01  libffi/configure
  1c8febbea269e3325e750f3f577a85be  libffi/configure.ac
  84d2d9f2ebfac28a1697db5dc956a25b  libffi/configure.host
! 8d63ade0eae2a7dafb079aae822b9fb8  libffi/doc/libffi.info
  cfec4a5a1bb5d36550e15ac051c14148  libffi/doc/libffi.texi
  2969ffc23f66d73392207633f25ab252  libffi/doc/version.texi
  0323e665fa56b34846890cfcb17772c4  libffi/fficonfig.h.in
--- 53243,53249 ----
  7e596b9d2421204d33c50e2a7d0f8e01  libffi/configure
  1c8febbea269e3325e750f3f577a85be  libffi/configure.ac
  84d2d9f2ebfac28a1697db5dc956a25b  libffi/configure.host
! 06de21005f93a51347da09be8022b83b  libffi/doc/libffi.info
  cfec4a5a1bb5d36550e15ac051c14148  libffi/doc/libffi.texi
  2969ffc23f66d73392207633f25ab252  libffi/doc/version.texi
  0323e665fa56b34846890cfcb17772c4  libffi/fficonfig.h.in
*************** d47c79b281339983862a8e52d8c73f0f  libffi
*** 53240,53253 ****
  291be426192f460f6a07dfe1c96ab094  libffi/testsuite/libffi.special/special.exp
  93fc3ea311b79f64004992807ce75d1e  libffi/testsuite/libffi.special/unwindtest.cc
  185d0795017fbbe253a13db8e34085f9  libffi/testsuite/libffi.special/unwindtest_ffi_call.cc
! 6c4e461e4a6cdf3c38e04eab5ae4b30a  libgcc/ChangeLog
  fa9c74c0d1f3786facb86727d431c379  libgcc/Makefile.in
! f580acd5ef1774fa862f4470591082ec  libgcc/config.host
  f26ec212e3b17b397edd026932e4c2c2  libgcc/config.in
  27a91555b8c627d5253eead06d4023eb  libgcc/config/aarch64/crtfastmath.c
  7596c4be37d2d43c1924d6486ec8b1a7  libgcc/config/aarch64/crti.S
  809a55f6e2830e69542894706007e9db  libgcc/config/aarch64/crtn.S
! 366583c80921a43b8b709b7347e74c69  libgcc/config/aarch64/linux-unwind.h
  b380a668ce574366e5d8aafef91d0da4  libgcc/config/aarch64/sfp-exceptions.c
  9f74c1699a1012af21199e1be382eb3f  libgcc/config/aarch64/sfp-machine.h
  1cf73af9ac0962d82496fa8272f0a802  libgcc/config/aarch64/sync-cache.c
--- 53587,53600 ----
  291be426192f460f6a07dfe1c96ab094  libffi/testsuite/libffi.special/special.exp
  93fc3ea311b79f64004992807ce75d1e  libffi/testsuite/libffi.special/unwindtest.cc
  185d0795017fbbe253a13db8e34085f9  libffi/testsuite/libffi.special/unwindtest_ffi_call.cc
! 4900fd9c95ccd0bc8087b58a22b0a189  libgcc/ChangeLog
  fa9c74c0d1f3786facb86727d431c379  libgcc/Makefile.in
! e28d2e8d96ac31294b3d94dacfab0a23  libgcc/config.host
  f26ec212e3b17b397edd026932e4c2c2  libgcc/config.in
  27a91555b8c627d5253eead06d4023eb  libgcc/config/aarch64/crtfastmath.c
  7596c4be37d2d43c1924d6486ec8b1a7  libgcc/config/aarch64/crti.S
  809a55f6e2830e69542894706007e9db  libgcc/config/aarch64/crtn.S
! 5ebc575954415cf03038dbfc8d48f63c  libgcc/config/aarch64/linux-unwind.h
  b380a668ce574366e5d8aafef91d0da4  libgcc/config/aarch64/sfp-exceptions.c
  9f74c1699a1012af21199e1be382eb3f  libgcc/config/aarch64/sfp-machine.h
  1cf73af9ac0962d82496fa8272f0a802  libgcc/config/aarch64/sync-cache.c
*************** b380a668ce574366e5d8aafef91d0da4  libgcc
*** 53255,53261 ****
  a0a46a9affff177d894176604c30c40d  libgcc/config/aarch64/t-softfp
  504fab0d95b6283a5dc901d6866ee443  libgcc/config/alpha/crtfastmath.c
  668a3dd9aa0d1b92c594b14d2b97721f  libgcc/config/alpha/libgcc-alpha-ldbl.ver
! d4343beb8927e8a949db68ce2ba3f7c0  libgcc/config/alpha/linux-unwind.h
  8c0c1de20f8a59685053b4cb27e0b8b5  libgcc/config/alpha/qrnnd.S
  c45798ce39178e619ff48bf689b549be  libgcc/config/alpha/t-alpha
  95db551210150c5b18529c72cfdaeabf  libgcc/config/alpha/t-ieee
--- 53602,53608 ----
  a0a46a9affff177d894176604c30c40d  libgcc/config/aarch64/t-softfp
  504fab0d95b6283a5dc901d6866ee443  libgcc/config/alpha/crtfastmath.c
  668a3dd9aa0d1b92c594b14d2b97721f  libgcc/config/alpha/libgcc-alpha-ldbl.ver
! a885b8c29a30dc99788f812adfa79d7b  libgcc/config/alpha/linux-unwind.h
  8c0c1de20f8a59685053b4cb27e0b8b5  libgcc/config/alpha/qrnnd.S
  c45798ce39178e619ff48bf689b549be  libgcc/config/alpha/t-alpha
  95db551210150c5b18529c72cfdaeabf  libgcc/config/alpha/t-ieee
*************** f1b505a32bcf62e674988eec0748c12b  libgcc
*** 53358,53365 ****
  fc87e45e073829d21e9427a38f435e3b  libgcc/config/arm/t-symbian
  0b61332cccc4af9b144b6db99e213dcb  libgcc/config/arm/t-wince-pe
  4e5ac5c12ce4484d441f6f83d315e904  libgcc/config/arm/unaligned-funcs.c
! 83f11050d23d46dcd9f49fc7aad6bccd  libgcc/config/arm/unwind-arm.c
! 9abe4fe6419091486af728e326f90c7d  libgcc/config/arm/unwind-arm.h
  99b1199b2f3a4d60f3d06b690dac689b  libgcc/config/avr/avr-lib.h
  cb7548edc8c43dec14bd8b81d06c315a  libgcc/config/avr/lib1funcs-fixed.S
  3a05ff6a03be5dda31dd9062c5911d03  libgcc/config/avr/lib1funcs.S
--- 53705,53712 ----
  fc87e45e073829d21e9427a38f435e3b  libgcc/config/arm/t-symbian
  0b61332cccc4af9b144b6db99e213dcb  libgcc/config/arm/t-wince-pe
  4e5ac5c12ce4484d441f6f83d315e904  libgcc/config/arm/unaligned-funcs.c
! d00fffd88dd548ef2d4dc1126c27b46d  libgcc/config/arm/unwind-arm.c
! 7021d5ba9e7075ec052e84a8f9f5b7ff  libgcc/config/arm/unwind-arm.h
  99b1199b2f3a4d60f3d06b690dac689b  libgcc/config/avr/avr-lib.h
  cb7548edc8c43dec14bd8b81d06c315a  libgcc/config/avr/lib1funcs-fixed.S
  3a05ff6a03be5dda31dd9062c5911d03  libgcc/config/avr/lib1funcs.S
*************** bd5f5675c223510438dddeb748195268  libgcc
*** 53373,53379 ****
  e966c71e9124b9fa225b22b8a9020247  libgcc/config/bfin/crtn.S
  5dbdd36f3f3a8a56f9ae0dc30e4c0def  libgcc/config/bfin/lib1funcs.S
  bdc1a1385c50e86e8722df3970c25fe8  libgcc/config/bfin/libgcc-glibc.ver
! 36b6607380727389b09237f263026cd5  libgcc/config/bfin/linux-unwind.h
  4e54ca63fc628fdd56df2687a2bf457e  libgcc/config/bfin/t-bfin
  a5e909e203a6fbf202b2eaad6bff3601  libgcc/config/bfin/t-crtlibid
  17298642a82c8a2809260d1eb08f7e4e  libgcc/config/bfin/t-crtstuff
--- 53720,53726 ----
  e966c71e9124b9fa225b22b8a9020247  libgcc/config/bfin/crtn.S
  5dbdd36f3f3a8a56f9ae0dc30e4c0def  libgcc/config/bfin/lib1funcs.S
  bdc1a1385c50e86e8722df3970c25fe8  libgcc/config/bfin/libgcc-glibc.ver
! d5ad57ce8ba94c63fe6c503a36b238be  libgcc/config/bfin/linux-unwind.h
  4e54ca63fc628fdd56df2687a2bf457e  libgcc/config/bfin/t-bfin
  a5e909e203a6fbf202b2eaad6bff3601  libgcc/config/bfin/t-crtlibid
  17298642a82c8a2809260d1eb08f7e4e  libgcc/config/bfin/t-crtstuff
*************** ea294adb57574d1278b7ed059fa92328  libgcc
*** 53514,53520 ****
  b84f8adaa9192724e9602d8043fa6995  libgcc/config/i386/libgcc-darwin.10.5.ver
  68385e16ef1f822854d80574b5f5a5cd  libgcc/config/i386/libgcc-glibc.ver
  52bb88a77e0264994e91a324aed3d6f4  libgcc/config/i386/libgcc-sol2.ver
! 088bfba1b2542f1ba56faec49f49be9f  libgcc/config/i386/linux-unwind.h
  6b286ecb6560ddaadc541445acaadcb9  libgcc/config/i386/morestack.S
  cf9b2a6560ec15afc38524c29c065650  libgcc/config/i386/sfp-exceptions.c
  eff2f552940053c3c5d9d09dee943b13  libgcc/config/i386/sfp-machine.h
--- 53861,53867 ----
  b84f8adaa9192724e9602d8043fa6995  libgcc/config/i386/libgcc-darwin.10.5.ver
  68385e16ef1f822854d80574b5f5a5cd  libgcc/config/i386/libgcc-glibc.ver
  52bb88a77e0264994e91a324aed3d6f4  libgcc/config/i386/libgcc-sol2.ver
! 88123c29856ae3f609556e7c697cc8b0  libgcc/config/i386/linux-unwind.h
  6b286ecb6560ddaadc541445acaadcb9  libgcc/config/i386/morestack.S
  cf9b2a6560ec15afc38524c29c065650  libgcc/config/i386/sfp-exceptions.c
  eff2f552940053c3c5d9d09dee943b13  libgcc/config/i386/sfp-machine.h
*************** fa106cf68223eee5c0736fc8695286c5  libgcc
*** 53581,53587 ****
  7f77dab3bda1d10e1fca3644a2f0c9e7  libgcc/config/ia64/vms-unwind.h
  42f35408894b4409e1fb74a1dd0bff67  libgcc/config/iq2000/lib2funcs.c
  102f7dad8ad6b54434a1b8313d1e42c4  libgcc/config/iq2000/t-iq2000
! dad03eeea2a7ea0febd9bcae4512931c  libgcc/config/libbid/ChangeLog
  5b0036af46340c5fe5032ef6b4c1119c  libgcc/config/libbid/_addsub_dd.c
  077c04069b63155c517eeeb2d18211fe  libgcc/config/libbid/_addsub_sd.c
  c01e504740630774a0506de159528572  libgcc/config/libbid/_addsub_td.c
--- 53928,53934 ----
  7f77dab3bda1d10e1fca3644a2f0c9e7  libgcc/config/ia64/vms-unwind.h
  42f35408894b4409e1fb74a1dd0bff67  libgcc/config/iq2000/lib2funcs.c
  102f7dad8ad6b54434a1b8313d1e42c4  libgcc/config/iq2000/t-iq2000
! 2ed4fc67be0e7f8fe20a19758ed80bd7  libgcc/config/libbid/ChangeLog
  5b0036af46340c5fe5032ef6b4c1119c  libgcc/config/libbid/_addsub_dd.c
  077c04069b63155c517eeeb2d18211fe  libgcc/config/libbid/_addsub_sd.c
  c01e504740630774a0506de159528572  libgcc/config/libbid/_addsub_td.c
*************** e252c161ec4eb09d3b5a62d902b3d00f  libgcc
*** 53769,53775 ****
  c88d87907a20077db176016165428d4b  libgcc/config/m68k/fpgnulib.c
  697242b8a56fe4b72e0d74e8270071b0  libgcc/config/m68k/lb1sf68.S
  30b98e516245b6deb39a9ea14b24805f  libgcc/config/m68k/linux-atomic.c
! 208765e1c40d461897c01cf8b908c62e  libgcc/config/m68k/linux-unwind.h
  2e4fd3e401c9159da9f32d5965b5afa1  libgcc/config/m68k/t-floatlib
  de217c41c217f4341d6d546afa9a79f2  libgcc/config/m68k/t-linux
  4e281c631e54b8912258f84196fec9e6  libgcc/config/m68k/t-slibgcc-elf-ver
--- 54116,54122 ----
  c88d87907a20077db176016165428d4b  libgcc/config/m68k/fpgnulib.c
  697242b8a56fe4b72e0d74e8270071b0  libgcc/config/m68k/lb1sf68.S
  30b98e516245b6deb39a9ea14b24805f  libgcc/config/m68k/linux-atomic.c
! 8dcb553d1cb10a7a3acbd27407eaa4b1  libgcc/config/m68k/linux-unwind.h
  2e4fd3e401c9159da9f32d5965b5afa1  libgcc/config/m68k/t-floatlib
  de217c41c217f4341d6d546afa9a79f2  libgcc/config/m68k/t-linux
  4e281c631e54b8912258f84196fec9e6  libgcc/config/m68k/t-slibgcc-elf-ver
*************** e473b916bf4eba0c3f06374951aa45b1  libgcc
*** 54101,54107 ****
  6365520c0b10dc8772b4fd7d0eb02d0e  libgcc/config/nios2/lib2-mul.c
  eeb9b60d7a5032f9a09e4969fa381711  libgcc/config/nios2/lib2-nios2.h
  8e53f1c11a1b88e28645e5f75f51dd94  libgcc/config/nios2/linux-atomic.c
! 22d078f1dd0ffbf2f750e53798f8b773  libgcc/config/nios2/linux-unwind.h
  7b87568ecb5f5b73d0f10071fbdded48  libgcc/config/nios2/sfp-machine.h
  598bde069aeebadde9b08f8703ab2c77  libgcc/config/nios2/t-linux
  058cf7bee1e8fb40a62590a2558c7f76  libgcc/config/nios2/t-nios2
--- 54448,54454 ----
  6365520c0b10dc8772b4fd7d0eb02d0e  libgcc/config/nios2/lib2-mul.c
  eeb9b60d7a5032f9a09e4969fa381711  libgcc/config/nios2/lib2-nios2.h
  8e53f1c11a1b88e28645e5f75f51dd94  libgcc/config/nios2/linux-atomic.c
! 668a7b1867b6d43472152f82e2b41f95  libgcc/config/nios2/linux-unwind.h
  7b87568ecb5f5b73d0f10071fbdded48  libgcc/config/nios2/sfp-machine.h
  598bde069aeebadde9b08f8703ab2c77  libgcc/config/nios2/t-linux
  058cf7bee1e8fb40a62590a2558c7f76  libgcc/config/nios2/t-nios2
*************** f1911fa90d1dbeedf24a45afc7eaa66c  libgcc
*** 54119,54125 ****
  e7cd27121719c5c0f97dd3cb6c993ba5  libgcc/config/pa/hpux-unwind.h
  fdcb024d03346a72d12527a07bd3e112  libgcc/config/pa/lib2funcs.S
  0525896e0b34e5590c692f93c7a9ff03  libgcc/config/pa/linux-atomic.c
! a2889893933024e197b11f35c3692031  libgcc/config/pa/linux-unwind.h
  f81c78716ab9e3581190cba4008c50da  libgcc/config/pa/milli64.S
  667012433b09718593e94815435ae02d  libgcc/config/pa/quadlib.c
  f75c5d95e81be9574fc982b4aeed834f  libgcc/config/pa/stublib.c
--- 54466,54472 ----
  e7cd27121719c5c0f97dd3cb6c993ba5  libgcc/config/pa/hpux-unwind.h
  fdcb024d03346a72d12527a07bd3e112  libgcc/config/pa/lib2funcs.S
  0525896e0b34e5590c692f93c7a9ff03  libgcc/config/pa/linux-atomic.c
! f09b40f5b492d766dcbf161116a094a0  libgcc/config/pa/linux-unwind.h
  f81c78716ab9e3581190cba4008c50da  libgcc/config/pa/milli64.S
  667012433b09718593e94815435ae02d  libgcc/config/pa/quadlib.c
  f75c5d95e81be9574fc982b4aeed834f  libgcc/config/pa/stublib.c
*************** d1a44bea9afe07a73e74d110894939ac  libgcc
*** 54208,54214 ****
  8ba6ca63cf5db4f6e3881c48873a03fe  libgcc/config/rs6000/sol-ci.S
  2af7041d2c8c7272269907642834518a  libgcc/config/rs6000/sol-cn.S
  747501e3b907679cc3a99a2f174f7b9a  libgcc/config/rs6000/t-aix-cxa
! fb6501d77928a3ea4f485c0f80eedf94  libgcc/config/rs6000/t-crtstuff
  fbf232aa523ca2f4bcf139e827eba2da  libgcc/config/rs6000/t-darwin
  d7cdc73d7a8e658f872ea07474837bc2  libgcc/config/rs6000/t-darwin64
  ace5f56499cdd939ed67a5642d78228c  libgcc/config/rs6000/t-e500v1-fp
--- 54555,54561 ----
  8ba6ca63cf5db4f6e3881c48873a03fe  libgcc/config/rs6000/sol-ci.S
  2af7041d2c8c7272269907642834518a  libgcc/config/rs6000/sol-cn.S
  747501e3b907679cc3a99a2f174f7b9a  libgcc/config/rs6000/t-aix-cxa
! 3c3fc29e8ce89e9bbebf4cfbd71a6b54  libgcc/config/rs6000/t-crtstuff
  fbf232aa523ca2f4bcf139e827eba2da  libgcc/config/rs6000/t-darwin
  d7cdc73d7a8e658f872ea07474837bc2  libgcc/config/rs6000/t-darwin64
  ace5f56499cdd939ed67a5642d78228c  libgcc/config/rs6000/t-e500v1-fp
*************** ed1589158c77b2b1cfdfec3126cda47e  libgcc
*** 54255,54261 ****
  68ddef94ef228a2e500c6f84ca5c5f73  libgcc/config/sh/libgcc-excl.ver
  68ce5b0550cbda6ce3e05ae32030c808  libgcc/config/sh/libgcc-glibc.ver
  c8865b8f3af32ca36595aed493463639  libgcc/config/sh/linux-atomic.c
! bf9193e9bfc89e17b6b21659e4604367  libgcc/config/sh/linux-unwind.h
  d915cb58faa1ad2108733b662853057e  libgcc/config/sh/t-linux
  be1b06de574a22c34d2cf93d2d68a4f1  libgcc/config/sh/t-netbsd
  92ac25ad46b71eaf515c11d353eefac9  libgcc/config/sh/t-sh
--- 54602,54608 ----
  68ddef94ef228a2e500c6f84ca5c5f73  libgcc/config/sh/libgcc-excl.ver
  68ce5b0550cbda6ce3e05ae32030c808  libgcc/config/sh/libgcc-glibc.ver
  c8865b8f3af32ca36595aed493463639  libgcc/config/sh/linux-atomic.c
! 0fb5657ccfcc5cccee919f055838b3b0  libgcc/config/sh/linux-unwind.h
  d915cb58faa1ad2108733b662853057e  libgcc/config/sh/t-linux
  be1b06de574a22c34d2cf93d2d68a4f1  libgcc/config/sh/t-netbsd
  92ac25ad46b71eaf515c11d353eefac9  libgcc/config/sh/t-sh
*************** aed518ef82f08076b9d35fdd1631206d  libgcc
*** 54268,54274 ****
  7a55a011207a8ba0c1802aedf0535a6a  libgcc/config/sparc/crtfastmath.c
  3d47a4803792c5a95be72909f5cf5bde  libgcc/config/sparc/crti.S
  df3012bda81921398abdade5b3def646  libgcc/config/sparc/crtn.S
! 38890399560283d3053d6c66c5bfb517  libgcc/config/sparc/lb1spc.S
  e982c97b235f0aeda25b6571e8a0c6bf  libgcc/config/sparc/libgcc-glibc.ver
  ed43e5fb300afb636d2cf5b80ae28f85  libgcc/config/sparc/linux-unwind.h
  90812dbeebbffb6085ceb6df2bbddcb3  libgcc/config/sparc/sol2-c1.S
--- 54615,54621 ----
  7a55a011207a8ba0c1802aedf0535a6a  libgcc/config/sparc/crtfastmath.c
  3d47a4803792c5a95be72909f5cf5bde  libgcc/config/sparc/crti.S
  df3012bda81921398abdade5b3def646  libgcc/config/sparc/crtn.S
! b2a26791cd6002e4af29a7fa32510b3b  libgcc/config/sparc/lb1spc.S
  e982c97b235f0aeda25b6571e8a0c6bf  libgcc/config/sparc/libgcc-glibc.ver
  ed43e5fb300afb636d2cf5b80ae28f85  libgcc/config/sparc/linux-unwind.h
  90812dbeebbffb6085ceb6df2bbddcb3  libgcc/config/sparc/sol2-c1.S
*************** b5d3fe85dff400a82befa6b901b438ec  libgcc
*** 54354,54360 ****
  94fecaba2fa3fca31d038d5739e45e51  libgcc/config/tilegx/t-tilegx
  58bf6e761613be6f89144592c3eba6de  libgcc/config/tilepro/atomic.c
  95089b073951187f34d92f631cf89095  libgcc/config/tilepro/atomic.h
! 3521538f8f8ebbdb25220100364ae0b9  libgcc/config/tilepro/linux-unwind.h
  c319c87cee2bc57b33cd850fb03731b5  libgcc/config/tilepro/sfp-machine.h
  acec84ef1d38dfdbf841d9e451e2cf6d  libgcc/config/tilepro/softdivide.c
  089e8702032c4fc69431f9f3ef745fbd  libgcc/config/tilepro/softmpy.S
--- 54701,54707 ----
  94fecaba2fa3fca31d038d5739e45e51  libgcc/config/tilegx/t-tilegx
  58bf6e761613be6f89144592c3eba6de  libgcc/config/tilepro/atomic.c
  95089b073951187f34d92f631cf89095  libgcc/config/tilepro/atomic.h
! 579b43292dcaca2ca80c81204bc2007b  libgcc/config/tilepro/linux-unwind.h
  c319c87cee2bc57b33cd850fb03731b5  libgcc/config/tilepro/sfp-machine.h
  acec84ef1d38dfdbf841d9e451e2cf6d  libgcc/config/tilepro/softdivide.c
  089e8702032c4fc69431f9f3ef745fbd  libgcc/config/tilepro/softmpy.S
*************** db1b100b48f69095675a1743f74a2008  libgcc
*** 54385,54401 ****
  d61692948565eb2f45431822f32976c6  libgcc/config/vxlib.c
  bfb0a542d9f791472ed94d4e2bec0fca  libgcc/config/xtensa/crti.S
  c22cab21cfb2986a8bf34cfd20f384d6  libgcc/config/xtensa/crtn.S
! 7ffe56d4c9102572edce3ccb370f2ac9  libgcc/config/xtensa/ieee754-df.S
! 683cda5faf2bdee3a5f3b21f3f0420c8  libgcc/config/xtensa/ieee754-sf.S
  4465fbd2e91309c6ae267846b72453b3  libgcc/config/xtensa/lib1funcs.S
  1b013196465687a45ec46ef51ef9db73  libgcc/config/xtensa/lib2funcs.S
  8074695f5eea7b961c59ee9608973dac  libgcc/config/xtensa/libgcc-glibc.ver
! a79f3fd3760a0ec393340c60be1414f4  libgcc/config/xtensa/linux-unwind.h
! abaf6fc399453837c4d7bb2c36921c93  libgcc/config/xtensa/t-elf
! 726bfd6509f7943384215f04c9cf18a6  libgcc/config/xtensa/t-linux
! 1cda4d5f139437b4145f2b602cea77e5  libgcc/config/xtensa/t-windowed
  bf2471ce5bf90eaf3dd7074026fd33f5  libgcc/config/xtensa/t-xtensa
! 247fa85a7d363e4d6421ce67c28bb238  libgcc/config/xtensa/unwind-dw2-xtensa.c
  1a971e7ddcdd0754fe45c1228fb494e2  libgcc/config/xtensa/unwind-dw2-xtensa.h
  741285320df421c73e2df1c0dda52794  libgcc/configure
  eda07878c0b1804de9b4cb818dbceb00  libgcc/configure.ac
--- 54732,54748 ----
  d61692948565eb2f45431822f32976c6  libgcc/config/vxlib.c
  bfb0a542d9f791472ed94d4e2bec0fca  libgcc/config/xtensa/crti.S
  c22cab21cfb2986a8bf34cfd20f384d6  libgcc/config/xtensa/crtn.S
! ac4ede20623569e001902a17d18d7aa8  libgcc/config/xtensa/ieee754-df.S
! be24459f136e634025447fcc59acf5cb  libgcc/config/xtensa/ieee754-sf.S
  4465fbd2e91309c6ae267846b72453b3  libgcc/config/xtensa/lib1funcs.S
  1b013196465687a45ec46ef51ef9db73  libgcc/config/xtensa/lib2funcs.S
  8074695f5eea7b961c59ee9608973dac  libgcc/config/xtensa/libgcc-glibc.ver
! b706cd534bccd296c4b11d2331883741  libgcc/config/xtensa/linux-unwind.h
! d437dc5394da39dbe1ece64723e90a76  libgcc/config/xtensa/t-elf
! 4f2c91d0f57a675cc91b287ce2ad76aa  libgcc/config/xtensa/t-linux
! ce614fa17d52c2d7121d7e2d6f80b02d  libgcc/config/xtensa/t-windowed
  bf2471ce5bf90eaf3dd7074026fd33f5  libgcc/config/xtensa/t-xtensa
! cb7920df63772522715bfa3b06213de6  libgcc/config/xtensa/unwind-dw2-xtensa.c
  1a971e7ddcdd0754fe45c1228fb494e2  libgcc/config/xtensa/unwind-dw2-xtensa.h
  741285320df421c73e2df1c0dda52794  libgcc/configure
  eda07878c0b1804de9b4cb818dbceb00  libgcc/configure.ac
*************** d6906c1cc1b61239da407a8e570fa0a3  libgcc
*** 54427,54436 ****
  6f4e50f38d490dd9dbb4c73ce7ecb592  libgcc/gthr-single.h
  22381c51f6d486a76e00870d4559bbd9  libgcc/gthr.h
  8ccf272badda4e7ecbdfc22151a578f3  libgcc/libgcc-std.ver.in
! 9af94c33dfb595f55c4caa423b5cb1df  libgcc/libgcc2.c
  aaee41d7a8cd4c16697aa2ed5e5c58db  libgcc/libgcc2.h
  659b631c237f90a8cae73a3f4bfcd70c  libgcc/libgcov-driver-system.c
! 70e549793b0d6a6869a986fc0126268f  libgcc/libgcov-driver.c
  c9bc312eab1eb6b97ff6d9b7f1c47fb3  libgcc/libgcov-interface.c
  27ede605a2e19d0861cdd3d6e97f0287  libgcc/libgcov-merge.c
  7b1cf4042d5f90a327cb1448f26bea29  libgcc/libgcov-profiler.c
--- 54774,54783 ----
  6f4e50f38d490dd9dbb4c73ce7ecb592  libgcc/gthr-single.h
  22381c51f6d486a76e00870d4559bbd9  libgcc/gthr.h
  8ccf272badda4e7ecbdfc22151a578f3  libgcc/libgcc-std.ver.in
! 36909dcd406b4dcd28d9cff37a5ac2f3  libgcc/libgcc2.c
  aaee41d7a8cd4c16697aa2ed5e5c58db  libgcc/libgcc2.h
  659b631c237f90a8cae73a3f4bfcd70c  libgcc/libgcov-driver-system.c
! 919de655ab18de9574eb291268a81930  libgcc/libgcov-driver.c
  c9bc312eab1eb6b97ff6d9b7f1c47fb3  libgcc/libgcov-interface.c
  27ede605a2e19d0861cdd3d6e97f0287  libgcc/libgcov-merge.c
  7b1cf4042d5f90a327cb1448f26bea29  libgcc/libgcov-profiler.c
*************** abe68a87a5391f933e354627759e3954  libgcc
*** 54533,54539 ****
  2501892c5883bcb26b286080c3bca3a6  libgcc/udivmod.c
  6d5cf00291c708162ba5ab6307175d38  libgcc/udivmodsi4.c
  679862bb484cbe8a52a3fc6bb0f1aff7  libgcc/unwind-arm-common.inc
! cd2fd8a976dd56113198fb101beecd32  libgcc/unwind-c.c
  c27d94cd04244c47c9af02c2c87a9584  libgcc/unwind-compat.c
  fac9640de446665519205dd667daf658  libgcc/unwind-compat.h
  eaef2cd4b01be678c29699d89667d55b  libgcc/unwind-dw2-fde-compat.c
--- 54880,54886 ----
  2501892c5883bcb26b286080c3bca3a6  libgcc/udivmod.c
  6d5cf00291c708162ba5ab6307175d38  libgcc/udivmodsi4.c
  679862bb484cbe8a52a3fc6bb0f1aff7  libgcc/unwind-arm-common.inc
! 97c075f87c5886aabb75902eeddac7b5  libgcc/unwind-c.c
  c27d94cd04244c47c9af02c2c87a9584  libgcc/unwind-compat.c
  fac9640de446665519205dd667daf658  libgcc/unwind-compat.h
  eaef2cd4b01be678c29699d89667d55b  libgcc/unwind-dw2-fde-compat.c
*************** f67877c8616b3917c19d20a42055cb16  libgcc
*** 54551,54557 ****
  d2ba441a933d70bc2f27734e4a9c8a43  libgcc/vtv_end_preinit.c
  a0b3ddfb7e98922fa38ec7232aa48e9f  libgcc/vtv_start.c
  05dc8eaf45476dade83c4c5221c3d4c6  libgcc/vtv_start_preinit.c
! abe97e3b5a638773960f02eaa14340bd  libgfortran/ChangeLog
  9aca36338382e5b4b730e7779170b24d  libgfortran/ChangeLog-2002
  80d3edc880c2da0b7a2beec2e2c4f774  libgfortran/ChangeLog-2003
  9f0239429993a5e64ed793eb6c55a5c1  libgfortran/ChangeLog-2004
--- 54898,54904 ----
  d2ba441a933d70bc2f27734e4a9c8a43  libgcc/vtv_end_preinit.c
  a0b3ddfb7e98922fa38ec7232aa48e9f  libgcc/vtv_start.c
  05dc8eaf45476dade83c4c5221c3d4c6  libgcc/vtv_start_preinit.c
! 553163c3e854af1ea3659af816e81300  libgfortran/ChangeLog
  9aca36338382e5b4b730e7779170b24d  libgfortran/ChangeLog-2002
  80d3edc880c2da0b7a2beec2e2c4f774  libgfortran/ChangeLog-2003
  9f0239429993a5e64ed793eb6c55a5c1  libgfortran/ChangeLog-2004
*************** fad6b52ce32fb79dc045d7e451645702  libgfo
*** 54569,54575 ****
  ba32f835ee3c96fa1ba7713ea3e92b26  libgfortran/Makefile.in
  cea1223bd8bc96b49f77851f0f65c88e  libgfortran/acinclude.m4
  689a370d413461df77ffe8d335768161  libgfortran/aclocal.m4
! 9f138187b50acf94f826a0a9fefaf6b6  libgfortran/c99_protos.h
  f7868487f71910e7a2685c034f175c38  libgfortran/caf/libcaf.h
  c1e3cafce5c1e49156663866ff4a0bc4  libgfortran/caf/mpi.c
  86a83d8fb7123426637dde14b4545e5e  libgfortran/caf/single.c
--- 54916,54922 ----
  ba32f835ee3c96fa1ba7713ea3e92b26  libgfortran/Makefile.in
  cea1223bd8bc96b49f77851f0f65c88e  libgfortran/acinclude.m4
  689a370d413461df77ffe8d335768161  libgfortran/aclocal.m4
! 900ae3d8d8f33a29461526e22deeaa08  libgfortran/c99_protos.h
  f7868487f71910e7a2685c034f175c38  libgfortran/caf/libcaf.h
  c1e3cafce5c1e49156663866ff4a0bc4  libgfortran/caf/mpi.c
  86a83d8fb7123426637dde14b4545e5e  libgfortran/caf/single.c
*************** bfc10ca98e919be09b0c9a33d04754b5  libgfo
*** 55098,55104 ****
  2192f08e1f477387d0e81ecec74ced3f  libgfortran/generated/unpack_r4.c
  cfe57d38bc93283fbbc6df85c8828795  libgfortran/generated/unpack_r8.c
  e5c9f166acfae008469fa9039800c819  libgfortran/gfortran.map
! eecb854afbc1b770027e238023b0f645  libgfortran/ieee/ieee_arithmetic.F90
  ce48e1f712a08924e710c61c26a531be  libgfortran/ieee/ieee_exceptions.F90
  3cee9e5c77be733265f2ad5224673c5b  libgfortran/ieee/ieee_features.F90
  a2ef5d13d5322a141ff6fe289836a43c  libgfortran/ieee/ieee_helper.c
--- 55445,55451 ----
  2192f08e1f477387d0e81ecec74ced3f  libgfortran/generated/unpack_r4.c
  cfe57d38bc93283fbbc6df85c8828795  libgfortran/generated/unpack_r8.c
  e5c9f166acfae008469fa9039800c819  libgfortran/gfortran.map
! 33b158ef0605a864fb2f1952823d55ed  libgfortran/ieee/ieee_arithmetic.F90
  ce48e1f712a08924e710c61c26a531be  libgfortran/ieee/ieee_exceptions.F90
  3cee9e5c77be733265f2ad5224673c5b  libgfortran/ieee/ieee_features.F90
  a2ef5d13d5322a141ff6fe289836a43c  libgfortran/ieee/ieee_helper.c
*************** a2ef5d13d5322a141ff6fe289836a43c  libgfo
*** 55107,55113 ****
  a4b7a3a68f1ab0be736604d60c751a91  libgfortran/intrinsics/args.c
  7c320849a0df4d2c53988876a67bf760  libgfortran/intrinsics/associated.c
  cd95d0992270d012ccfdcffa52824a46  libgfortran/intrinsics/bit_intrinsics.c
! cd4bf9842de8650ea76a6efd93b82657  libgfortran/intrinsics/c99_functions.c
  1f557f346c1dae1f02a5d9b2f12a8bc8  libgfortran/intrinsics/chdir.c
  a3e204f10d9551a604089d05c7b03b58  libgfortran/intrinsics/chmod.c
  4427b8076220da7e4157a3442416ee38  libgfortran/intrinsics/clock.c
--- 55454,55460 ----
  a4b7a3a68f1ab0be736604d60c751a91  libgfortran/intrinsics/args.c
  7c320849a0df4d2c53988876a67bf760  libgfortran/intrinsics/associated.c
  cd95d0992270d012ccfdcffa52824a46  libgfortran/intrinsics/bit_intrinsics.c
! 31824e7e991b00f5fb1142daf59109a1  libgfortran/intrinsics/c99_functions.c
  1f557f346c1dae1f02a5d9b2f12a8bc8  libgfortran/intrinsics/chdir.c
  a3e204f10d9551a604089d05c7b03b58  libgfortran/intrinsics/chmod.c
  4427b8076220da7e4157a3442416ee38  libgfortran/intrinsics/clock.c
*************** ff33917c2771db5382b30eb2d114a001  libgfo
*** 55178,55189 ****
  2efe9743c87d956969e516cf20a4a1b1  libgfortran/io/inquire.c
  72be91df91a4f7d395decb84b80de5cb  libgfortran/io/intrinsics.c
  5e98bf6d23d38b339fa46c56485c3670  libgfortran/io/io.h
! 022f67685b330124b0f29322771a446d  libgfortran/io/list_read.c
  463d798afd3917601a38f9573cb793c2  libgfortran/io/lock.c
  75429c61134d964b070eb3147fbeb204  libgfortran/io/open.c
  905dc4ddeddf25b54145625c7b2f0b4c  libgfortran/io/read.c
  90b971a1292b9b7ce5e96e700533488f  libgfortran/io/size_from_kind.c
! 02e7353015b855efa739e1b2f441333e  libgfortran/io/transfer.c
  8920e89257b2eed4c226a979a166f1fb  libgfortran/io/transfer128.c
  6928f278ea2a50226492dd9a4b23bbe1  libgfortran/io/unit.c
  2699920bc126e04a6d6ca2dc50ba529b  libgfortran/io/unix.c
--- 55525,55536 ----
  2efe9743c87d956969e516cf20a4a1b1  libgfortran/io/inquire.c
  72be91df91a4f7d395decb84b80de5cb  libgfortran/io/intrinsics.c
  5e98bf6d23d38b339fa46c56485c3670  libgfortran/io/io.h
! cc57abf525a7bc2687ae4e0162e545da  libgfortran/io/list_read.c
  463d798afd3917601a38f9573cb793c2  libgfortran/io/lock.c
  75429c61134d964b070eb3147fbeb204  libgfortran/io/open.c
  905dc4ddeddf25b54145625c7b2f0b4c  libgfortran/io/read.c
  90b971a1292b9b7ce5e96e700533488f  libgfortran/io/size_from_kind.c
! 0a625d20ce224b573c703963f1132652  libgfortran/io/transfer.c
  8920e89257b2eed4c226a979a166f1fb  libgfortran/io/transfer128.c
  6928f278ea2a50226492dd9a4b23bbe1  libgfortran/io/unit.c
  2699920bc126e04a6d6ca2dc50ba529b  libgfortran/io/unix.c
*************** ff33917c2771db5382b30eb2d114a001  libgfo
*** 55191,55197 ****
  607ec93d3784c61c00ac43df5973f519  libgfortran/io/write.c
  be7a080992727366616156dc4815a116  libgfortran/io/write_float.def
  f72d99352db844c4ed062f4529ca9a3f  libgfortran/kinds-override.h
! 925eb21bc04828bc484ec3bc0c247daf  libgfortran/libgfortran.h
  2527bb19b82f08b34038b07b172d029d  libgfortran/libgfortran.spec.in
  25a776e70521ce48fb1bfdd7bfa1a646  libgfortran/libtool-version
  6de6599b2a243993bd602f0a7dd7b378  libgfortran/m4/all.m4
--- 55538,55544 ----
  607ec93d3784c61c00ac43df5973f519  libgfortran/io/write.c
  be7a080992727366616156dc4815a116  libgfortran/io/write_float.def
  f72d99352db844c4ed062f4529ca9a3f  libgfortran/kinds-override.h
! 01ebb72bcf10471ed57d5cf2974738a5  libgfortran/libgfortran.h
  2527bb19b82f08b34038b07b172d029d  libgfortran/libgfortran.spec.in
  25a776e70521ce48fb1bfdd7bfa1a646  libgfortran/libtool-version
  6de6599b2a243993bd602f0a7dd7b378  libgfortran/m4/all.m4
*************** f81db480cbfdc2b1d2291623c6cadb5f  libgfo
*** 55249,55255 ****
  9037c8f0b8536434f0736f24c4af10f8  libgfortran/runtime/bounds.c
  af517361da824148ae348605ab62669d  libgfortran/runtime/compile_options.c
  776d45522372ed95f18b7e438f0f4f7b  libgfortran/runtime/convert_char.c
! e410976f7805abb6a6066543fc860996  libgfortran/runtime/environ.c
  df170391f8936eb1fbd5ce392c36765b  libgfortran/runtime/error.c
  e59839ecf9a9edec396d9260d4ab9cf0  libgfortran/runtime/fpu.c
  6e9c7c07ee7fc73a862b1474ad52f157  libgfortran/runtime/in_pack_generic.c
--- 55596,55602 ----
  9037c8f0b8536434f0736f24c4af10f8  libgfortran/runtime/bounds.c
  af517361da824148ae348605ab62669d  libgfortran/runtime/compile_options.c
  776d45522372ed95f18b7e438f0f4f7b  libgfortran/runtime/convert_char.c
! 49782c2e96c23cba407f3aa52e8d6f00  libgfortran/runtime/environ.c
  df170391f8936eb1fbd5ce392c36765b  libgfortran/runtime/error.c
  e59839ecf9a9edec396d9260d4ab9cf0  libgfortran/runtime/fpu.c
  6e9c7c07ee7fc73a862b1474ad52f157  libgfortran/runtime/in_pack_generic.c
*************** e4986413e9b80693d19f2485271e5c9d  libgo/
*** 56862,56869 ****
  a0090b126833084a9f2908291f50e6a0  libgo/go/syscall/syscall_linux_386.go
  7c5e270210553412c724bf6ab06e1854  libgo/go/syscall/syscall_linux_alpha.go
  6369db28775124d9386571ec81d3df7d  libgo/go/syscall/syscall_linux_amd64.go
! 29b5e7751adb70e11a58249aa085a1b9  libgo/go/syscall/syscall_linux_s390.go
! 38d337b4bd230ec911f750e4ef3f7cfd  libgo/go/syscall/syscall_linux_s390x.go
  94cd606be2946b33b3dbc7e59ed4341b  libgo/go/syscall/syscall_solaris.go
  aa19419240f5a247f0338eb695ceac57  libgo/go/syscall/syscall_stubs.go
  bc1d1901353d1aca3db7b32646999f6f  libgo/go/syscall/syscall_test.go
--- 57209,57216 ----
  a0090b126833084a9f2908291f50e6a0  libgo/go/syscall/syscall_linux_386.go
  7c5e270210553412c724bf6ab06e1854  libgo/go/syscall/syscall_linux_alpha.go
  6369db28775124d9386571ec81d3df7d  libgo/go/syscall/syscall_linux_amd64.go
! a7dae55ec943433fbe77493b95969e4c  libgo/go/syscall/syscall_linux_s390.go
! f34c9b630bff593e3a17c53851e92866  libgo/go/syscall/syscall_linux_s390x.go
  94cd606be2946b33b3dbc7e59ed4341b  libgo/go/syscall/syscall_solaris.go
  aa19419240f5a247f0338eb695ceac57  libgo/go/syscall/syscall_stubs.go
  bc1d1901353d1aca3db7b32646999f6f  libgo/go/syscall/syscall_test.go
*************** b5d61948754559678ede86a4e91cabb0  libgo/
*** 57086,57092 ****
  745d4f905f042374994ab7e1511af7d6  libgo/testsuite/gotest
  26b56a55b181d3ef0337842a31e79ae0  libgo/testsuite/lib/libgo.exp
  6df485581d2f02246f41b5ca46f5bb5d  libgo/testsuite/libgo.testmain/testmain.exp
! d684bf6c9918739718c54ce2549d0160  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
  d7be87f0c7f71dc789da8bfed0deb4b8  libgomp/Makefile.am
  68de659ea379402fca8523ab4c607bf0  libgomp/Makefile.in
--- 57433,57439 ----
  745d4f905f042374994ab7e1511af7d6  libgo/testsuite/gotest
  26b56a55b181d3ef0337842a31e79ae0  libgo/testsuite/lib/libgo.exp
  6df485581d2f02246f41b5ca46f5bb5d  libgo/testsuite/libgo.testmain/testmain.exp
! 2dabc41514950d7dee5a40abbf6386ec  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
  d7be87f0c7f71dc789da8bfed0deb4b8  libgomp/Makefile.am
  68de659ea379402fca8523ab4c607bf0  libgomp/Makefile.in
*************** c4e305e7108255d4aead897b74d5ed2e  libgom
*** 57141,57156 ****
  5fbaead8f640ce179edd07b6072e8907  libgomp/configure.ac
  08da9f7e83547768af5434c462153e20  libgomp/configure.tgt
  b5c71666b3dd1c1ab312405ea83ddf88  libgomp/critical.c
! 6f05ca2bf6bb26cb22cb3fc74f6c7437  libgomp/env.c
  3cb5086c9b2708150a14ac1ae9a8e387  libgomp/error.c
  7c71bd1d2d30acdc9be8b817e539e3b8  libgomp/fortran.c
! f097bc381cd79c8c027e22e773c3d0b2  libgomp/hashtab.h
  b8e928e9cd651c87d8105f391a8f3b2e  libgomp/iter.c
  38af8bd105c1c5061691bad322b3eb3b  libgomp/iter_ull.c
  6a1d448abc97ac5c7a688b5598880e66  libgomp/libgomp-plugin.c
  016174d02e1316d747ce957bf910f221  libgomp/libgomp-plugin.h
  95096d392212dba43215200e3e688299  libgomp/libgomp.h
! ef903935fe871269d3ea984508542e0b  libgomp/libgomp.info
  a80fef0fb8cafe3cff18a5a76142d027  libgomp/libgomp.map
  8b2aa50aecad82171348a6918309afd6  libgomp/libgomp.spec.in
  421b0332bd9845c4ed6a37e2bc137a27  libgomp/libgomp.texi
--- 57488,57503 ----
  5fbaead8f640ce179edd07b6072e8907  libgomp/configure.ac
  08da9f7e83547768af5434c462153e20  libgomp/configure.tgt
  b5c71666b3dd1c1ab312405ea83ddf88  libgomp/critical.c
! d508593cc0e0ff860b11f8e465818427  libgomp/env.c
  3cb5086c9b2708150a14ac1ae9a8e387  libgomp/error.c
  7c71bd1d2d30acdc9be8b817e539e3b8  libgomp/fortran.c
! 14d2bb41907ce919e42f6e546d02003d  libgomp/hashtab.h
  b8e928e9cd651c87d8105f391a8f3b2e  libgomp/iter.c
  38af8bd105c1c5061691bad322b3eb3b  libgomp/iter_ull.c
  6a1d448abc97ac5c7a688b5598880e66  libgomp/libgomp-plugin.c
  016174d02e1316d747ce957bf910f221  libgomp/libgomp-plugin.h
  95096d392212dba43215200e3e688299  libgomp/libgomp.h
! 3b1c2371492bd7a29857ad523a7bf006  libgomp/libgomp.info
  a80fef0fb8cafe3cff18a5a76142d027  libgomp/libgomp.map
  8b2aa50aecad82171348a6918309afd6  libgomp/libgomp.spec.in
  421b0332bd9845c4ed6a37e2bc137a27  libgomp/libgomp.texi
*************** f288ebef02de5e114b5c8526bad9dc19  libgom
*** 57280,57285 ****
--- 57627,57633 ----
  d65773670d221b74aa6b327a1de57dff  libgomp/testsuite/libgomp.c++/pr38650.C
  32eed8fe7a118de6fa22a9b1ffec6c53  libgomp/testsuite/libgomp.c++/pr39573.C
  467dc8995782492f741eb1d9548a272b  libgomp/testsuite/libgomp.c++/pr43893.C
+ f8a4ee60b8dc15123330632ae37c9ef4  libgomp/testsuite/libgomp.c++/pr45784.C
  6bc7a2a67f411f00aa39c8b72e8a287d  libgomp/testsuite/libgomp.c++/pr48869.C
  d566c37edb50b4aac9c2b4fa4d381670  libgomp/testsuite/libgomp.c++/pr49043.C
  d2e531409ec3708a503019e5aec4cfd8  libgomp/testsuite/libgomp.c++/pr56217.C
*************** bc3be9337646882bc8533bbbc9f01dd6  libgom
*** 57526,57531 ****
--- 57874,57880 ----
  006c9241a06131d8b1ad87c0a7a58349  libgomp/testsuite/libgomp.c/pr42029.c
  965ea816877f4bf791f4bf1a1aeef3cf  libgomp/testsuite/libgomp.c/pr42942.c
  3b6d62c4c9f8e8ce4656f6342157558e  libgomp/testsuite/libgomp.c/pr43893.c
+ 67c38424bb3c5c571b180f7bdadaa4f8  libgomp/testsuite/libgomp.c/pr45784.c
  dc156ed1b463ca0cf6f8e76c9ee9274b  libgomp/testsuite/libgomp.c/pr46886.c
  4b584bd7dc56381e7186080fc70dbd23  libgomp/testsuite/libgomp.c/pr48591.c
  b4c78e2e0b669ed68f5694694da3f225  libgomp/testsuite/libgomp.c/pr49897-1.c
*************** b9f3adf54414b3cb98d10f86ee7032dd  libgom
*** 57544,57549 ****
--- 57893,57901 ----
  5ee0d2e1cdf5ea9081e9ed1de58a5343  libgomp/testsuite/libgomp.c/pr66199-2.c
  37da387849a1a7da3f75e528c47ee2cb  libgomp/testsuite/libgomp.c/pr68960.c
  9995ebc7d239ebe751419090068c6f33  libgomp/testsuite/libgomp.c/pr69110.c
+ b39ac1676fce227eca227a5a7c39c784  libgomp/testsuite/libgomp.c/pr80394.c
+ 9116b9dc2c0c3c11fdab95ea2ca66a18  libgomp/testsuite/libgomp.c/pr81687-1.c
+ 5996dc15da52a000b77c153bb70588f6  libgomp/testsuite/libgomp.c/pr81687-2.c
  ea7c9e74bda402b1663a903b26400fab  libgomp/testsuite/libgomp.c/private-1.c
  a594cebdf052900dd0c8792068e14d85  libgomp/testsuite/libgomp.c/reduction-1.c
  6a724210e4cb30df7ade4ef7ee0aa83e  libgomp/testsuite/libgomp.c/reduction-2.c
*************** f34e0c37442a4a7019dadca0b34ac11d  libgom
*** 57642,57647 ****
--- 57994,58000 ----
  6116086a89b906c26bd9afe26e57a07a  libgomp/testsuite/libgomp.fortran/appendix-a/a10.1.f90
  ba05d0e1b584ec6c750d14a486ac83b2  libgomp/testsuite/libgomp.fortran/associate1.f90
  41cd3ed9183e6bc7b20ef8836663fbdd  libgomp/testsuite/libgomp.fortran/associate2.f90
+ aa03f95280189c0147b6c2ec288164ba  libgomp/testsuite/libgomp.fortran/associate3.f90
  cb0b79f7bddc47118981784eb7ba6f75  libgomp/testsuite/libgomp.fortran/cancel-do-1.f90
  2a5fe3d97ff9f23e08df5e015a45e3bc  libgomp/testsuite/libgomp.fortran/cancel-do-2.f90
  a110324b7cb72dc5755c1ad39c5230fd  libgomp/testsuite/libgomp.fortran/cancel-parallel-1.f90
*************** d3f9f8b453576b8a24f3f2db4ad0cbe2  libgom
*** 58052,58058 ****
  dfb2dc36e79cf123d81e8a34990df589  libgomp/work.c
  99c2e5e712b990ee07be10f53e41f3fb  libiberty/.gitignore
  a916467b91076e631dd8edb7424769c7  libiberty/COPYING.LIB
! 9d983487af00528b77b9081f64c75723  libiberty/ChangeLog
  347c31392973de6a4872d540c1718dc1  libiberty/ChangeLog.jit
  88d7a06b638cf8f45b3e776983f10524  libiberty/Makefile.in
  c68dbf7834af4281ebd84caa3fd54680  libiberty/README
--- 58405,58411 ----
  dfb2dc36e79cf123d81e8a34990df589  libgomp/work.c
  99c2e5e712b990ee07be10f53e41f3fb  libiberty/.gitignore
  a916467b91076e631dd8edb7424769c7  libiberty/COPYING.LIB
! 982788daaa1cb2d3d919976cbc8219d4  libiberty/ChangeLog
  347c31392973de6a4872d540c1718dc1  libiberty/ChangeLog.jit
  88d7a06b638cf8f45b3e776983f10524  libiberty/Makefile.in
  c68dbf7834af4281ebd84caa3fd54680  libiberty/README
*************** a8391a5d7431a4e11f61be41386a3356  libibe
*** 58084,58090 ****
  5824bd0f9be9f4fa74bb3bdc7fd9431c  libiberty/configure.com
  32149e9d61d873be9c2950bee2ae7137  libiberty/copying-lib.texi
  fe053283d3559af3ec5cac45f8ead009  libiberty/copysign.c
! 7a33fe7d4ac66d711f13dcf27e7f425f  libiberty/cp-demangle.c
  ef31ef103e276b9741c453bba5660e20  libiberty/cp-demangle.h
  5868438b5b6c384018d526ccee754b8f  libiberty/cp-demint.c
  93007574a947e87f0a09933f28203e4a  libiberty/cplus-dem.c
--- 58437,58443 ----
  5824bd0f9be9f4fa74bb3bdc7fd9431c  libiberty/configure.com
  32149e9d61d873be9c2950bee2ae7137  libiberty/copying-lib.texi
  fe053283d3559af3ec5cac45f8ead009  libiberty/copysign.c
! 8015af19e299ce7a30a0934f625624cc  libiberty/cp-demangle.c
  ef31ef103e276b9741c453bba5660e20  libiberty/cp-demangle.h
  5868438b5b6c384018d526ccee754b8f  libiberty/cp-demint.c
  93007574a947e87f0a09933f28203e4a  libiberty/cplus-dem.c
*************** d132d24f15fe05fe3614e69d6dbc65aa  libibe
*** 58187,58193 ****
  9e1bb6fe95ebb6415672ddf1da29ec65  libiberty/strverscmp.c
  bf4ea5614ec32141d1820716bd8709c5  libiberty/testsuite/Makefile.in
  9e858e1d84edd7cc5e1877f46bc3be65  libiberty/testsuite/d-demangle-expected
! 30a4da0ae59873d80c13da1ad3be4b46  libiberty/testsuite/demangle-expected
  10ce55269f247e57d2901ee11e88d8bd  libiberty/testsuite/demangler-fuzzer.c
  8b476ce26e8583eea8df7d77fe287a5a  libiberty/testsuite/test-demangle.c
  d629c8f2adde10d53657e437416cf27f  libiberty/testsuite/test-expandargv.c
--- 58540,58546 ----
  9e1bb6fe95ebb6415672ddf1da29ec65  libiberty/strverscmp.c
  bf4ea5614ec32141d1820716bd8709c5  libiberty/testsuite/Makefile.in
  9e858e1d84edd7cc5e1877f46bc3be65  libiberty/testsuite/d-demangle-expected
! 929dcca528168b741abb80a17625491e  libiberty/testsuite/demangle-expected
  10ce55269f247e57d2901ee11e88d8bd  libiberty/testsuite/demangler-fuzzer.c
  8b476ce26e8583eea8df7d77fe287a5a  libiberty/testsuite/test-demangle.c
  d629c8f2adde10d53657e437416cf27f  libiberty/testsuite/test-expandargv.c
*************** cdc140ce93944c5bb2ac62cd3dfd86d6  libibe
*** 58214,58220 ****
  6f774a92661ca4a067f1691a7925524b  libiberty/xstrerror.c
  c6e7ef53b4ff115a136d917511222656  libiberty/xstrndup.c
  2f875f0d4ecdb15ca4d5a65ba2d56a93  libiberty/xvasprintf.c
! be81059d0e804fd0f28250818bf63fb4  libitm/ChangeLog
  800745ad84882bc445410a58c2fddd51  libitm/Makefile.am
  232e2b039eaa7ea7006437397392ae64  libitm/Makefile.in
  12dd21dc261b9f7121f33bfedd52eadf  libitm/aatree.cc
--- 58567,58573 ----
  6f774a92661ca4a067f1691a7925524b  libiberty/xstrerror.c
  c6e7ef53b4ff115a136d917511222656  libiberty/xstrndup.c
  2f875f0d4ecdb15ca4d5a65ba2d56a93  libiberty/xvasprintf.c
! 58054218a0177bd2ee8ec5b6acc33ce7  libitm/ChangeLog
  800745ad84882bc445410a58c2fddd51  libitm/Makefile.am
  232e2b039eaa7ea7006437397392ae64  libitm/Makefile.in
  12dd21dc261b9f7121f33bfedd52eadf  libitm/aatree.cc
*************** f0d748e975d38acc54f3f20ddb101131  libitm
*** 58277,58283 ****
  cc44720eed2095c2e33a9822c78d4bad  libitm/dispatch.h
  6a193dcdf5055d468fe60a28bde299d9  libitm/eh_cpp.cc
  f78baec1d1eab254abc8070e717d0eaf  libitm/libitm.h
! e16c5b656f17d822f043142291d2e2c3  libitm/libitm.info
  8d44f8cc119e5c7cbc20c558b551475b  libitm/libitm.map
  ea467d7117853d139bb288ab75261139  libitm/libitm.spec.in
  3edc18f025f6fca2c5f78561df6d6fb1  libitm/libitm.texi
--- 58630,58636 ----
  cc44720eed2095c2e33a9822c78d4bad  libitm/dispatch.h
  6a193dcdf5055d468fe60a28bde299d9  libitm/eh_cpp.cc
  f78baec1d1eab254abc8070e717d0eaf  libitm/libitm.h
! e497b45a59c2875f45495c94e2b8a1b1  libitm/libitm.info
  8d44f8cc119e5c7cbc20c558b551475b  libitm/libitm.map
  ea467d7117853d139bb288ab75261139  libitm/libitm.spec.in
  3edc18f025f6fca2c5f78561df6d6fb1  libitm/libitm.texi
*************** ef24198422c19f99b0c41be6a16f7081  libitm
*** 58317,58323 ****
  51dca9f5bac1a7401ef8fe2e8a1bc266  libitm/useraction.cc
  a73f47caf40af3aa9d99fd40be255e9f  libitm/util.cc
  94d55d512a9ba36caa9b7df079bae19f  libjava/COPYING
! 3dfa41158145ebed68378a997271055e  libjava/ChangeLog
  03e1f38b916604fdf1470238201325f3  libjava/ChangeLog-1998
  691acb61fbd6a2235826ff55db5578be  libjava/ChangeLog-1999
  b58c6701706771a02bf00a77666941ef  libjava/ChangeLog-2000
--- 58670,58676 ----
  51dca9f5bac1a7401ef8fe2e8a1bc266  libitm/useraction.cc
  a73f47caf40af3aa9d99fd40be255e9f  libitm/util.cc
  94d55d512a9ba36caa9b7df079bae19f  libjava/COPYING
! d760cfbfe2dbb3b80288be4690fc1a06  libjava/ChangeLog
  03e1f38b916604fdf1470238201325f3  libjava/ChangeLog-1998
  691acb61fbd6a2235826ff55db5578be  libjava/ChangeLog-1999
  b58c6701706771a02bf00a77666941ef  libjava/ChangeLog-2000
*************** de54f80484e640306e109e785e4611c8  libjav
*** 58359,58365 ****
  880a25226e4e4e4c241663041d24f8dd  libjava/classpath/AUTHORS
  efd97e0bb913655e0c8b16fa78bdded4  libjava/classpath/BUGS
  af0004801732bc4b20d90f351cf80510  libjava/classpath/COPYING
! 6fb5de6f5688430ac05d9c073859ca21  libjava/classpath/ChangeLog
  3418fae58de967afe26d915a4b18d82c  libjava/classpath/ChangeLog-2003
  a5b72adb94a3c362738b0f52e57a82af  libjava/classpath/ChangeLog-2004
  61159c6e0802d0d2a92b3051003db5c5  libjava/classpath/ChangeLog-2005
--- 58712,58718 ----
  880a25226e4e4e4c241663041d24f8dd  libjava/classpath/AUTHORS
  efd97e0bb913655e0c8b16fa78bdded4  libjava/classpath/BUGS
  af0004801732bc4b20d90f351cf80510  libjava/classpath/COPYING
! ed84fd2a9d4853ca696f8321cde9b928  libjava/classpath/ChangeLog
  3418fae58de967afe26d915a4b18d82c  libjava/classpath/ChangeLog-2003
  a5b72adb94a3c362738b0f52e57a82af  libjava/classpath/ChangeLog-2004
  61159c6e0802d0d2a92b3051003db5c5  libjava/classpath/ChangeLog-2005
*************** a6cedb4991503f803e9f0870daf59c13  libjav
*** 58397,58417 ****
  b343eec566430e85d1f95c21438aa4ee  libjava/classpath/doc/api/Makefile.am
  8f716e277c4626f1f81544c6291101b3  libjava/classpath/doc/api/Makefile.in
  5ddd829b35fc94b0cdb119084089edb8  libjava/classpath/doc/cp-hacking.texinfo
! f9b69945c494e97650bbd895e445761d  libjava/classpath/doc/cp-tools.info
  0349e5c38c548584225423ef4bafd20b  libjava/classpath/doc/cp-tools.texinfo
  3155d9bd9a7bf4aff2ff0dfe4a2cb878  libjava/classpath/doc/cp-vmintegration.texinfo
! 2f0951df13268b63036fe5f1f7cc6859  libjava/classpath/doc/gappletviewer.1
! c142f978a30ba30a9c2eaefd681ba55b  libjava/classpath/doc/gjar.1
! b08f162d774835947486befbfb604e6b  libjava/classpath/doc/gjarsigner.1
! dc49c511b75ca74113a8590542490fd1  libjava/classpath/doc/gjavah.1
! 38d0b1743293573cb72dba69d25301db  libjava/classpath/doc/gjdoc.1
! 0e06efea38cccc559dfbc603eb320dd1  libjava/classpath/doc/gkeytool.1
! fc480e1785ebbb6a594757ccf5dc5cd0  libjava/classpath/doc/gnative2ascii.1
! 5c4d6b3f673e5cd09e3c93657ca2905e  libjava/classpath/doc/gorbd.1
! f288a8e43118d109cea87e9eb9e4668d  libjava/classpath/doc/grmid.1
! cb7926120ae2166df02d39b2fac1949d  libjava/classpath/doc/grmiregistry.1
! ea6483b026507cabc8fe3a5762d157c8  libjava/classpath/doc/gserialver.1
! 4be1cd763ad810fc2962bfe706d23b43  libjava/classpath/doc/gtnameserv.1
  7e4e31659df1c7e815f9151958dceef2  libjava/classpath/doc/texi2pod.pl
  01b23c87dcf82048a5958c8224653305  libjava/classpath/doc/texinfo.tex
  b1e0c0c30547d57d7a09b04d47c70b06  libjava/classpath/examples/.cvsignore
--- 58750,58770 ----
  b343eec566430e85d1f95c21438aa4ee  libjava/classpath/doc/api/Makefile.am
  8f716e277c4626f1f81544c6291101b3  libjava/classpath/doc/api/Makefile.in
  5ddd829b35fc94b0cdb119084089edb8  libjava/classpath/doc/cp-hacking.texinfo
! 4462ed34d5cb7ce2d72cf955dd003c93  libjava/classpath/doc/cp-tools.info
  0349e5c38c548584225423ef4bafd20b  libjava/classpath/doc/cp-tools.texinfo
  3155d9bd9a7bf4aff2ff0dfe4a2cb878  libjava/classpath/doc/cp-vmintegration.texinfo
! 88b4d6d549e283b09d11ccb47b2429ae  libjava/classpath/doc/gappletviewer.1
! eaabad7447280c868bf9c119680555c7  libjava/classpath/doc/gjar.1
! 6cebc72906660db45ee06ff98796ac67  libjava/classpath/doc/gjarsigner.1
! b97455338ed452b0ccc2e06902245546  libjava/classpath/doc/gjavah.1
! bd8601fff3dcd9e0dc012e3ab07c527a  libjava/classpath/doc/gjdoc.1
! d11abc9fdc9e77dd73a4936823379a81  libjava/classpath/doc/gkeytool.1
! eb3132fbd57b03841838c52c50071937  libjava/classpath/doc/gnative2ascii.1
! 4cd949899338cdd73a8bf39322905eaf  libjava/classpath/doc/gorbd.1
! e97aa261b619e5b0ddceeacdab811ad7  libjava/classpath/doc/grmid.1
! e41c6856156b2461c929cc7ee1544c6b  libjava/classpath/doc/grmiregistry.1
! 8f1c7d13acda63b445dbbdfe42ce2f8d  libjava/classpath/doc/gserialver.1
! 07887368609e04a04c056ea0c5a987a6  libjava/classpath/doc/gtnameserv.1
  7e4e31659df1c7e815f9151958dceef2  libjava/classpath/doc/texi2pod.pl
  01b23c87dcf82048a5958c8224653305  libjava/classpath/doc/texinfo.tex
  b1e0c0c30547d57d7a09b04d47c70b06  libjava/classpath/examples/.cvsignore
*************** c4f13c76610deabfbf13fce4ed092a52  libjav
*** 76669,76675 ****
  1faaf0b92549ee71e16eb962081a1872  libjava/include/execution.h
  ed8221ad16d866991c87f374d0d6f8ac  libjava/include/freebsd-signal.h
  09a868e3190a355e45b5c4cee892bb03  libjava/include/hppa-signal.h
! 91ff4b6a8a20f1f33d47756e0dbbba33  libjava/include/i386-signal.h
  7d0076c1f7f281bd8d753319bf454030  libjava/include/java-assert.h
  d66bf0f1a1d12efd11fc047959c52eab  libjava/include/java-chardecomp.h
  201317d1f75ba272abb6263909ed4427  libjava/include/java-chartables.h
--- 77022,77028 ----
  1faaf0b92549ee71e16eb962081a1872  libjava/include/execution.h
  ed8221ad16d866991c87f374d0d6f8ac  libjava/include/freebsd-signal.h
  09a868e3190a355e45b5c4cee892bb03  libjava/include/hppa-signal.h
! ab457bf4271dd7bdd234922138b6e3b0  libjava/include/i386-signal.h
  7d0076c1f7f281bd8d753319bf454030  libjava/include/java-assert.h
  d66bf0f1a1d12efd11fc047959c52eab  libjava/include/java-chardecomp.h
  201317d1f75ba272abb6263909ed4427  libjava/include/java-chartables.h
*************** c90f18ac05fb055c54f64951e7cfe38c  libjav
*** 76691,76703 ****
  fe798ea9b01475cd5aef25ba976d5c6c  libjava/include/posix-threads.h
  35f6b405f2474f5bfd7542ffb405e6ea  libjava/include/posix.h
  39567a786a96e4caf11e79958c9c6478  libjava/include/powerpc-signal.h
! a7e7d0e74aa09f4b1dbeb93b11fbccd3  libjava/include/s390-signal.h
  3b6efcc23c74f59be6eb053a871e0054  libjava/include/sh-signal.h
  1ded054093de910d9786c62bc4fe8cc6  libjava/include/stamp-h.in
  fcc68eea0e37ca05d241fcd08098f4d2  libjava/include/win32-signal.h
  cff451012603b0e968c4a532b81ce111  libjava/include/win32-threads.h
  a35cc4de347a79bb1f0d6e07524673ea  libjava/include/win32.h
! bba824e7dbbb44e45c1f3c12d5e48b91  libjava/include/x86_64-signal.h
  dc82ab7a9f0adeb2ce23d76a54149cce  libjava/interpret-run.cc
  cf9d946fce6b09d9a87ce52af038120d  libjava/interpret.cc
  47bcf8aa4e9faeac1d3f56fe68104ed4  libjava/java/applet/Applet$AccessibleApplet.h
--- 77044,77056 ----
  fe798ea9b01475cd5aef25ba976d5c6c  libjava/include/posix-threads.h
  35f6b405f2474f5bfd7542ffb405e6ea  libjava/include/posix.h
  39567a786a96e4caf11e79958c9c6478  libjava/include/powerpc-signal.h
! 7fd65fb6417fc8c18aabaa020f06f061  libjava/include/s390-signal.h
  3b6efcc23c74f59be6eb053a871e0054  libjava/include/sh-signal.h
  1ded054093de910d9786c62bc4fe8cc6  libjava/include/stamp-h.in
  fcc68eea0e37ca05d241fcd08098f4d2  libjava/include/win32-signal.h
  cff451012603b0e968c4a532b81ce111  libjava/include/win32-threads.h
  a35cc4de347a79bb1f0d6e07524673ea  libjava/include/win32.h
! 668be378f580dd3e51e79ec3e891b4cb  libjava/include/x86_64-signal.h
  dc82ab7a9f0adeb2ce23d76a54149cce  libjava/interpret-run.cc
  cf9d946fce6b09d9a87ce52af038120d  libjava/interpret.cc
  47bcf8aa4e9faeac1d3f56fe68104ed4  libjava/java/applet/Applet$AccessibleApplet.h
*************** a40a8f1527e2703fe2f08bf7276d8591  libjav
*** 80629,80635 ****
  697ca1de35069bd86456a5a19b9c4f11  libjava/libgcj.ver
  184718636f014ef2ca46d62ba8d6c3bf  libjava/libgcj_bc.c
  e3eda01d9815f8d24aae2dbd89b68b06  libjava/libltdl/COPYING.LIB
! cdc964ea5d8afe276afd4019730755dc  libjava/libltdl/ChangeLog
  349267319e3d55dcf180a20f85394144  libjava/libltdl/Makefile.am
  930c6383a37e6cc8e0625c9a281eda95  libjava/libltdl/Makefile.in
  36da24f9facf00b349ea10dba3789d92  libjava/libltdl/README
--- 80982,80988 ----
  697ca1de35069bd86456a5a19b9c4f11  libjava/libgcj.ver
  184718636f014ef2ca46d62ba8d6c3bf  libjava/libgcj_bc.c
  e3eda01d9815f8d24aae2dbd89b68b06  libjava/libltdl/COPYING.LIB
! 1f641d4d380725a7081310325db7e0f3  libjava/libltdl/ChangeLog
  349267319e3d55dcf180a20f85394144  libjava/libltdl/Makefile.am
  930c6383a37e6cc8e0625c9a281eda95  libjava/libltdl/Makefile.in
  36da24f9facf00b349ea10dba3789d92  libjava/libltdl/README
*************** d41d8cd98f00b204e9800998ecf8427e  libjav
*** 82327,82333 ****
  434ac04eb066f5075299583492846410  libjava/verify.cc
  355440a0c2fb5e16259d7ae381b37ed5  libjava/win32-threads.cc
  434d5e5e91727dec004f0d1d1fab47ec  libjava/win32.cc
! cc463ee15c3677603c4b4546f7cc00f8  libmpx/ChangeLog
  38b5a5961bf81cf96b7905974a000dc2  libmpx/Makefile.am
  c06ae006bd8b424e4f061799aef2cdda  libmpx/Makefile.in
  9883ed42b491d8aea83fdde90561cf2a  libmpx/acinclude.m4
--- 82680,82686 ----
  434ac04eb066f5075299583492846410  libjava/verify.cc
  355440a0c2fb5e16259d7ae381b37ed5  libjava/win32-threads.cc
  434d5e5e91727dec004f0d1d1fab47ec  libjava/win32.cc
! 0bd71d70ec31ccadcafcbf59576243ec  libmpx/ChangeLog
  38b5a5961bf81cf96b7905974a000dc2  libmpx/Makefile.am
  c06ae006bd8b424e4f061799aef2cdda  libmpx/Makefile.in
  9883ed42b491d8aea83fdde90561cf2a  libmpx/acinclude.m4
*************** b8cda9498fe438be172ab60c127bcab9  libmpx
*** 82350,82356 ****
  e7c62aca341ea472234d7cb0bc4af328  libmpx/mpxwrap/libmpxwrappers.map
  145eb76d9c7fdca67f6c135e1cefee8c  libmpx/mpxwrap/libtool-version
  9c96cc2c84e2e0726087f88be3ab89df  libmpx/mpxwrap/mpx_wrappers.c
! 8d9f6a08be9dfc9ea42d82fc026c2081  libobjc/ChangeLog
  763220a9cda9d9f00753d8a6c0fe39be  libobjc/Makefile.in
  d0e1ce0d22f4a70cc281a309ea68b3ed  libobjc/NXConstStr.m
  5ba66867b28782599f757e4f75abede5  libobjc/Object.m
--- 82703,82709 ----
  e7c62aca341ea472234d7cb0bc4af328  libmpx/mpxwrap/libmpxwrappers.map
  145eb76d9c7fdca67f6c135e1cefee8c  libmpx/mpxwrap/libtool-version
  9c96cc2c84e2e0726087f88be3ab89df  libmpx/mpxwrap/mpx_wrappers.c
! 8878808d2ce038a2b5b299f9c1b249a0  libobjc/ChangeLog
  763220a9cda9d9f00753d8a6c0fe39be  libobjc/Makefile.in
  d0e1ce0d22f4a70cc281a309ea68b3ed  libobjc/NXConstStr.m
  5ba66867b28782599f757e4f75abede5  libobjc/Object.m
*************** c82e20b14bd8b45d9be26b4a4cc63a7c  libobj
*** 82407,82413 ****
  f16af417a86429e829800ada9bca9a38  libobjc/selector.c
  8dc0dccd7fc33f25c2112f5b316edee4  libobjc/sendmsg.c
  9eddfa400f3da7d2b87c28df3fdbfbff  libobjc/thr.c
! 38c5e649641ad793b38610fed85bd8ce  liboffloadmic/ChangeLog
  d9379a7f4b270d8037af9b022d97162a  liboffloadmic/Makefile.am
  db648fbd37bdf650ef8973a828df451c  liboffloadmic/Makefile.in
  bef8d5fd63eb08613df8c899248a1b52  liboffloadmic/aclocal.m4
--- 82760,82766 ----
  f16af417a86429e829800ada9bca9a38  libobjc/selector.c
  8dc0dccd7fc33f25c2112f5b316edee4  libobjc/sendmsg.c
  9eddfa400f3da7d2b87c28df3fdbfbff  libobjc/thr.c
! 803e5faabe9fc8e62d2325e7adc6d10b  liboffloadmic/ChangeLog
  d9379a7f4b270d8037af9b022d97162a  liboffloadmic/Makefile.am
  db648fbd37bdf650ef8973a828df451c  liboffloadmic/Makefile.in
  bef8d5fd63eb08613df8c899248a1b52  liboffloadmic/aclocal.m4
*************** c7f927dc439cfa088672cf6f24109c7a  liboff
*** 82506,82512 ****
  dff5c8575c49d6aa71e549b0fa021479  liboffloadmic/runtime/orsl-lite/version.txt
  ea59b10dc6472b3058f3f2ca1e7eab73  liboffloadmic/runtime/use_mpss2.txt
  a916467b91076e631dd8edb7424769c7  libquadmath/COPYING.LIB
! de73725f849dafb8a296e0270408b317  libquadmath/ChangeLog
  1448bac7c8ec1dcb91ad8ed1d924987e  libquadmath/Makefile.am
  bab466a846444e7cdc4b4f158b498546  libquadmath/Makefile.in
  4c8b4478a1031d129e7cc6b341876b99  libquadmath/acinclude.m4
--- 82859,82865 ----
  dff5c8575c49d6aa71e549b0fa021479  liboffloadmic/runtime/orsl-lite/version.txt
  ea59b10dc6472b3058f3f2ca1e7eab73  liboffloadmic/runtime/use_mpss2.txt
  a916467b91076e631dd8edb7424769c7  libquadmath/COPYING.LIB
! a009a6a5d70d7c48923fedf6f893b479  libquadmath/ChangeLog
  1448bac7c8ec1dcb91ad8ed1d924987e  libquadmath/Makefile.am
  bab466a846444e7cdc4b4f158b498546  libquadmath/Makefile.in
  4c8b4478a1031d129e7cc6b341876b99  libquadmath/acinclude.m4
*************** aece970dd74d47d051257c4d4d1e91fa  libqua
*** 82514,82520 ****
  bf09ede5c6d78e3d132bde0f933590d8  libquadmath/config.h.in
  0caf55cff821abd477a577911f10bb88  libquadmath/configure
  29e66c9d2ef7b7621276c63bee20d622  libquadmath/configure.ac
! 80f130f61181e92a55cb6fad08c8215d  libquadmath/libquadmath.info
  508b832d29d5c4de0127dd1e89426d56  libquadmath/libquadmath.texi
  77280bb7ee423875e03d9c0d34527df6  libquadmath/libtool-version
  f44065462735b4699d44588271a5f09a  libquadmath/math/acoshq.c
--- 82867,82873 ----
  bf09ede5c6d78e3d132bde0f933590d8  libquadmath/config.h.in
  0caf55cff821abd477a577911f10bb88  libquadmath/configure
  29e66c9d2ef7b7621276c63bee20d622  libquadmath/configure.ac
! ea33a867263cfd24bbedead786520e25  libquadmath/libquadmath.info
  508b832d29d5c4de0127dd1e89426d56  libquadmath/libquadmath.texi
  77280bb7ee423875e03d9c0d34527df6  libquadmath/libtool-version
  f44065462735b4699d44588271a5f09a  libquadmath/math/acoshq.c
*************** faf9f5ae44363f9f6507c0011d46db13  libqua
*** 82589,82595 ****
  d2a9f3ef6892596a69d2b49807b7ec84  libquadmath/math/remainderq.c
  7e5da1ab7b5e81c6b3b2a1a459e75533  libquadmath/math/remquoq.c
  0c856dcd115d0745afdd5e2cf93d7af5  libquadmath/math/rintq.c
! 5e6d299d4271aedb52f70a52b43d0297  libquadmath/math/roundq.c
  9432aa412a476bd039bef505158b67bb  libquadmath/math/scalblnq.c
  e0a518547cd1a798af59f2b2a71f9516  libquadmath/math/scalbnq.c
  95483c7c7403c55b0257b2f7613f144c  libquadmath/math/signbitq.c
--- 82942,82948 ----
  d2a9f3ef6892596a69d2b49807b7ec84  libquadmath/math/remainderq.c
  7e5da1ab7b5e81c6b3b2a1a459e75533  libquadmath/math/remquoq.c
  0c856dcd115d0745afdd5e2cf93d7af5  libquadmath/math/rintq.c
! f9ba4d7c854e3e920e53f280c53554ba  libquadmath/math/roundq.c
  9432aa412a476bd039bef505158b67bb  libquadmath/math/scalblnq.c
  e0a518547cd1a798af59f2b2a71f9516  libquadmath/math/scalbnq.c
  95483c7c7403c55b0257b2f7613f144c  libquadmath/math/signbitq.c
*************** e766022f8615b72cbc38335d262e9d3d  libqua
*** 82637,82643 ****
  a81cc82679e80c86cfbd5575867450d0  libquadmath/strtod/strtod_l.c
  da808e110fc09ebd41ebd405790a70df  libquadmath/strtod/strtoflt128.c
  d15a18f7c46ba2add6148edc5b7563c0  libquadmath/strtod/tens_in_limb.c
! e456c86a1637b73152682035f97cada0  libsanitizer/ChangeLog
  0249c37748936faf5b1efd5789587909  libsanitizer/LICENSE.TXT
  7e6fd996e5c8c788163f86d752c1f4d4  libsanitizer/MERGE
  cd6c39551a9d69f3b38689389e5513be  libsanitizer/Makefile.am
--- 82990,82996 ----
  a81cc82679e80c86cfbd5575867450d0  libquadmath/strtod/strtod_l.c
  da808e110fc09ebd41ebd405790a70df  libquadmath/strtod/strtoflt128.c
  d15a18f7c46ba2add6148edc5b7563c0  libquadmath/strtod/tens_in_limb.c
! 3a323f01b6afb56de0f3f8706ffd8e30  libsanitizer/ChangeLog
  0249c37748936faf5b1efd5789587909  libsanitizer/LICENSE.TXT
  7e6fd996e5c8c788163f86d752c1f4d4  libsanitizer/MERGE
  cd6c39551a9d69f3b38689389e5513be  libsanitizer/Makefile.am
*************** e2e43e7a8f91470f12e62cdbd16a6b7b  libsan
*** 82655,82667 ****
  9e25e6ed0878262abbb32af400b51332  libsanitizer/asan/asan_fake_stack.cc
  3f2e6efe438573ebc727d40bd73600b2  libsanitizer/asan/asan_fake_stack.h
  bff9fcd61a3b7308ef806ba79cae807a  libsanitizer/asan/asan_flags.h
! 318c1e07c69370e1160e7b8038766aa3  libsanitizer/asan/asan_globals.cc
  c9e3e373cdea9a94369f083d3dd574a3  libsanitizer/asan/asan_init_version.h
  c589debb984a2a2e9e8310f0189ca278  libsanitizer/asan/asan_interceptors.cc
  0cf374ded3eec9201dcb25743e6b1343  libsanitizer/asan/asan_interceptors.h
  3f228ea8e201536005c8ee73f01f1554  libsanitizer/asan/asan_interface_internal.h
  ceeca9aa72576616cd62326dae394ace  libsanitizer/asan/asan_internal.h
! 7f8025c84cc15bcad8696ac479b00f6b  libsanitizer/asan/asan_linux.cc
  68b329da9893e34099c7d8ad5cb9c940  libsanitizer/asan/asan_lock.h
  ebb6b1529cb179cba650758f6ca55c42  libsanitizer/asan/asan_mac.cc
  7f4eda2466f1bea4ffea043b3ad74fb1  libsanitizer/asan/asan_malloc_linux.cc
--- 83008,83020 ----
  9e25e6ed0878262abbb32af400b51332  libsanitizer/asan/asan_fake_stack.cc
  3f2e6efe438573ebc727d40bd73600b2  libsanitizer/asan/asan_fake_stack.h
  bff9fcd61a3b7308ef806ba79cae807a  libsanitizer/asan/asan_flags.h
! d4a37c1da7781d76a53dde1c7af5e9ac  libsanitizer/asan/asan_globals.cc
  c9e3e373cdea9a94369f083d3dd574a3  libsanitizer/asan/asan_init_version.h
  c589debb984a2a2e9e8310f0189ca278  libsanitizer/asan/asan_interceptors.cc
  0cf374ded3eec9201dcb25743e6b1343  libsanitizer/asan/asan_interceptors.h
  3f228ea8e201536005c8ee73f01f1554  libsanitizer/asan/asan_interface_internal.h
  ceeca9aa72576616cd62326dae394ace  libsanitizer/asan/asan_internal.h
! fc8dad21adc13a03103e1a84e73b8ee3  libsanitizer/asan/asan_linux.cc
  68b329da9893e34099c7d8ad5cb9c940  libsanitizer/asan/asan_lock.h
  ebb6b1529cb179cba650758f6ca55c42  libsanitizer/asan/asan_mac.cc
  7f4eda2466f1bea4ffea043b3ad74fb1  libsanitizer/asan/asan_malloc_linux.cc
*************** f9cbdce21b8eb550bf817e5a78bbb60b  libsan
*** 82752,82758 ****
  40f1f8c70306b4bd87eaf2b49f038521  libsanitizer/sanitizer_common/sanitizer_bvgraph.h
  e0ee5aa3d212e79d046854b727eb7856  libsanitizer/sanitizer_common/sanitizer_common.cc
  260b73a1e54c66318253ccb35531e49d  libsanitizer/sanitizer_common/sanitizer_common.h
! 6849277da117396550752c1cbabff154  libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc
  a277e925307182488fdcefc55d6b5fdf  libsanitizer/sanitizer_common/sanitizer_common_interceptors_format.inc
  61354e278f0f8ebb246a86aa16206f57  libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
  788f997999819721343cc44c2cd77078  libsanitizer/sanitizer_common/sanitizer_common_libcdep.cc
--- 83105,83111 ----
  40f1f8c70306b4bd87eaf2b49f038521  libsanitizer/sanitizer_common/sanitizer_bvgraph.h
  e0ee5aa3d212e79d046854b727eb7856  libsanitizer/sanitizer_common/sanitizer_common.cc
  260b73a1e54c66318253ccb35531e49d  libsanitizer/sanitizer_common/sanitizer_common.h
! 1e849be95c55a86f4bc92c8870058939  libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc
  a277e925307182488fdcefc55d6b5fdf  libsanitizer/sanitizer_common/sanitizer_common_interceptors_format.inc
  61354e278f0f8ebb246a86aa16206f57  libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
  788f997999819721343cc44c2cd77078  libsanitizer/sanitizer_common/sanitizer_common_libcdep.cc
*************** fb5a0dd8bbbe6d8f4c17b5a334efb363  libsan
*** 82773,82780 ****
  b8cf91a8004063e818ddc3b974684dd0  libsanitizer/sanitizer_common/sanitizer_libc.h
  87431ff0083dce8922163f8d02ab2d57  libsanitizer/sanitizer_common/sanitizer_libignore.cc
  7084d1167f0373c4c33ac55278b52d12  libsanitizer/sanitizer_common/sanitizer_libignore.h
! d8d695171c2d3b30da0688ae6152387f  libsanitizer/sanitizer_common/sanitizer_linux.cc
! f64151b252ebb4dfbc03161aa08c0629  libsanitizer/sanitizer_common/sanitizer_linux.h
  0afc9fdb4e7311045444aad3ba62ed9d  libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cc
  101b68cc2e80c2e6adaff9bb138dbdff  libsanitizer/sanitizer_common/sanitizer_list.h
  8ac36428f3417827bce4e4c65628842b  libsanitizer/sanitizer_common/sanitizer_mac.cc
--- 83126,83133 ----
  b8cf91a8004063e818ddc3b974684dd0  libsanitizer/sanitizer_common/sanitizer_libc.h
  87431ff0083dce8922163f8d02ab2d57  libsanitizer/sanitizer_common/sanitizer_libignore.cc
  7084d1167f0373c4c33ac55278b52d12  libsanitizer/sanitizer_common/sanitizer_libignore.h
! a7257e086c40925ffc08b3207dfa32b6  libsanitizer/sanitizer_common/sanitizer_linux.cc
! 748a548f324019f73a2f57c544d64003  libsanitizer/sanitizer_common/sanitizer_linux.h
  0afc9fdb4e7311045444aad3ba62ed9d  libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cc
  101b68cc2e80c2e6adaff9bb138dbdff  libsanitizer/sanitizer_common/sanitizer_list.h
  8ac36428f3417827bce4e4c65628842b  libsanitizer/sanitizer_common/sanitizer_mac.cc
*************** f64151b252ebb4dfbc03161aa08c0629  libsan
*** 82786,82793 ****
  dde8b3295dbc6c33f147dca267d0a33d  libsanitizer/sanitizer_common/sanitizer_platform.h
  6c38f939b0010f3c042dec9895324f02  libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h
  3af384999d9dcbaba93afe259ebfc361  libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc
! da589ca043b230c90f0d0dce66da1951  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
! bc5b5f6488dbd05b55e941a5aa3ca27a  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
  ea014a2fe636d7ffd148250edccf011b  libsanitizer/sanitizer_common/sanitizer_posix.cc
  204afcb2b1e92a8218f9b5ea218e4d7d  libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cc
  f43416744951b051f261bb2641ea69ff  libsanitizer/sanitizer_common/sanitizer_printf.cc
--- 83139,83146 ----
  dde8b3295dbc6c33f147dca267d0a33d  libsanitizer/sanitizer_common/sanitizer_platform.h
  6c38f939b0010f3c042dec9895324f02  libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h
  3af384999d9dcbaba93afe259ebfc361  libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc
! ce301ed58db3dd93eb0998e92fe42c3a  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
! 63b5c193fcc43ef0bec93f366fbb9270  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
  ea014a2fe636d7ffd148250edccf011b  libsanitizer/sanitizer_common/sanitizer_posix.cc
  204afcb2b1e92a8218f9b5ea218e4d7d  libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cc
  f43416744951b051f261bb2641ea69ff  libsanitizer/sanitizer_common/sanitizer_printf.cc
*************** ff09e59b621101f99f926e70b40f72a9  libsan
*** 82807,82813 ****
  1cd47ca2eb36c598a4a004a560b57269  libsanitizer/sanitizer_common/sanitizer_stacktrace_printer.cc
  50aa19a1c254c05b1a1827518c8be028  libsanitizer/sanitizer_common/sanitizer_stacktrace_printer.h
  71553695c0220a372f8f1017f387f1d4  libsanitizer/sanitizer_common/sanitizer_stoptheworld.h
! eee1bc8602e20727f8152fde0d1e31d9  libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc
  2d0f12de58f74668f495bfd2e80338be  libsanitizer/sanitizer_common/sanitizer_suppressions.cc
  b97fe46f19659c5565f886fd9cc2f7a7  libsanitizer/sanitizer_common/sanitizer_suppressions.h
  a52600751ce2629ad4ed7621eed96f13  libsanitizer/sanitizer_common/sanitizer_symbolizer.cc
--- 83160,83166 ----
  1cd47ca2eb36c598a4a004a560b57269  libsanitizer/sanitizer_common/sanitizer_stacktrace_printer.cc
  50aa19a1c254c05b1a1827518c8be028  libsanitizer/sanitizer_common/sanitizer_stacktrace_printer.h
  71553695c0220a372f8f1017f387f1d4  libsanitizer/sanitizer_common/sanitizer_stoptheworld.h
! 0d9c3a2ce3e2f33c455a7cb17fea4f11  libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc
  2d0f12de58f74668f495bfd2e80338be  libsanitizer/sanitizer_common/sanitizer_suppressions.cc
  b97fe46f19659c5565f886fd9cc2f7a7  libsanitizer/sanitizer_common/sanitizer_suppressions.h
  a52600751ce2629ad4ed7621eed96f13  libsanitizer/sanitizer_common/sanitizer_symbolizer.cc
*************** fb0d314e8f79beda3e4f5e9d34e6e037  libsan
*** 82855,82866 ****
  3f67a27ad5aa85607f89d53dfc8f8bb7  libsanitizer/tsan/tsan_mutexset.cc
  c9066a77a2c96f050e7b42febcff4b40  libsanitizer/tsan/tsan_mutexset.h
  56fa54c1092ac15d76e2e78ca29f05a4  libsanitizer/tsan/tsan_platform.h
! 155e69915833d86f8661bbbbc2a832c4  libsanitizer/tsan/tsan_platform_linux.cc
  9d6da11192fb1ea93028c51474f387a2  libsanitizer/tsan/tsan_platform_mac.cc
  cfd3c5f894450c981d3355a570520309  libsanitizer/tsan/tsan_platform_windows.cc
  8b422a5c4555affacc536e07011380c7  libsanitizer/tsan/tsan_report.cc
  f6b5c5f5344c28ee744c27f55001bd0f  libsanitizer/tsan/tsan_report.h
! df4e10595815f681c1de02ec7ec264a5  libsanitizer/tsan/tsan_rtl.cc
  740532c6728d8419d79218a4ffd6ecc1  libsanitizer/tsan/tsan_rtl.h
  b0666e41ed119190dc36403e13d64a8f  libsanitizer/tsan/tsan_rtl_amd64.S
  347eb27d3ef088c0917d89530c7918d6  libsanitizer/tsan/tsan_rtl_mutex.cc
--- 83208,83219 ----
  3f67a27ad5aa85607f89d53dfc8f8bb7  libsanitizer/tsan/tsan_mutexset.cc
  c9066a77a2c96f050e7b42febcff4b40  libsanitizer/tsan/tsan_mutexset.h
  56fa54c1092ac15d76e2e78ca29f05a4  libsanitizer/tsan/tsan_platform.h
! c3f9f18331dc3c3c4595be7b0980791e  libsanitizer/tsan/tsan_platform_linux.cc
  9d6da11192fb1ea93028c51474f387a2  libsanitizer/tsan/tsan_platform_mac.cc
  cfd3c5f894450c981d3355a570520309  libsanitizer/tsan/tsan_platform_windows.cc
  8b422a5c4555affacc536e07011380c7  libsanitizer/tsan/tsan_report.cc
  f6b5c5f5344c28ee744c27f55001bd0f  libsanitizer/tsan/tsan_report.h
! 87f97be1e31b2ce722540a6c09d9dcaf  libsanitizer/tsan/tsan_rtl.cc
  740532c6728d8419d79218a4ffd6ecc1  libsanitizer/tsan/tsan_rtl.h
  b0666e41ed119190dc36403e13d64a8f  libsanitizer/tsan/tsan_rtl_amd64.S
  347eb27d3ef088c0917d89530c7918d6  libsanitizer/tsan/tsan_rtl_mutex.cc
*************** cf771d340a7607a12d384bb5d20c4dd1  libsan
*** 82896,82902 ****
  2219f17a5c8740755ef8e9831cbaa8fe  libsanitizer/ubsan/ubsan_type_hash.h
  ca39ca0c05ea0a6b9d3038da3653ab4d  libsanitizer/ubsan/ubsan_value.cc
  324234cf794b69cb2bff3c3e5f4ad947  libsanitizer/ubsan/ubsan_value.h
! 68764d77398b1bc14d7d74d0b18c64f2  libssp/ChangeLog
  01d9954c400db04da1b8705029e6d9d9  libssp/Makefile.am
  6f9651cc4e77f9e7629b0142b05a90e0  libssp/Makefile.in
  8b0dd0c2a8b446bf5577a8562ad19885  libssp/aclocal.m4
--- 83249,83255 ----
  2219f17a5c8740755ef8e9831cbaa8fe  libsanitizer/ubsan/ubsan_type_hash.h
  ca39ca0c05ea0a6b9d3038da3653ab4d  libsanitizer/ubsan/ubsan_value.cc
  324234cf794b69cb2bff3c3e5f4ad947  libsanitizer/ubsan/ubsan_value.h
! 2496c2dfa54fe93ca7d88cce41b23ccd  libssp/ChangeLog
  01d9954c400db04da1b8705029e6d9d9  libssp/Makefile.am
  6f9651cc4e77f9e7629b0142b05a90e0  libssp/Makefile.in
  8b0dd0c2a8b446bf5577a8562ad19885  libssp/aclocal.m4
*************** aeb2f84c5e8ba3215469d507bd2efe57  libssp
*** 82925,82931 ****
  e9ab923d2562bf5f5be6883dfb9f0184  libssp/strncpy-chk.c
  5e0d8b8a766c31b12354baec1b7a159c  libssp/vsnprintf-chk.c
  f56ab1f8922a16f7e9e4f5270ae1e34e  libssp/vsprintf-chk.c
! 55ccb0fa9cd0b01a6baf4d7ede1f459e  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 83278,83284 ----
  e9ab923d2562bf5f5be6883dfb9f0184  libssp/strncpy-chk.c
  5e0d8b8a766c31b12354baec1b7a159c  libssp/vsnprintf-chk.c
  f56ab1f8922a16f7e9e4f5270ae1e34e  libssp/vsprintf-chk.c
! 7b42a680e93801338e3ce63cc2024a68  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** b331fae97e334afde1bd5fa125610458  libstd
*** 82946,82954 ****
  2f5e909eec2c4f92b279c38a7cb69519  libstdc++-v3/Makefile.am
  fdf3f57800ae00249d53fb959b9dbd66  libstdc++-v3/Makefile.in
  f372af73db4ac0ad88e43199e1f29e08  libstdc++-v3/README
! 0160f7988fd25808129a9f9accc570b7  libstdc++-v3/acinclude.m4
  591861c10ebb94a293dd2f26c209cb0d  libstdc++-v3/aclocal.m4
! 67fc7566dc2ccd21cc1bcf14e604f0ae  libstdc++-v3/config.h.in
  fa83f308985ab4315aa21b8ee20397d0  libstdc++-v3/config/abi/compatibility.h
  8f8278bf985edc5efd46151ae918c5a5  libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt
  c6d782dd53461a39b45d87d5854d8558  libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt
--- 83299,83307 ----
  2f5e909eec2c4f92b279c38a7cb69519  libstdc++-v3/Makefile.am
  fdf3f57800ae00249d53fb959b9dbd66  libstdc++-v3/Makefile.in
  f372af73db4ac0ad88e43199e1f29e08  libstdc++-v3/README
! 9070fb014373005bbf4f03c42509aee1  libstdc++-v3/acinclude.m4
  591861c10ebb94a293dd2f26c209cb0d  libstdc++-v3/aclocal.m4
! 504f3be081306040bd943fb6aff48ab7  libstdc++-v3/config.h.in
  fa83f308985ab4315aa21b8ee20397d0  libstdc++-v3/config/abi/compatibility.h
  8f8278bf985edc5efd46151ae918c5a5  libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt
  c6d782dd53461a39b45d87d5854d8558  libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt
*************** c09fac9d2bc106535f90bf9019d32ee2  libstd
*** 82974,82980 ****
  c2bec88149705d7d29259bc1aecf3def  libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt
  723884d82c93b73bcdc5d6e308ff20f6  libstdc++-v3/config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt
  5c4c38aeca254313c616b84337c937c3  libstdc++-v3/config/abi/pre/float128.ver
! 654a95ec5a0e2e9eb2011fc25e721f14  libstdc++-v3/config/abi/pre/gnu-versioned-namespace.ver
  3f42238ca23c358fc7e2937d955273e1  libstdc++-v3/config/abi/pre/gnu.ver
  6f099054f1d75e3e178e42c4d8e4c6e1  libstdc++-v3/config/abi/pre/none.ver
  4485e3f79adea2a511a0f612be028ab7  libstdc++-v3/config/allocator/bitmap_allocator_base.h
--- 83327,83333 ----
  c2bec88149705d7d29259bc1aecf3def  libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt
  723884d82c93b73bcdc5d6e308ff20f6  libstdc++-v3/config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt
  5c4c38aeca254313c616b84337c937c3  libstdc++-v3/config/abi/pre/float128.ver
! 9c48801f1e2365da09ab84351e72d836  libstdc++-v3/config/abi/pre/gnu-versioned-namespace.ver
  3f42238ca23c358fc7e2937d955273e1  libstdc++-v3/config/abi/pre/gnu.ver
  6f099054f1d75e3e178e42c4d8e4c6e1  libstdc++-v3/config/abi/pre/none.ver
  4485e3f79adea2a511a0f612be028ab7  libstdc++-v3/config/allocator/bitmap_allocator_base.h
*************** eca745fffa95b78067b4f5d117df2fcf  libstd
*** 83007,83013 ****
  4813dc2422aa2baa113d3987cd05d616  libstdc++-v3/config/cpu/sh/atomicity.h
  6d4cc4b67b84728431c32ffd30a44ca8  libstdc++-v3/config/cpu/sparc/atomic_word.h
  7efc9fc19e31640aa1d995fca8eb028d  libstdc++-v3/config/cpu/sparc/atomicity.h
! be22d2bbc7347b6919cc0082a0612072  libstdc++-v3/config/io/basic_file_stdio.cc
  6b29d07c8f9c4e6f73deb24dcb8efefd  libstdc++-v3/config/io/basic_file_stdio.h
  7478fd46710190cc668052049b87a562  libstdc++-v3/config/io/c_io_stdio.h
  06abcab50dea90d6c1d3a00cd3528790  libstdc++-v3/config/locale/darwin/ctype_members.cc
--- 83360,83366 ----
  4813dc2422aa2baa113d3987cd05d616  libstdc++-v3/config/cpu/sh/atomicity.h
  6d4cc4b67b84728431c32ffd30a44ca8  libstdc++-v3/config/cpu/sparc/atomic_word.h
  7efc9fc19e31640aa1d995fca8eb028d  libstdc++-v3/config/cpu/sparc/atomicity.h
! 89d99c991b9f8087088c85d23effd151  libstdc++-v3/config/io/basic_file_stdio.cc
  6b29d07c8f9c4e6f73deb24dcb8efefd  libstdc++-v3/config/io/basic_file_stdio.h
  7478fd46710190cc668052049b87a562  libstdc++-v3/config/io/c_io_stdio.h
  06abcab50dea90d6c1d3a00cd3528790  libstdc++-v3/config/locale/darwin/ctype_members.cc
*************** dae95b7d433ad7dffdc472fae36f2be7  libstd
*** 83096,83102 ****
  5ce97ddf0fa0ce05705a1d612dc8a4d4  libstdc++-v3/config/os/mingw32-w64/ctype_base.h
  7fa6f93a45c5f6b320df7db9e198ac3c  libstdc++-v3/config/os/mingw32-w64/ctype_configure_char.cc
  dff14ea49c2ab67ec07f27cec5225575  libstdc++-v3/config/os/mingw32-w64/ctype_inline.h
! c5c5b2168119e8492fb7245eaf1d9dd1  libstdc++-v3/config/os/mingw32-w64/error_constants.h
  6f852469a6af2eab03c7e7ee52d70d97  libstdc++-v3/config/os/mingw32-w64/os_defines.h
  5ce97ddf0fa0ce05705a1d612dc8a4d4  libstdc++-v3/config/os/mingw32/ctype_base.h
  7fa6f93a45c5f6b320df7db9e198ac3c  libstdc++-v3/config/os/mingw32/ctype_configure_char.cc
--- 83449,83455 ----
  5ce97ddf0fa0ce05705a1d612dc8a4d4  libstdc++-v3/config/os/mingw32-w64/ctype_base.h
  7fa6f93a45c5f6b320df7db9e198ac3c  libstdc++-v3/config/os/mingw32-w64/ctype_configure_char.cc
  dff14ea49c2ab67ec07f27cec5225575  libstdc++-v3/config/os/mingw32-w64/ctype_inline.h
! 67349358d04f533cdea3e22ebf3748ea  libstdc++-v3/config/os/mingw32-w64/error_constants.h
  6f852469a6af2eab03c7e7ee52d70d97  libstdc++-v3/config/os/mingw32-w64/os_defines.h
  5ce97ddf0fa0ce05705a1d612dc8a4d4  libstdc++-v3/config/os/mingw32/ctype_base.h
  7fa6f93a45c5f6b320df7db9e198ac3c  libstdc++-v3/config/os/mingw32/ctype_configure_char.cc
*************** ca47e264a7d2f7ab036c1b15f4fca8d5  libstd
*** 83127,83133 ****
  44ebf3566a9eb2c0bd6b70211dbd52ee  libstdc++-v3/config/os/vxworks/ctype_configure_char.cc
  6871ffb6cc72cc728f8f2181fa2fba10  libstdc++-v3/config/os/vxworks/ctype_inline.h
  263f49a737d013c791b3f8314c98ee14  libstdc++-v3/config/os/vxworks/os_defines.h
! 1244a63d5ad6b3ea2cd38db1197ce84c  libstdc++-v3/configure
  c50f3d1c1d97f0a755f473acbacd1145  libstdc++-v3/configure.ac
  665f0246f72768c0e65148e8fe68653e  libstdc++-v3/configure.host
  bf33c59a811ffe0d9bb076bf712dce55  libstdc++-v3/crossconfig.m4
--- 83480,83486 ----
  44ebf3566a9eb2c0bd6b70211dbd52ee  libstdc++-v3/config/os/vxworks/ctype_configure_char.cc
  6871ffb6cc72cc728f8f2181fa2fba10  libstdc++-v3/config/os/vxworks/ctype_inline.h
  263f49a737d013c791b3f8314c98ee14  libstdc++-v3/config/os/vxworks/os_defines.h
! fc24311874da51397bbe2aab7c9580ae  libstdc++-v3/configure
  c50f3d1c1d97f0a755f473acbacd1145  libstdc++-v3/configure.ac
  665f0246f72768c0e65148e8fe68653e  libstdc++-v3/configure.host
  bf33c59a811ffe0d9bb076bf712dce55  libstdc++-v3/crossconfig.m4
*************** bf33c59a811ffe0d9bb076bf712dce55  libstd
*** 83135,83152 ****
  b113f58ebb3a9196654d24fe999168b9  libstdc++-v3/doc/Makefile.in
  3f7ff07f68cc7610addc1921bc125548  libstdc++-v3/doc/doxygen/Intro.3
  8aeca9e72a6f3f90f4a150d1a0ac5959  libstdc++-v3/doc/doxygen/doxygroups.cc
! 6b4dbb148dedb8af46a53ccf42399cae  libstdc++-v3/doc/doxygen/mainpage.html
  3486d64b0aaa601908006a0e78395ca3  libstdc++-v3/doc/doxygen/stdheader.cc
  1273764cd133c402d2d3f22cf2913af5  libstdc++-v3/doc/doxygen/tables.html
  36624003c7160fa0f78acf3cd51e04b0  libstdc++-v3/doc/doxygen/user.cfg.in
  66e139590a163a3e9d632f33fbe1d1b3  libstdc++-v3/doc/html/README
! d706e86b296c9dee28855272900ff8aa  libstdc++-v3/doc/html/api.html
  e24504647642dbafa49db140acc95c21  libstdc++-v3/doc/html/bk02.html
  58ad49058a87b197aaddb99f389eacfa  libstdc++-v3/doc/html/bk03.html
! 1d3eb837e8c17cf0d0ad6d151e8d1777  libstdc++-v3/doc/html/ext/lwg-active.html
! 68372fa89a0decb4aa5f941df5484129  libstdc++-v3/doc/html/ext/lwg-closed.html
! 2defa75c6dc8ce9a6f6b775439df3b7c  libstdc++-v3/doc/html/ext/lwg-defects.html
! 666dcd5dffd013b5063b3349b3167e6a  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
--- 83488,83505 ----
  b113f58ebb3a9196654d24fe999168b9  libstdc++-v3/doc/Makefile.in
  3f7ff07f68cc7610addc1921bc125548  libstdc++-v3/doc/doxygen/Intro.3
  8aeca9e72a6f3f90f4a150d1a0ac5959  libstdc++-v3/doc/doxygen/doxygroups.cc
! 520db39aef0e2a59418132af88b897ed  libstdc++-v3/doc/doxygen/mainpage.html
  3486d64b0aaa601908006a0e78395ca3  libstdc++-v3/doc/doxygen/stdheader.cc
  1273764cd133c402d2d3f22cf2913af5  libstdc++-v3/doc/doxygen/tables.html
  36624003c7160fa0f78acf3cd51e04b0  libstdc++-v3/doc/doxygen/user.cfg.in
  66e139590a163a3e9d632f33fbe1d1b3  libstdc++-v3/doc/html/README
! 12cfb60becc3f2e9defd8d75a1a21e7d  libstdc++-v3/doc/html/api.html
  e24504647642dbafa49db140acc95c21  libstdc++-v3/doc/html/bk02.html
  58ad49058a87b197aaddb99f389eacfa  libstdc++-v3/doc/html/bk03.html
! ced96a2fc57fb523e0a3343ba30832e8  libstdc++-v3/doc/html/ext/lwg-active.html
! 5ad4221cbae2df0098935da3d17182b1  libstdc++-v3/doc/html/ext/lwg-closed.html
! bc6aa1ba9307f4270c7741da9c16bd85  libstdc++-v3/doc/html/ext/lwg-defects.html
! 5b0be36aa288e29d23b619d172e87fae  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
*** 83227,83233 ****
  33bc39e8f2d47f3d490d7ca7d4832b43  libstdc++-v3/doc/html/images/pbds_trie_node_updator_policy_cd.png
  df705f3839120dcb896e9839cf3404d0  libstdc++-v3/doc/html/images/pbds_update_seq_diagram.png
  8addfbb9a182e8be15eaed9c9dd8720e  libstdc++-v3/doc/html/index.html
! d8c3162bcbf2f79d7602249b6735d199  libstdc++-v3/doc/html/manual/abi.html
  c50671050ff8de94cc275131201e5bd7  libstdc++-v3/doc/html/manual/algorithms.html
  15818058c9d4057decee4a010f50ee09  libstdc++-v3/doc/html/manual/api.html
  0054faf038f602ca985fe4da97553291  libstdc++-v3/doc/html/manual/appendix.html
--- 83580,83586 ----
  33bc39e8f2d47f3d490d7ca7d4832b43  libstdc++-v3/doc/html/images/pbds_trie_node_updator_policy_cd.png
  df705f3839120dcb896e9839cf3404d0  libstdc++-v3/doc/html/images/pbds_update_seq_diagram.png
  8addfbb9a182e8be15eaed9c9dd8720e  libstdc++-v3/doc/html/index.html
! 4480196c372ed9a6ab1ddaa66eaea382  libstdc++-v3/doc/html/manual/abi.html
  c50671050ff8de94cc275131201e5bd7  libstdc++-v3/doc/html/manual/algorithms.html
  15818058c9d4057decee4a010f50ee09  libstdc++-v3/doc/html/manual/api.html
  0054faf038f602ca985fe4da97553291  libstdc++-v3/doc/html/manual/appendix.html
*************** b334fafd6083bd0be8aa5ac1ff912f2c  libstd
*** 83241,83247 ****
  874c1b17a7b9b226aff1d793c2f23f64  libstdc++-v3/doc/html/manual/backwards.html
  4bc46b36e9636b2f61911bec8741819b  libstdc++-v3/doc/html/manual/bitmap_allocator.html
  b102b16060eb66b508228d886bb789eb  libstdc++-v3/doc/html/manual/bitmap_allocator_impl.html
! 671e15ea5eaf9e17b1fb657034885f7a  libstdc++-v3/doc/html/manual/bugs.html
  c6ead46ffe76f27dd700d07857f7d633  libstdc++-v3/doc/html/manual/concept_checking.html
  ff8a760ba1cd40de947c0cb4ef121860  libstdc++-v3/doc/html/manual/concurrency.html
  5135186872bf89d21a0f1cdca6e33f1e  libstdc++-v3/doc/html/manual/configure.html
--- 83594,83600 ----
  874c1b17a7b9b226aff1d793c2f23f64  libstdc++-v3/doc/html/manual/backwards.html
  4bc46b36e9636b2f61911bec8741819b  libstdc++-v3/doc/html/manual/bitmap_allocator.html
  b102b16060eb66b508228d886bb789eb  libstdc++-v3/doc/html/manual/bitmap_allocator_impl.html
! b7190f0fde0756ec49a06a4f4c3ad829  libstdc++-v3/doc/html/manual/bugs.html
  c6ead46ffe76f27dd700d07857f7d633  libstdc++-v3/doc/html/manual/concept_checking.html
  ff8a760ba1cd40de947c0cb4ef121860  libstdc++-v3/doc/html/manual/concurrency.html
  5135186872bf89d21a0f1cdca6e33f1e  libstdc++-v3/doc/html/manual/configure.html
*************** d3228526ee93719e75cc636f26c0f7ff  libstd
*** 83261,83267 ****
  99b0a38fd9e316e076d95029052e11a0  libstdc++-v3/doc/html/manual/ext_concurrency_impl.html
  2b9b33938584e17f401bf21c285af30a  libstdc++-v3/doc/html/manual/ext_concurrency_use.html
  8fc51fc67d0794cfe349294f28d8e187  libstdc++-v3/doc/html/manual/ext_containers.html
! b83e2280a694b73feedb098666fdcd42  libstdc++-v3/doc/html/manual/ext_demangling.html
  7969471d93a397921bf15645722db9d4  libstdc++-v3/doc/html/manual/ext_io.html
  24abb74f520b2cc64329af7b0eabedd6  libstdc++-v3/doc/html/manual/ext_iterators.html
  549d43cb9c55ed8abf3eb93c27ed9716  libstdc++-v3/doc/html/manual/ext_numerics.html
--- 83614,83620 ----
  99b0a38fd9e316e076d95029052e11a0  libstdc++-v3/doc/html/manual/ext_concurrency_impl.html
  2b9b33938584e17f401bf21c285af30a  libstdc++-v3/doc/html/manual/ext_concurrency_use.html
  8fc51fc67d0794cfe349294f28d8e187  libstdc++-v3/doc/html/manual/ext_containers.html
! b74136e4a01e5df567cabcefc736ae48  libstdc++-v3/doc/html/manual/ext_demangling.html
  7969471d93a397921bf15645722db9d4  libstdc++-v3/doc/html/manual/ext_io.html
  24abb74f520b2cc64329af7b0eabedd6  libstdc++-v3/doc/html/manual/ext_iterators.html
  549d43cb9c55ed8abf3eb93c27ed9716  libstdc++-v3/doc/html/manual/ext_numerics.html
*************** c41dc87f8be3a367ba747353fbab2353  libstd
*** 83281,83292 ****
  f2cbe7a16c1459eb9d661c4f59148c85  libstdc++-v3/doc/html/manual/license.html
  756b894a64f9e63ec962a6742ba34bc8  libstdc++-v3/doc/html/manual/localization.html
  518c609918662df90ec372996b1cee25  libstdc++-v3/doc/html/manual/make.html
! 250aa8325a3c9cb355bf01dc20b6996f  libstdc++-v3/doc/html/manual/memory.html
  2f0038d7682f075686ddeb6eb5700181  libstdc++-v3/doc/html/manual/mt_allocator.html
  90aab30425d9f81569fd7f122545388f  libstdc++-v3/doc/html/manual/mt_allocator_design.html
  769263e7fac4c4320ed9890622a2691d  libstdc++-v3/doc/html/manual/mt_allocator_ex_multi.html
  b477b181b88903e87cafffc02f82c26f  libstdc++-v3/doc/html/manual/mt_allocator_ex_single.html
! 18a4f55ae43a71769f8b57d6318fe429  libstdc++-v3/doc/html/manual/mt_allocator_impl.html
  961b1986cc712df4011f8f956904e08f  libstdc++-v3/doc/html/manual/numerics.html
  1e7bda9b7468a80644d426c5ec6d9956  libstdc++-v3/doc/html/manual/numerics_and_c.html
  73a67e9f3ea3de4053702d5d42bc5dd5  libstdc++-v3/doc/html/manual/pairs.html
--- 83634,83645 ----
  f2cbe7a16c1459eb9d661c4f59148c85  libstdc++-v3/doc/html/manual/license.html
  756b894a64f9e63ec962a6742ba34bc8  libstdc++-v3/doc/html/manual/localization.html
  518c609918662df90ec372996b1cee25  libstdc++-v3/doc/html/manual/make.html
! 5b3b09bfb3538a873d8d2d07d7c81c68  libstdc++-v3/doc/html/manual/memory.html
  2f0038d7682f075686ddeb6eb5700181  libstdc++-v3/doc/html/manual/mt_allocator.html
  90aab30425d9f81569fd7f122545388f  libstdc++-v3/doc/html/manual/mt_allocator_design.html
  769263e7fac4c4320ed9890622a2691d  libstdc++-v3/doc/html/manual/mt_allocator_ex_multi.html
  b477b181b88903e87cafffc02f82c26f  libstdc++-v3/doc/html/manual/mt_allocator_ex_single.html
! 8e5ff1c36db70228ad85f9412c2d7e0d  libstdc++-v3/doc/html/manual/mt_allocator_impl.html
  961b1986cc712df4011f8f956904e08f  libstdc++-v3/doc/html/manual/numerics.html
  1e7bda9b7468a80644d426c5ec6d9956  libstdc++-v3/doc/html/manual/numerics_and_c.html
  73a67e9f3ea3de4053702d5d42bc5dd5  libstdc++-v3/doc/html/manual/pairs.html
*************** a4da9233e97dfbc6975e64682370e552  libstd
*** 83308,83317 ****
  119fba66274e9729e112f18c0a62af95  libstdc++-v3/doc/html/manual/profile_mode_diagnostics.html
  959142a01bcfe51b5975541a3f0b6dc6  libstdc++-v3/doc/html/manual/profile_mode_impl.html
  07a221c9bf5f7e46ea33f7c4a43cc754  libstdc++-v3/doc/html/manual/setup.html
! 6797250ede211d0c027dd4803fb15940  libstdc++-v3/doc/html/manual/source_code_style.html
  0576cfcb1c478a91ea55484a0ff9a3ec  libstdc++-v3/doc/html/manual/source_design_notes.html
! 658403718395ded5ff484457bf844421  libstdc++-v3/doc/html/manual/source_organization.html
! 2e64ca7b25a4f5de251096fb42317d25  libstdc++-v3/doc/html/manual/status.html
  5fe64acc29e86cd3ed7f78552632eb74  libstdc++-v3/doc/html/manual/std_contents.html
  9bb7d8baedf0c99049a912bf241462f1  libstdc++-v3/doc/html/manual/streambufs.html
  0aad91af2fbe9bc6363598d5a79f7d36  libstdc++-v3/doc/html/manual/strings.html
--- 83661,83670 ----
  119fba66274e9729e112f18c0a62af95  libstdc++-v3/doc/html/manual/profile_mode_diagnostics.html
  959142a01bcfe51b5975541a3f0b6dc6  libstdc++-v3/doc/html/manual/profile_mode_impl.html
  07a221c9bf5f7e46ea33f7c4a43cc754  libstdc++-v3/doc/html/manual/setup.html
! 6b6cefa7f9267ae701ee527c0cbe7f1e  libstdc++-v3/doc/html/manual/source_code_style.html
  0576cfcb1c478a91ea55484a0ff9a3ec  libstdc++-v3/doc/html/manual/source_design_notes.html
! 59a1459c8a857cf19103c3f2911e691e  libstdc++-v3/doc/html/manual/source_organization.html
! d81323c827926fa3dbaf153de8c6b7ed  libstdc++-v3/doc/html/manual/status.html
  5fe64acc29e86cd3ed7f78552632eb74  libstdc++-v3/doc/html/manual/std_contents.html
  9bb7d8baedf0c99049a912bf241462f1  libstdc++-v3/doc/html/manual/streambufs.html
  0aad91af2fbe9bc6363598d5a79f7d36  libstdc++-v3/doc/html/manual/strings.html
*************** b806eb79ce2b8df24b58ffdd8e431755  libstd
*** 83330,83341 ****
  1c82e434fcb983a5c34a00eed637f663  libstdc++-v3/doc/html/manual/using_macros.html
  5a9981980034ebcb698957f7baeac265  libstdc++-v3/doc/html/manual/using_namespaces.html
  8c824a54ff9dd7a513a19ca3a058202a  libstdc++-v3/doc/html/manual/utilities.html
! 5beb744711838d5fe53281b0c0e716d5  libstdc++-v3/doc/xml/api.xml
  0b177c199fb448ad3630d15bdc3cbb19  libstdc++-v3/doc/xml/authors.xml
  f5a41d4f7585b850b3182fc5f4888f93  libstdc++-v3/doc/xml/book.txml
  95d1335e76860d53246f3e400231ec38  libstdc++-v3/doc/xml/chapter.txml
  7f8c520dc83013026c671c5c342f73e2  libstdc++-v3/doc/xml/class.txml
! cd598b0808ddfc0415f9b66d9fdf1bbc  libstdc++-v3/doc/xml/faq.xml
  0408e04957d20fcb2a1048c482230ec0  libstdc++-v3/doc/xml/gnu/fdl-1.3.xml
  df4574d04d7f029398ab0183832017b6  libstdc++-v3/doc/xml/gnu/gpl-3.0.xml
  18a6390297702ec8fd75cbcc525d2005  libstdc++-v3/doc/xml/images/confdeps.dot
--- 83683,83694 ----
  1c82e434fcb983a5c34a00eed637f663  libstdc++-v3/doc/html/manual/using_macros.html
  5a9981980034ebcb698957f7baeac265  libstdc++-v3/doc/html/manual/using_namespaces.html
  8c824a54ff9dd7a513a19ca3a058202a  libstdc++-v3/doc/html/manual/utilities.html
! 449dbbf51240d77a37d2437eff256924  libstdc++-v3/doc/xml/api.xml
  0b177c199fb448ad3630d15bdc3cbb19  libstdc++-v3/doc/xml/authors.xml
  f5a41d4f7585b850b3182fc5f4888f93  libstdc++-v3/doc/xml/book.txml
  95d1335e76860d53246f3e400231ec38  libstdc++-v3/doc/xml/chapter.txml
  7f8c520dc83013026c671c5c342f73e2  libstdc++-v3/doc/xml/class.txml
! c51fa440e8e6a3e232681b69829ab391  libstdc++-v3/doc/xml/faq.xml
  0408e04957d20fcb2a1048c482230ec0  libstdc++-v3/doc/xml/gnu/fdl-1.3.xml
  df4574d04d7f029398ab0183832017b6  libstdc++-v3/doc/xml/gnu/gpl-3.0.xml
  18a6390297702ec8fd75cbcc525d2005  libstdc++-v3/doc/xml/images/confdeps.dot
*************** cc132f90a00a3ca05f64b578f9e332aa  libstd
*** 83515,83524 ****
  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
! 7c9216356090c2d3b5f77d35e8f8f6a2  libstdc++-v3/doc/xml/manual/abi.xml
  6a68f07a8b8abd9e65846432ed52d646  libstdc++-v3/doc/xml/manual/algorithms.xml
! fd2185821a70453792b0c373704f219b  libstdc++-v3/doc/xml/manual/allocator.xml
! f2cfee5263eecfcb91850c1356469d63  libstdc++-v3/doc/xml/manual/appendix_contributing.xml
  074e722c08588c6474b7eb1dc527bd89  libstdc++-v3/doc/xml/manual/appendix_free.xml
  fddfbac311009ebd3056c4edd7ee522a  libstdc++-v3/doc/xml/manual/appendix_porting.xml
  e0b6ea09e982758f8a79d0d165939943  libstdc++-v3/doc/xml/manual/atomics.xml
--- 83868,83877 ----
  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
! 66c1faeb37ec3755c1e2ddae0f073e89  libstdc++-v3/doc/xml/manual/abi.xml
  6a68f07a8b8abd9e65846432ed52d646  libstdc++-v3/doc/xml/manual/algorithms.xml
! 832fb85e9dd8e40662f3abe5b0f7b070  libstdc++-v3/doc/xml/manual/allocator.xml
! 444015e6d7de5bf56b28a3e88c753395  libstdc++-v3/doc/xml/manual/appendix_contributing.xml
  074e722c08588c6474b7eb1dc527bd89  libstdc++-v3/doc/xml/manual/appendix_free.xml
  fddfbac311009ebd3056c4edd7ee522a  libstdc++-v3/doc/xml/manual/appendix_porting.xml
  e0b6ea09e982758f8a79d0d165939943  libstdc++-v3/doc/xml/manual/atomics.xml
*************** f5a287dcee5fb300ea0b6c216bf0a707  libstd
*** 83537,83551 ****
  572f736b5fd9cd199290f20b155caeca  libstdc++-v3/doc/xml/manual/diagnostics.xml
  95feeda9bc28bdf9ace5774f71f27bad  libstdc++-v3/doc/xml/manual/documentation_hacking.xml
  beaf7f0a49ee4f9a868913839fb3e8b4  libstdc++-v3/doc/xml/manual/evolution.xml
! a182c59139e44d5258054047a0f0ffb6  libstdc++-v3/doc/xml/manual/extensions.xml
  b4dcd406dd4cdb85c102eee09463aa1f  libstdc++-v3/doc/xml/manual/internals.xml
! e890061b1d03be36691a60c849c47e90  libstdc++-v3/doc/xml/manual/intro.xml
  09a176ae4f25d6877dd6af733098ab53  libstdc++-v3/doc/xml/manual/io.xml
  bab548248426e0e90cdc1436ff5b87de  libstdc++-v3/doc/xml/manual/iterators.xml
  5d3e282d89ac0af0f7752f88466a9d39  libstdc++-v3/doc/xml/manual/locale.xml
  8d6a4daabfdaa26ed8c3bd68f6cb0930  libstdc++-v3/doc/xml/manual/localization.xml
  d1f75977cf17da71ede22a4884f5771f  libstdc++-v3/doc/xml/manual/messages.xml
! 358c6c2b091982dafcd133cc65380653  libstdc++-v3/doc/xml/manual/mt_allocator.xml
  0093c0e2ef4c460d644a7c3d3e90c7b4  libstdc++-v3/doc/xml/manual/numerics.xml
  e2b6426957c60c385c84e7b5143089ce  libstdc++-v3/doc/xml/manual/parallel_mode.xml
  877b32ce48c44db2c2ef8a7901d6157d  libstdc++-v3/doc/xml/manual/policy_data_structures.xml
--- 83890,83904 ----
  572f736b5fd9cd199290f20b155caeca  libstdc++-v3/doc/xml/manual/diagnostics.xml
  95feeda9bc28bdf9ace5774f71f27bad  libstdc++-v3/doc/xml/manual/documentation_hacking.xml
  beaf7f0a49ee4f9a868913839fb3e8b4  libstdc++-v3/doc/xml/manual/evolution.xml
! d700263acf88b675c68d1cbe9dadea6b  libstdc++-v3/doc/xml/manual/extensions.xml
  b4dcd406dd4cdb85c102eee09463aa1f  libstdc++-v3/doc/xml/manual/internals.xml
! d167d21ee291ada55b5a50a238c60be9  libstdc++-v3/doc/xml/manual/intro.xml
  09a176ae4f25d6877dd6af733098ab53  libstdc++-v3/doc/xml/manual/io.xml
  bab548248426e0e90cdc1436ff5b87de  libstdc++-v3/doc/xml/manual/iterators.xml
  5d3e282d89ac0af0f7752f88466a9d39  libstdc++-v3/doc/xml/manual/locale.xml
  8d6a4daabfdaa26ed8c3bd68f6cb0930  libstdc++-v3/doc/xml/manual/localization.xml
  d1f75977cf17da71ede22a4884f5771f  libstdc++-v3/doc/xml/manual/messages.xml
! 489dc876235f0b46a0cf931a02ed38a6  libstdc++-v3/doc/xml/manual/mt_allocator.xml
  0093c0e2ef4c460d644a7c3d3e90c7b4  libstdc++-v3/doc/xml/manual/numerics.xml
  e2b6426957c60c385c84e7b5143089ce  libstdc++-v3/doc/xml/manual/parallel_mode.xml
  877b32ce48c44db2c2ef8a7901d6157d  libstdc++-v3/doc/xml/manual/policy_data_structures.xml
*************** df9b17e3318f7ef36a1ba30c4ffc1314  libstd
*** 83555,83562 ****
  7d20c67a427688f750e697745522b268  libstdc++-v3/doc/xml/manual/shared_ptr.xml
  571f1b40ca0091ca5d8e0480d249a9f0  libstdc++-v3/doc/xml/manual/spine.xml
  e39b9e1f76939c3dc25d9d8e5314ac02  libstdc++-v3/doc/xml/manual/status_cxx1998.xml
! b41af43b209a8cdb9246e81f99b27e14  libstdc++-v3/doc/xml/manual/status_cxx2011.xml
! 83113b7917a9acd2501b474e86e332b7  libstdc++-v3/doc/xml/manual/status_cxx2014.xml
  0328d8bf2d7935051ce9dc880ef63b6d  libstdc++-v3/doc/xml/manual/status_cxxtr1.xml
  716409ea4f3fdc47d1b88cc8ac63b392  libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml
  4bde3160d9ccaca3edfee800f93973f1  libstdc++-v3/doc/xml/manual/strings.xml
--- 83908,83915 ----
  7d20c67a427688f750e697745522b268  libstdc++-v3/doc/xml/manual/shared_ptr.xml
  571f1b40ca0091ca5d8e0480d249a9f0  libstdc++-v3/doc/xml/manual/spine.xml
  e39b9e1f76939c3dc25d9d8e5314ac02  libstdc++-v3/doc/xml/manual/status_cxx1998.xml
! 222590fd86868274a2722afafa58a658  libstdc++-v3/doc/xml/manual/status_cxx2011.xml
! 655a4017bccd94324e45206354dbfc13  libstdc++-v3/doc/xml/manual/status_cxx2014.xml
  0328d8bf2d7935051ce9dc880ef63b6d  libstdc++-v3/doc/xml/manual/status_cxxtr1.xml
  716409ea4f3fdc47d1b88cc8ac63b392  libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml
  4bde3160d9ccaca3edfee800f93973f1  libstdc++-v3/doc/xml/manual/strings.xml
*************** d42dacf57cbf8644fc8b7217c7e8893a  libstd
*** 83569,83576 ****
  8d67ac4ec4ca26b7d147ec7a9dc7a549  libstdc++-v3/doc/xml/spine.xml
  bd966b4a0df6f2a84f9770525581d45c  libstdc++-v3/doc/xsl/customization.xsl.in
  73e63064a578098e6ddb49966a9773de  libstdc++-v3/fragment.am
! 9d3873f43e1b04e0cc5ef035952c637e  libstdc++-v3/include/Makefile.am
! 78e11d9913eed7d6764b4f6c39745d74  libstdc++-v3/include/Makefile.in
  c4b834f7067414a27d50e8f4456eb1a2  libstdc++-v3/include/backward/auto_ptr.h
  adf40f88fe614b729aba07b2d33b28a9  libstdc++-v3/include/backward/backward_warning.h
  0f6372fe1d565f2feae895c24ba1baea  libstdc++-v3/include/backward/binders.h
--- 83922,83929 ----
  8d67ac4ec4ca26b7d147ec7a9dc7a549  libstdc++-v3/doc/xml/spine.xml
  bd966b4a0df6f2a84f9770525581d45c  libstdc++-v3/doc/xsl/customization.xsl.in
  73e63064a578098e6ddb49966a9773de  libstdc++-v3/fragment.am
! 1338b3dbb793b9446f23c0a8fbb7e8c2  libstdc++-v3/include/Makefile.am
! 3b94e59274cf5fb9cdcc95812936dff0  libstdc++-v3/include/Makefile.in
  c4b834f7067414a27d50e8f4456eb1a2  libstdc++-v3/include/backward/auto_ptr.h
  adf40f88fe614b729aba07b2d33b28a9  libstdc++-v3/include/backward/backward_warning.h
  0f6372fe1d565f2feae895c24ba1baea  libstdc++-v3/include/backward/binders.h
*************** b623f07b6097a10d2bd4c8a6dd50e9f1  libstd
*** 83582,83598 ****
  9193bbe81a9ef1a20be296340de10026  libstdc++-v3/include/bits/algorithmfwd.h
  7c6e4fa600d5d212142e4ff4b6afff89  libstdc++-v3/include/bits/alloc_traits.h
  d03521e9e4585421188acde110dff0fe  libstdc++-v3/include/bits/allocated_ptr.h
! fb174e93bb5167a116014329657aed15  libstdc++-v3/include/bits/allocator.h
  d5147ec5a2ecafa44ecb070f584bc980  libstdc++-v3/include/bits/atomic_base.h
  4e6269ade6bac656d1a8e72404056732  libstdc++-v3/include/bits/atomic_futex.h
! f203d4cd579d02df3d77f371d1fd0643  libstdc++-v3/include/bits/basic_ios.h
  6d9b6ec8a4a3673b6eeedbdc8b4e1c5b  libstdc++-v3/include/bits/basic_ios.tcc
! cdd712ef4d0fc871794d28898a8a9434  libstdc++-v3/include/bits/basic_string.h
! 487fdbdb2caa268d5a2b5203c8c13f74  libstdc++-v3/include/bits/basic_string.tcc
  46ac099accb6dc0fbeabc9d4cf9bc192  libstdc++-v3/include/bits/boost_concept_check.h
  be0c0f956d1a7be00c0a46cdfdcc999b  libstdc++-v3/include/bits/c++0x_warning.h
  4382416b01d5dc9ee55518df54e774de  libstdc++-v3/include/bits/c++14_warning.h
! d1ab1c3b455430fd6adb61ef77c2bc66  libstdc++-v3/include/bits/c++config
  402844482558cec99d218279bfc5474d  libstdc++-v3/include/bits/char_traits.h
  402a382dedd9bd5821bd70c21e988b1c  libstdc++-v3/include/bits/codecvt.h
  a2bad8632aeb855c1159a3c60be17d00  libstdc++-v3/include/bits/concept_check.h
--- 83935,83951 ----
  9193bbe81a9ef1a20be296340de10026  libstdc++-v3/include/bits/algorithmfwd.h
  7c6e4fa600d5d212142e4ff4b6afff89  libstdc++-v3/include/bits/alloc_traits.h
  d03521e9e4585421188acde110dff0fe  libstdc++-v3/include/bits/allocated_ptr.h
! 98eabf9902a05ee67db8d46471436af0  libstdc++-v3/include/bits/allocator.h
  d5147ec5a2ecafa44ecb070f584bc980  libstdc++-v3/include/bits/atomic_base.h
  4e6269ade6bac656d1a8e72404056732  libstdc++-v3/include/bits/atomic_futex.h
! 1e2e1221f8ae11eed90e4854d04153e6  libstdc++-v3/include/bits/basic_ios.h
  6d9b6ec8a4a3673b6eeedbdc8b4e1c5b  libstdc++-v3/include/bits/basic_ios.tcc
! 9f5c6288ffa93d62f12672cdd0405103  libstdc++-v3/include/bits/basic_string.h
! 6139913054eaf66198eb20cfc586220d  libstdc++-v3/include/bits/basic_string.tcc
  46ac099accb6dc0fbeabc9d4cf9bc192  libstdc++-v3/include/bits/boost_concept_check.h
  be0c0f956d1a7be00c0a46cdfdcc999b  libstdc++-v3/include/bits/c++0x_warning.h
  4382416b01d5dc9ee55518df54e774de  libstdc++-v3/include/bits/c++14_warning.h
! 70c9bc71c2faba999e24386e94fd1361  libstdc++-v3/include/bits/c++config
  402844482558cec99d218279bfc5474d  libstdc++-v3/include/bits/char_traits.h
  402a382dedd9bd5821bd70c21e988b1c  libstdc++-v3/include/bits/codecvt.h
  a2bad8632aeb855c1159a3c60be17d00  libstdc++-v3/include/bits/concept_check.h
*************** dfdc6ba41855d60aa1b553e4710bb8e9  libstd
*** 83606,83643 ****
  529c3107ba724b9b19dd5b6bcb1e585c  libstdc++-v3/include/bits/functional_hash.h
  4b07e09985fdedde1e0cea43a1608d1f  libstdc++-v3/include/bits/gslice.h
  4000bd1f2b1812a41d720a57ceb3c377  libstdc++-v3/include/bits/gslice_array.h
! 7c7df3999376074771ac5d4d91e73b92  libstdc++-v3/include/bits/hashtable.h
  43193716b6a0c443e5de98aa19a94daa  libstdc++-v3/include/bits/hashtable_policy.h
  800e828d8b1684e542db04010571c75e  libstdc++-v3/include/bits/indirect_array.h
! 806925d42d8ad9d8e2d567de02651863  libstdc++-v3/include/bits/ios_base.h
! 85de1683458f5b94144c04565693294f  libstdc++-v3/include/bits/istream.tcc
! 5abf8c14a5acdd6343b48531d0570105  libstdc++-v3/include/bits/list.tcc
! 1a99bb51a6c89aad3c3a103c63467fbc  libstdc++-v3/include/bits/locale_classes.h
  db8825e72551a63c09b1321cd016b840  libstdc++-v3/include/bits/locale_classes.tcc
! c7618c920ed23de5b9295f6a49b58072  libstdc++-v3/include/bits/locale_conv.h
  a98311f7e4e0c0dca9cb9f1810da4227  libstdc++-v3/include/bits/locale_facets.h
  a8966716bb4f1fc46267e56afeab5c07  libstdc++-v3/include/bits/locale_facets.tcc
  6dd50440dd7b67000b5c879ddf7bc37b  libstdc++-v3/include/bits/locale_facets_nonio.h
  042fac84563eef65745571403f487323  libstdc++-v3/include/bits/locale_facets_nonio.tcc
  833667d84f0e8b18fd0f9c8a6bab9830  libstdc++-v3/include/bits/localefwd.h
! 3f8955bc1fca26dd0b4ca6e5f3c8f30b  libstdc++-v3/include/bits/mask_array.h
  1249d7756d45f32cd39b0f46724f6123  libstdc++-v3/include/bits/memoryfwd.h
  1107f29e7f548c9e8f53825f444ed501  libstdc++-v3/include/bits/move.h
  045ce9aae286c31d91d6fe9a510ac53a  libstdc++-v3/include/bits/ostream.tcc
  cfa7857ba221db82056f61d9229245b3  libstdc++-v3/include/bits/ostream_insert.h
  508b24ad40d04e24b60af8fbbcb65bb7  libstdc++-v3/include/bits/parse_numbers.h
  cedcf2c3add22d681ca3cd5720e381e9  libstdc++-v3/include/bits/postypes.h
! 40926eca03f17797f83ce683d78baab6  libstdc++-v3/include/bits/predefined_ops.h
  c9da956d485d9c78bf3cb0817ab7e27d  libstdc++-v3/include/bits/ptr_traits.h
  71556f9280f366116c089b52fc9b29f3  libstdc++-v3/include/bits/quoted_string.h
  ff0b1c19ac8e1870efb90b4ba73c6967  libstdc++-v3/include/bits/random.h
  cfdd4311674633599afdc67ee85d1d7d  libstdc++-v3/include/bits/random.tcc
  36d285beef9e04574561e1246887799a  libstdc++-v3/include/bits/range_access.h
! de5dca6c80ef5dbb1e035c02f59ee66f  libstdc++-v3/include/bits/regex.h
! 8cc6d444a6ac51183310d6efb1b06ec3  libstdc++-v3/include/bits/regex.tcc
  addc1a999e74463be797def3ca625b51  libstdc++-v3/include/bits/regex_automaton.h
  1f0448ba469a040b6a8bd17769790eac  libstdc++-v3/include/bits/regex_automaton.tcc
! b80f57063052457c96436b70adc8accd  libstdc++-v3/include/bits/regex_compiler.h
  7e1f90d07a6305f75c2808b03234b86f  libstdc++-v3/include/bits/regex_compiler.tcc
  1e2a18c083c985e41998840861d9d8c9  libstdc++-v3/include/bits/regex_constants.h
  97f58f33c0b220b02ef472de0dc2c922  libstdc++-v3/include/bits/regex_error.h
--- 83959,83996 ----
  529c3107ba724b9b19dd5b6bcb1e585c  libstdc++-v3/include/bits/functional_hash.h
  4b07e09985fdedde1e0cea43a1608d1f  libstdc++-v3/include/bits/gslice.h
  4000bd1f2b1812a41d720a57ceb3c377  libstdc++-v3/include/bits/gslice_array.h
! 20b3c12d19b0e732adb0c6a0b397eef4  libstdc++-v3/include/bits/hashtable.h
  43193716b6a0c443e5de98aa19a94daa  libstdc++-v3/include/bits/hashtable_policy.h
  800e828d8b1684e542db04010571c75e  libstdc++-v3/include/bits/indirect_array.h
! cd293da2d228dc0d9d40f6c8187f5f22  libstdc++-v3/include/bits/ios_base.h
! 1de5df48fdacbc6d8b4ec4dc3c61899b  libstdc++-v3/include/bits/istream.tcc
! 651fc01dfbfb61ff8809d565cca36414  libstdc++-v3/include/bits/list.tcc
! c91614ad38a7c2dddde607770d5cc416  libstdc++-v3/include/bits/locale_classes.h
  db8825e72551a63c09b1321cd016b840  libstdc++-v3/include/bits/locale_classes.tcc
! 7de54084f579656f535b37074e2b870c  libstdc++-v3/include/bits/locale_conv.h
  a98311f7e4e0c0dca9cb9f1810da4227  libstdc++-v3/include/bits/locale_facets.h
  a8966716bb4f1fc46267e56afeab5c07  libstdc++-v3/include/bits/locale_facets.tcc
  6dd50440dd7b67000b5c879ddf7bc37b  libstdc++-v3/include/bits/locale_facets_nonio.h
  042fac84563eef65745571403f487323  libstdc++-v3/include/bits/locale_facets_nonio.tcc
  833667d84f0e8b18fd0f9c8a6bab9830  libstdc++-v3/include/bits/localefwd.h
! 2974e8ab24d94d02de6a5676abda21b6  libstdc++-v3/include/bits/mask_array.h
  1249d7756d45f32cd39b0f46724f6123  libstdc++-v3/include/bits/memoryfwd.h
  1107f29e7f548c9e8f53825f444ed501  libstdc++-v3/include/bits/move.h
  045ce9aae286c31d91d6fe9a510ac53a  libstdc++-v3/include/bits/ostream.tcc
  cfa7857ba221db82056f61d9229245b3  libstdc++-v3/include/bits/ostream_insert.h
  508b24ad40d04e24b60af8fbbcb65bb7  libstdc++-v3/include/bits/parse_numbers.h
  cedcf2c3add22d681ca3cd5720e381e9  libstdc++-v3/include/bits/postypes.h
! aa57332c64a766043d31d8a41f54f115  libstdc++-v3/include/bits/predefined_ops.h
  c9da956d485d9c78bf3cb0817ab7e27d  libstdc++-v3/include/bits/ptr_traits.h
  71556f9280f366116c089b52fc9b29f3  libstdc++-v3/include/bits/quoted_string.h
  ff0b1c19ac8e1870efb90b4ba73c6967  libstdc++-v3/include/bits/random.h
  cfdd4311674633599afdc67ee85d1d7d  libstdc++-v3/include/bits/random.tcc
  36d285beef9e04574561e1246887799a  libstdc++-v3/include/bits/range_access.h
! 0bca97f155ac5f38317d2667bbf7232e  libstdc++-v3/include/bits/regex.h
! fd7106110c405cb313e811dbf42b99a5  libstdc++-v3/include/bits/regex.tcc
  addc1a999e74463be797def3ca625b51  libstdc++-v3/include/bits/regex_automaton.h
  1f0448ba469a040b6a8bd17769790eac  libstdc++-v3/include/bits/regex_automaton.tcc
! 529d63e510a0aae3e80c75afd489f960  libstdc++-v3/include/bits/regex_compiler.h
  7e1f90d07a6305f75c2808b03234b86f  libstdc++-v3/include/bits/regex_compiler.tcc
  1e2a18c083c985e41998840861d9d8c9  libstdc++-v3/include/bits/regex_constants.h
  97f58f33c0b220b02ef472de0dc2c922  libstdc++-v3/include/bits/regex_error.h
*************** f75db8b033b13bc655aac6089a21b878  libstd
*** 83647,83655 ****
  bc0c69af41c15c6315c8e58c16f5731c  libstdc++-v3/include/bits/regex_scanner.tcc
  2a3eb0c83530441c6ab7881676080616  libstdc++-v3/include/bits/shared_ptr.h
  0387eac1514094973bdc60bb54327671  libstdc++-v3/include/bits/shared_ptr_atomic.h
! 01d45b9b02be6d899edaed924627445b  libstdc++-v3/include/bits/shared_ptr_base.h
! 3ec6c40e7ab1bc346158440b507ec686  libstdc++-v3/include/bits/slice_array.h
! edee7c2271e68dcb2bfd04121028dc60  libstdc++-v3/include/bits/sstream.tcc
  741005fbac484d6778fd610b15f756fe  libstdc++-v3/include/bits/stl_algo.h
  b73f5b1c6933a7154884550a1789de12  libstdc++-v3/include/bits/stl_algobase.h
  15b9b0e21bfa3e0d0abaf9a680932a9f  libstdc++-v3/include/bits/stl_bvector.h
--- 84000,84008 ----
  bc0c69af41c15c6315c8e58c16f5731c  libstdc++-v3/include/bits/regex_scanner.tcc
  2a3eb0c83530441c6ab7881676080616  libstdc++-v3/include/bits/shared_ptr.h
  0387eac1514094973bdc60bb54327671  libstdc++-v3/include/bits/shared_ptr_atomic.h
! 853ea9e636c68a621f6baf67d171c42a  libstdc++-v3/include/bits/shared_ptr_base.h
! 454bb56a37b4dbb11b4f8f6c80088200  libstdc++-v3/include/bits/slice_array.h
! 45ef2302a613d7d6551eae8b3e41c4a7  libstdc++-v3/include/bits/sstream.tcc
  741005fbac484d6778fd610b15f756fe  libstdc++-v3/include/bits/stl_algo.h
  b73f5b1c6933a7154884550a1789de12  libstdc++-v3/include/bits/stl_algobase.h
  15b9b0e21bfa3e0d0abaf9a680932a9f  libstdc++-v3/include/bits/stl_bvector.h
*************** b73f5b1c6933a7154884550a1789de12  libstd
*** 83657,83686 ****
  e5b264a967b895ef837a01b429fb7ca2  libstdc++-v3/include/bits/stl_deque.h
  dc967bce7eeb75712ed3c6707d363e47  libstdc++-v3/include/bits/stl_function.h
  4b7571848aebe508778902c406705077  libstdc++-v3/include/bits/stl_heap.h
! 1d32604d5f987499fa1a98aef6732bef  libstdc++-v3/include/bits/stl_iterator.h
  79c537ace31abfbb587f715ceae0b455  libstdc++-v3/include/bits/stl_iterator_base_funcs.h
  6e513ab7614a7b5a24f402a287af23e3  libstdc++-v3/include/bits/stl_iterator_base_types.h
  0c48fb7bc156ea1526824ae9c5ee1805  libstdc++-v3/include/bits/stl_list.h
! f9c76b908d914d2526d337a0e96e95e2  libstdc++-v3/include/bits/stl_map.h
! 33fcf2c16dbf4ff800f9f8b0d06a9648  libstdc++-v3/include/bits/stl_multimap.h
! 8cb77d64aebf8016058909dc7e15931a  libstdc++-v3/include/bits/stl_multiset.h
  5f2acaf04b993e306b75dcc14877e7f2  libstdc++-v3/include/bits/stl_numeric.h
  1d9520b2cdc5022d49b4b59a82acdcdc  libstdc++-v3/include/bits/stl_pair.h
  844a4f273c88ff21a68db77d39180e03  libstdc++-v3/include/bits/stl_queue.h
  95a28ae884dd94a9908f33f7e6088443  libstdc++-v3/include/bits/stl_raw_storage_iter.h
  a9fa280316b07e950cfaa198795a7d16  libstdc++-v3/include/bits/stl_relops.h
! 26d5b69eefcfdf7ceaed5596c419c824  libstdc++-v3/include/bits/stl_set.h
! af6cb978b9854843f31a22786be2a6f6  libstdc++-v3/include/bits/stl_stack.h
  135e26d18f59f9c797166d146410be1f  libstdc++-v3/include/bits/stl_tempbuf.h
! beee4ceaa68389fe84d99a08acc49cee  libstdc++-v3/include/bits/stl_tree.h
  977ca56c20f9616a71556368af1ab055  libstdc++-v3/include/bits/stl_uninitialized.h
  a82511ac6537f991fd136d62ee218810  libstdc++-v3/include/bits/stl_vector.h
  435b98773d35537254095c906332835c  libstdc++-v3/include/bits/stream_iterator.h
  2a004bbd1c98faf6ebcb148c0c44ff49  libstdc++-v3/include/bits/streambuf.tcc
  7af47c9a13f44206097193b9bdaf15ae  libstdc++-v3/include/bits/streambuf_iterator.h
  28199adec95e40292569367297ebda54  libstdc++-v3/include/bits/stringfwd.h
! 8f14c3759d3a8a44ca6d5691668f6f30  libstdc++-v3/include/bits/uniform_int_dist.h
! 42198449d664e8a56de2d6f898af9194  libstdc++-v3/include/bits/unique_ptr.h
  4a84fc8c67a80bea5e7e7d22c7aea179  libstdc++-v3/include/bits/unordered_map.h
  c6eb8d4a755513fc43dbb8d5719d00ab  libstdc++-v3/include/bits/unordered_set.h
  1bbffc2dfcecddeb269f1e39bc126708  libstdc++-v3/include/bits/uses_allocator.h
--- 84010,84039 ----
  e5b264a967b895ef837a01b429fb7ca2  libstdc++-v3/include/bits/stl_deque.h
  dc967bce7eeb75712ed3c6707d363e47  libstdc++-v3/include/bits/stl_function.h
  4b7571848aebe508778902c406705077  libstdc++-v3/include/bits/stl_heap.h
! 879c1394de0b6d71bb7b0054466652bb  libstdc++-v3/include/bits/stl_iterator.h
  79c537ace31abfbb587f715ceae0b455  libstdc++-v3/include/bits/stl_iterator_base_funcs.h
  6e513ab7614a7b5a24f402a287af23e3  libstdc++-v3/include/bits/stl_iterator_base_types.h
  0c48fb7bc156ea1526824ae9c5ee1805  libstdc++-v3/include/bits/stl_list.h
! 73389200461211a5efb143d57836c79c  libstdc++-v3/include/bits/stl_map.h
! 3d8c7c78599fbb04acd76a8109538fc2  libstdc++-v3/include/bits/stl_multimap.h
! d78d02cb4f833dcce94f02a6dfa6e5fd  libstdc++-v3/include/bits/stl_multiset.h
  5f2acaf04b993e306b75dcc14877e7f2  libstdc++-v3/include/bits/stl_numeric.h
  1d9520b2cdc5022d49b4b59a82acdcdc  libstdc++-v3/include/bits/stl_pair.h
  844a4f273c88ff21a68db77d39180e03  libstdc++-v3/include/bits/stl_queue.h
  95a28ae884dd94a9908f33f7e6088443  libstdc++-v3/include/bits/stl_raw_storage_iter.h
  a9fa280316b07e950cfaa198795a7d16  libstdc++-v3/include/bits/stl_relops.h
! 9ccc5815c970b772f1e0d01157b71cf7  libstdc++-v3/include/bits/stl_set.h
! eb7abfa26bb82726982f9d2ea506e631  libstdc++-v3/include/bits/stl_stack.h
  135e26d18f59f9c797166d146410be1f  libstdc++-v3/include/bits/stl_tempbuf.h
! 7f298df0bd2a7d7f54d00db4b88cf450  libstdc++-v3/include/bits/stl_tree.h
  977ca56c20f9616a71556368af1ab055  libstdc++-v3/include/bits/stl_uninitialized.h
  a82511ac6537f991fd136d62ee218810  libstdc++-v3/include/bits/stl_vector.h
  435b98773d35537254095c906332835c  libstdc++-v3/include/bits/stream_iterator.h
  2a004bbd1c98faf6ebcb148c0c44ff49  libstdc++-v3/include/bits/streambuf.tcc
  7af47c9a13f44206097193b9bdaf15ae  libstdc++-v3/include/bits/streambuf_iterator.h
  28199adec95e40292569367297ebda54  libstdc++-v3/include/bits/stringfwd.h
! 3a49c0209ced0bc22e6010d8827a9000  libstdc++-v3/include/bits/uniform_int_dist.h
! 233ba0c0b513e38eec3f58c50de04b0b  libstdc++-v3/include/bits/unique_ptr.h
  4a84fc8c67a80bea5e7e7d22c7aea179  libstdc++-v3/include/bits/unordered_map.h
  c6eb8d4a755513fc43dbb8d5719d00ab  libstdc++-v3/include/bits/unordered_set.h
  1bbffc2dfcecddeb269f1e39bc126708  libstdc++-v3/include/bits/uses_allocator.h
*************** a7c9cb239f069f58ee02a34f3852f8ab  libstd
*** 83741,83747 ****
  93f3ea1836091eae75d5ade3863d9df3  libstdc++-v3/include/c_global/ciso646
  97b7b2ff08afae3d1443419576ae4be6  libstdc++-v3/include/c_global/climits
  4eda40ed6ff0261eae6c6b804d1b5b83  libstdc++-v3/include/c_global/clocale
! 981246f3a188e82a33d77abde4e527f5  libstdc++-v3/include/c_global/cmath
  e259231fdcb9f0d4fc6bcb0b2a7e95fb  libstdc++-v3/include/c_global/csetjmp
  5097425c2542629234e2833dc796a625  libstdc++-v3/include/c_global/csignal
  44951d53ee6510c911d473de3572553c  libstdc++-v3/include/c_global/cstdalign
--- 84094,84100 ----
  93f3ea1836091eae75d5ade3863d9df3  libstdc++-v3/include/c_global/ciso646
  97b7b2ff08afae3d1443419576ae4be6  libstdc++-v3/include/c_global/climits
  4eda40ed6ff0261eae6c6b804d1b5b83  libstdc++-v3/include/c_global/clocale
! 43ed3fd21abd108db67ac311f322d502  libstdc++-v3/include/c_global/cmath
  e259231fdcb9f0d4fc6bcb0b2a7e95fb  libstdc++-v3/include/c_global/csetjmp
  5097425c2542629234e2833dc796a625  libstdc++-v3/include/c_global/csignal
  44951d53ee6510c911d473de3572553c  libstdc++-v3/include/c_global/cstdalign
*************** e3f33a0e0d70a327203f10cc5518860c  libstd
*** 83789,83795 ****
  cd18e1e8f4318bcccd0533a465a68b90  libstdc++-v3/include/debug/multiset.h
  2bff5008e7eb8647ff94aeb2714fb2ce  libstdc++-v3/include/debug/safe_base.h
  51ccdffeb1fdc018338e5a8e427d5f96  libstdc++-v3/include/debug/safe_container.h
! 31d93f1444b1cfd3fe4ec6ff83e4b297  libstdc++-v3/include/debug/safe_iterator.h
  5ef26c9e6516db9f724e52c69bc1211c  libstdc++-v3/include/debug/safe_iterator.tcc
  fffc7c4335636b7de44054d035dbc9b5  libstdc++-v3/include/debug/safe_local_iterator.h
  5c9229d921a930cc2ebfb035a9e58975  libstdc++-v3/include/debug/safe_local_iterator.tcc
--- 84142,84148 ----
  cd18e1e8f4318bcccd0533a465a68b90  libstdc++-v3/include/debug/multiset.h
  2bff5008e7eb8647ff94aeb2714fb2ce  libstdc++-v3/include/debug/safe_base.h
  51ccdffeb1fdc018338e5a8e427d5f96  libstdc++-v3/include/debug/safe_container.h
! 689a5a44322c5af10b0bd6c26a1102d3  libstdc++-v3/include/debug/safe_iterator.h
  5ef26c9e6516db9f724e52c69bc1211c  libstdc++-v3/include/debug/safe_iterator.tcc
  fffc7c4335636b7de44054d035dbc9b5  libstdc++-v3/include/debug/safe_local_iterator.h
  5c9229d921a930cc2ebfb035a9e58975  libstdc++-v3/include/debug/safe_local_iterator.tcc
*************** ec20bebadbca12593b0f4fe575aa7643  libstd
*** 83800,83827 ****
  7f09dc669ba4b84568ffdd48ad171bc2  libstdc++-v3/include/debug/safe_unordered_container.tcc
  400742b3cba5b15ceab4fa324622e302  libstdc++-v3/include/debug/set
  294ecd493d646d45c1cc15ab994e69c9  libstdc++-v3/include/debug/set.h
! 7d0a67137aa952abd6b0d16287607b3f  libstdc++-v3/include/debug/string
  3cb07788058b0ba5b6228f43ae4288a8  libstdc++-v3/include/debug/unordered_map
  cc503cc585e3281614048e3c708ae821  libstdc++-v3/include/debug/unordered_set
  70e547e4514cde7b73e662269c4b7d72  libstdc++-v3/include/debug/vector
  c1a87224d2f217b9955455cbf8225c4c  libstdc++-v3/include/decimal/decimal
  c22a57829dec6f6226799a88f190087a  libstdc++-v3/include/decimal/decimal.h
! 86ff6c836a8c7bafb835bea011299adf  libstdc++-v3/include/experimental/algorithm
! 0dd5e6928d94db2e39f0f1e0b0b1340c  libstdc++-v3/include/experimental/any
! d7b0736935b0d3484aa6f79487fb15fb  libstdc++-v3/include/experimental/chrono
  310717c2cc2f5a34d10fb0684c7e602b  libstdc++-v3/include/experimental/filesystem
! f867264b85040767e59b68622b0c7215  libstdc++-v3/include/experimental/fs_dir.h
! c4ebb909569cfed63f6326cbba93bc00  libstdc++-v3/include/experimental/fs_fwd.h
! 60f6e576c569247c74f485e4a5521d17  libstdc++-v3/include/experimental/fs_ops.h
! b3e375d164168949dbdc9870534d5377  libstdc++-v3/include/experimental/fs_path.h
! 883e4541cb86fe010b322b838e41b8f5  libstdc++-v3/include/experimental/functional
! 6f7850536d5a2590e6e6a5b8a0ca1b2e  libstdc++-v3/include/experimental/optional
! cfe230b51d0f23891866c66b9476e1f5  libstdc++-v3/include/experimental/ratio
! b75c42f857b5e639ba2b68e7ba237565  libstdc++-v3/include/experimental/string_view
! 67983f2820330e7b17feba8ae1038f87  libstdc++-v3/include/experimental/string_view.tcc
! ed6d39a1d675716d9020eb743b98515f  libstdc++-v3/include/experimental/system_error
! 7b24082c3c6b8fefb76aa9d2714583f3  libstdc++-v3/include/experimental/tuple
! a964589d37e2ec0ae06f651f97021507  libstdc++-v3/include/experimental/type_traits
  d03045310ee74ec2b24aacfe0f085c53  libstdc++-v3/include/ext/algorithm
  8f4dd786b24537e778a632c65d8ea6c1  libstdc++-v3/include/ext/aligned_buffer.h
  2646f0407f618ea2f4225764e9ad41e6  libstdc++-v3/include/ext/alloc_traits.h
--- 84153,84181 ----
  7f09dc669ba4b84568ffdd48ad171bc2  libstdc++-v3/include/debug/safe_unordered_container.tcc
  400742b3cba5b15ceab4fa324622e302  libstdc++-v3/include/debug/set
  294ecd493d646d45c1cc15ab994e69c9  libstdc++-v3/include/debug/set.h
! f829c80d9aabaad6a98230a2cdbf1895  libstdc++-v3/include/debug/string
  3cb07788058b0ba5b6228f43ae4288a8  libstdc++-v3/include/debug/unordered_map
  cc503cc585e3281614048e3c708ae821  libstdc++-v3/include/debug/unordered_set
  70e547e4514cde7b73e662269c4b7d72  libstdc++-v3/include/debug/vector
  c1a87224d2f217b9955455cbf8225c4c  libstdc++-v3/include/decimal/decimal
  c22a57829dec6f6226799a88f190087a  libstdc++-v3/include/decimal/decimal.h
! 25256c4a7837f553b4dd87bf23b57777  libstdc++-v3/include/experimental/algorithm
! 8cd1d3748143ca2a4fb5edf5bedd8aa6  libstdc++-v3/include/experimental/any
! f211cf68119b890dc49a6647bc23bf54  libstdc++-v3/include/experimental/chrono
  310717c2cc2f5a34d10fb0684c7e602b  libstdc++-v3/include/experimental/filesystem
! ed379b4673715c9e92ff047464a24753  libstdc++-v3/include/experimental/fs_dir.h
! 8eef88b3fccab1cfd387e1f423440181  libstdc++-v3/include/experimental/fs_fwd.h
! b57f7cbbc75572b99ed9eb65eb2e4d6c  libstdc++-v3/include/experimental/fs_ops.h
! 7d374ee41c7c8d8b7f9bb98317e64b11  libstdc++-v3/include/experimental/fs_path.h
! bcd4ec15dc1e8c3806475113355c4fce  libstdc++-v3/include/experimental/functional
! 6ee95532bf7c7fc2f254ea6ef9ba69b5  libstdc++-v3/include/experimental/lfts_config.h
! c79e856962cf9dd0a98de41441cb4118  libstdc++-v3/include/experimental/optional
! 2c59b36f2c1ba936399c3f77207d7511  libstdc++-v3/include/experimental/ratio
! feffd3992f53152702be415270de282a  libstdc++-v3/include/experimental/string_view
! e80dd353ac0f2f05248f2ed419b1c245  libstdc++-v3/include/experimental/string_view.tcc
! 7acd7ec72461b14af3e8eff951dc8d50  libstdc++-v3/include/experimental/system_error
! 300c8748aadac9b00673c07f136a1631  libstdc++-v3/include/experimental/tuple
! 08c8f28fad4b84c395633e6aca3da7e5  libstdc++-v3/include/experimental/type_traits
  d03045310ee74ec2b24aacfe0f085c53  libstdc++-v3/include/ext/algorithm
  8f4dd786b24537e778a632c65d8ea6c1  libstdc++-v3/include/ext/aligned_buffer.h
  2646f0407f618ea2f4225764e9ad41e6  libstdc++-v3/include/ext/alloc_traits.h
*************** fe55cfa77fc8847284ecd13e3f3d259f  libstd
*** 83840,83846 ****
  3dfe5a7584de8414767a343632b54885  libstdc++-v3/include/ext/malloc_allocator.h
  9375e89000e7df3e178c67d3db4d1e76  libstdc++-v3/include/ext/memory
  89a69a9dc85ac093ea5db9c9f6f42e92  libstdc++-v3/include/ext/mt_allocator.h
! 155668750d7142788eb9f90b94f4e80f  libstdc++-v3/include/ext/new_allocator.h
  9dcbc7ec1a8ee98b058e32cdcd80bdc0  libstdc++-v3/include/ext/numeric
  7c06bd048c9006ff001b37411b062093  libstdc++-v3/include/ext/numeric_traits.h
  616c2edefb40bc0b64f393815599046a  libstdc++-v3/include/ext/pb_ds/assoc_container.hpp
--- 84194,84200 ----
  3dfe5a7584de8414767a343632b54885  libstdc++-v3/include/ext/malloc_allocator.h
  9375e89000e7df3e178c67d3db4d1e76  libstdc++-v3/include/ext/memory
  89a69a9dc85ac093ea5db9c9f6f42e92  libstdc++-v3/include/ext/mt_allocator.h
! b504571bb86ccbdc1a2c57e19c900c3e  libstdc++-v3/include/ext/new_allocator.h
  9dcbc7ec1a8ee98b058e32cdcd80bdc0  libstdc++-v3/include/ext/numeric
  7c06bd048c9006ff001b37411b062093  libstdc++-v3/include/ext/numeric_traits.h
  616c2edefb40bc0b64f393815599046a  libstdc++-v3/include/ext/pb_ds/assoc_container.hpp
*************** fa15bfae0b01ac65901916d24187f694  libstd
*** 83859,83865 ****
  1aa4b86f8dc531c948aa19652ce8f7cf  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp
  c8fc47a16c126cf8fc0c739fa642c2db  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp
  7e87c06f9cef9bd8e3ec394cf483412f  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/traits.hpp
! fc8d9c1834cb9e44dc0a9ae102e7831c  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp
  c17f1ecd43c32b61b4c6e3e4e4aec7aa  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/const_iterator.hpp
  f4600911871dee38cde3f75e667e4867  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp
  930bbfc6f2e3cfd53abca03a40365bf3  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp
--- 84213,84219 ----
  1aa4b86f8dc531c948aa19652ce8f7cf  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp
  c8fc47a16c126cf8fc0c739fa642c2db  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp
  7e87c06f9cef9bd8e3ec394cf483412f  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/traits.hpp
! dfc6004a37d6dcfbff248784de3c579c  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp
  c17f1ecd43c32b61b4c6e3e4e4aec7aa  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/const_iterator.hpp
  f4600911871dee38cde3f75e667e4867  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp
  930bbfc6f2e3cfd53abca03a40365bf3  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp
*************** a00f15023a904b6118947f4642e4d228  libstd
*** 83868,83874 ****
  464036dd29b060e16a179ac18509c45a  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp
  3988952fa664b2a8fad550c4fabf07ad  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp
  251479cf0dfd88a0593a3d1c793e5649  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp
! dfec7a1d4a055e77b5ea96bd980f9924  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp
  b1762ba99f6b811acc2c6b0d0c69da5a  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp
  dcd373695d11ed2958c442e5e70a5263  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp
  ca69eba3a38113493cb6ab6e64c3b914  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp
--- 84222,84228 ----
  464036dd29b060e16a179ac18509c45a  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp
  3988952fa664b2a8fad550c4fabf07ad  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp
  251479cf0dfd88a0593a3d1c793e5649  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp
! fea72cd84699e3167fcda859cf8a0766  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp
  b1762ba99f6b811acc2c6b0d0c69da5a  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp
  dcd373695d11ed2958c442e5e70a5263  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp
  ca69eba3a38113493cb6ab6e64c3b914  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp
*************** fe344ea0009bf504f50b54881dd949b2  libstd
*** 84087,84093 ****
  fb227cfcf6e14a20c4983d642e6db7d5  libstdc++-v3/include/ext/pb_ds/tree_policy.hpp
  aca9684b0eebd7d0d99c505cc6db1d41  libstdc++-v3/include/ext/pb_ds/trie_policy.hpp
  64cda910f076139f0029995ed9aaad1f  libstdc++-v3/include/ext/pod_char_traits.h
! e6f47b174629de8feecf7de7f0a3189d  libstdc++-v3/include/ext/pointer.h
  15747e561bae554eae8538a0776f4e06  libstdc++-v3/include/ext/pool_allocator.h
  725adeb0cdf8e6d0228f257f0b7d9dd5  libstdc++-v3/include/ext/random
  924fef4ae21cf97d673e49bc190b482c  libstdc++-v3/include/ext/random.tcc
--- 84441,84447 ----
  fb227cfcf6e14a20c4983d642e6db7d5  libstdc++-v3/include/ext/pb_ds/tree_policy.hpp
  aca9684b0eebd7d0d99c505cc6db1d41  libstdc++-v3/include/ext/pb_ds/trie_policy.hpp
  64cda910f076139f0029995ed9aaad1f  libstdc++-v3/include/ext/pod_char_traits.h
! 77ba77cbd2e0e7c34ac4d967f18e6b22  libstdc++-v3/include/ext/pointer.h
  15747e561bae554eae8538a0776f4e06  libstdc++-v3/include/ext/pool_allocator.h
  725adeb0cdf8e6d0228f257f0b7d9dd5  libstdc++-v3/include/ext/random
  924fef4ae21cf97d673e49bc190b482c  libstdc++-v3/include/ext/random.tcc
*************** be695ad852fb6becd31a493fbafaefb0  libstd
*** 84186,84207 ****
  fc517c1f9b8018c15f3f9f1bbff88e43  libstdc++-v3/include/profile/vector
  46a3effda6f9d177c9806bd25eb2f66a  libstdc++-v3/include/std/algorithm
  eb1168b6ad4a483b491aaa255a68f919  libstdc++-v3/include/std/array
! cc021a4641775e06d48ba4bfd74fe6d0  libstdc++-v3/include/std/atomic
  7a29a48d6af4c1f3721f95c43d971662  libstdc++-v3/include/std/bitset
! b49f125a25fa9d6e7a5eb0b3932b0e29  libstdc++-v3/include/std/chrono
  ab8aa02144cdc1deb697f2a83ae3a434  libstdc++-v3/include/std/codecvt
! 4bbbeabd3c5a3d8448b54e64ca5b33fc  libstdc++-v3/include/std/complex
  6c505062630d48ec1472158b3be2f3f0  libstdc++-v3/include/std/condition_variable
  db284b41962fcb743cdf99e0b7dccbb7  libstdc++-v3/include/std/deque
  21a6baacdc50d7caa857b7fec30529d5  libstdc++-v3/include/std/forward_list
  3eb8357a1d87d69fc0ee5c5aa18e08e3  libstdc++-v3/include/std/fstream
! 9519d1afcc5bfb8e0a4630ab49e698c4  libstdc++-v3/include/std/functional
  6cbedd2aa0c122682c4359a484ca4003  libstdc++-v3/include/std/future
  f539a9510d347a6abfb269cee43c2f2e  libstdc++-v3/include/std/iomanip
  0e1e6882cd98ccd32f4ee4646376b5ff  libstdc++-v3/include/std/ios
  0d84938c8e26ba753e373decbd7283be  libstdc++-v3/include/std/iosfwd
  e4bf0770e011947b8a7d56d8cb6ec2e5  libstdc++-v3/include/std/iostream
! 7954ed15df327dd2edd887e32aad727f  libstdc++-v3/include/std/istream
  322a2fb29a24705ab2b82b67b62b224f  libstdc++-v3/include/std/iterator
  7e984c692fad49aaf5f38d50eec9f034  libstdc++-v3/include/std/limits
  2ac85ebc9b5b48a20655ef3a62309566  libstdc++-v3/include/std/list
--- 84540,84561 ----
  fc517c1f9b8018c15f3f9f1bbff88e43  libstdc++-v3/include/profile/vector
  46a3effda6f9d177c9806bd25eb2f66a  libstdc++-v3/include/std/algorithm
  eb1168b6ad4a483b491aaa255a68f919  libstdc++-v3/include/std/array
! 90748dfbc8f12d4d2cc06252b985b7f4  libstdc++-v3/include/std/atomic
  7a29a48d6af4c1f3721f95c43d971662  libstdc++-v3/include/std/bitset
! 01b6e92b81255cc73173f940a41fb5ce  libstdc++-v3/include/std/chrono
  ab8aa02144cdc1deb697f2a83ae3a434  libstdc++-v3/include/std/codecvt
! e168c12adef8de53e8fdc8785659bae8  libstdc++-v3/include/std/complex
  6c505062630d48ec1472158b3be2f3f0  libstdc++-v3/include/std/condition_variable
  db284b41962fcb743cdf99e0b7dccbb7  libstdc++-v3/include/std/deque
  21a6baacdc50d7caa857b7fec30529d5  libstdc++-v3/include/std/forward_list
  3eb8357a1d87d69fc0ee5c5aa18e08e3  libstdc++-v3/include/std/fstream
! 5fc4fb9f4160c3f7b865c3b14ec1e047  libstdc++-v3/include/std/functional
  6cbedd2aa0c122682c4359a484ca4003  libstdc++-v3/include/std/future
  f539a9510d347a6abfb269cee43c2f2e  libstdc++-v3/include/std/iomanip
  0e1e6882cd98ccd32f4ee4646376b5ff  libstdc++-v3/include/std/ios
  0d84938c8e26ba753e373decbd7283be  libstdc++-v3/include/std/iosfwd
  e4bf0770e011947b8a7d56d8cb6ec2e5  libstdc++-v3/include/std/iostream
! e94aac177534fbfef489f5ac6681952f  libstdc++-v3/include/std/istream
  322a2fb29a24705ab2b82b67b62b224f  libstdc++-v3/include/std/iterator
  7e984c692fad49aaf5f38d50eec9f034  libstdc++-v3/include/std/limits
  2ac85ebc9b5b48a20655ef3a62309566  libstdc++-v3/include/std/list
*************** f6be4066040330ef8e56f2de864c093b  libstd
*** 84215,84236 ****
  3d27aba8248e8cca4e8d448dc453f3dc  libstdc++-v3/include/std/random
  f491c417f1578fe6a2b7a7188080e9c6  libstdc++-v3/include/std/ratio
  a7902b42817c151acad6f28a2e5e6260  libstdc++-v3/include/std/regex
! c8ddc32928c1e2ce77437ebfe1a76599  libstdc++-v3/include/std/scoped_allocator
  4c392d082fe23b1780f3d04accc60d71  libstdc++-v3/include/std/set
  1b48aba7694aa6424e11e11218c3da15  libstdc++-v3/include/std/shared_mutex
! 1701cc092825192d1c2c8851cf442037  libstdc++-v3/include/std/sstream
  40479fb6ad81c6441f835438bce8725a  libstdc++-v3/include/std/stack
  792e013af7addf73559758069de4f429  libstdc++-v3/include/std/stdexcept
  96d2134205fb1d08d2197f5c916894a5  libstdc++-v3/include/std/streambuf
  b7c2ecfa12aa19964c07c9f3a15ac0d8  libstdc++-v3/include/std/string
  322bd374fb7688d906518199b1625516  libstdc++-v3/include/std/system_error
! 32e7d02b80646f6425790123bf89a163  libstdc++-v3/include/std/thread
! ce874c3b1b5889c09426dfbe2a507085  libstdc++-v3/include/std/tuple
  23a62c4a52d20cbd2d0261c6e1838729  libstdc++-v3/include/std/type_traits
  fc4bbfc09c3e949f9295f9017afddb1d  libstdc++-v3/include/std/typeindex
  8e3f73eceba4af13872d4b6421fd0611  libstdc++-v3/include/std/unordered_map
  1a70cae3286d6ec85c1366ba0c33e77a  libstdc++-v3/include/std/unordered_set
! f30eea6d3fbdbeba3799ef28c125b2e4  libstdc++-v3/include/std/utility
  bd7776c88f7dab8a61003fa4ee57be91  libstdc++-v3/include/std/valarray
  085de62d1b6f2110cb6bae42ffc0a9a0  libstdc++-v3/include/std/vector
  5f20a085c04a69f2ad980138be7f249f  libstdc++-v3/include/tr1/array
--- 84569,84590 ----
  3d27aba8248e8cca4e8d448dc453f3dc  libstdc++-v3/include/std/random
  f491c417f1578fe6a2b7a7188080e9c6  libstdc++-v3/include/std/ratio
  a7902b42817c151acad6f28a2e5e6260  libstdc++-v3/include/std/regex
! 44fcfe43210f82f9ce080f58282ddbf8  libstdc++-v3/include/std/scoped_allocator
  4c392d082fe23b1780f3d04accc60d71  libstdc++-v3/include/std/set
  1b48aba7694aa6424e11e11218c3da15  libstdc++-v3/include/std/shared_mutex
! 8c56f910f52a88be68b540d45dad40ac  libstdc++-v3/include/std/sstream
  40479fb6ad81c6441f835438bce8725a  libstdc++-v3/include/std/stack
  792e013af7addf73559758069de4f429  libstdc++-v3/include/std/stdexcept
  96d2134205fb1d08d2197f5c916894a5  libstdc++-v3/include/std/streambuf
  b7c2ecfa12aa19964c07c9f3a15ac0d8  libstdc++-v3/include/std/string
  322bd374fb7688d906518199b1625516  libstdc++-v3/include/std/system_error
! 79a56eefbca42e2f30f8727e2a92a5e2  libstdc++-v3/include/std/thread
! 9671bbe13a0a27b6d931b3ed1787fcdb  libstdc++-v3/include/std/tuple
  23a62c4a52d20cbd2d0261c6e1838729  libstdc++-v3/include/std/type_traits
  fc4bbfc09c3e949f9295f9017afddb1d  libstdc++-v3/include/std/typeindex
  8e3f73eceba4af13872d4b6421fd0611  libstdc++-v3/include/std/unordered_map
  1a70cae3286d6ec85c1366ba0c33e77a  libstdc++-v3/include/std/unordered_set
! ef591abea7d835b09ccc74e2ce116874  libstdc++-v3/include/std/utility
  bd7776c88f7dab8a61003fa4ee57be91  libstdc++-v3/include/std/valarray
  085de62d1b6f2110cb6bae42ffc0a9a0  libstdc++-v3/include/std/vector
  5f20a085c04a69f2ad980138be7f249f  libstdc++-v3/include/tr1/array
*************** bd7776c88f7dab8a61003fa4ee57be91  libstd
*** 84242,84248 ****
  5ae51365562bcb8c6d573847eb1fc641  libstdc++-v3/include/tr1/cfloat
  834d54aa786c2853e527f201a6e59584  libstdc++-v3/include/tr1/cinttypes
  ad151d94e79df58d06b03e0329e8de5f  libstdc++-v3/include/tr1/climits
! 7d2cddeee593cc048dbad15e15db8380  libstdc++-v3/include/tr1/cmath
  7b3b0a78d335f54c95aae4072f211a93  libstdc++-v3/include/tr1/complex
  c4354fbd022da12bbecf4c7eb14f2973  libstdc++-v3/include/tr1/complex.h
  b880b5ef4b1f73496a9f468d7345bb2e  libstdc++-v3/include/tr1/cstdarg
--- 84596,84602 ----
  5ae51365562bcb8c6d573847eb1fc641  libstdc++-v3/include/tr1/cfloat
  834d54aa786c2853e527f201a6e59584  libstdc++-v3/include/tr1/cinttypes
  ad151d94e79df58d06b03e0329e8de5f  libstdc++-v3/include/tr1/climits
! c48162c9be563f74746b0f178b0ed211  libstdc++-v3/include/tr1/cmath
  7b3b0a78d335f54c95aae4072f211a93  libstdc++-v3/include/tr1/complex
  c4354fbd022da12bbecf4c7eb14f2973  libstdc++-v3/include/tr1/complex.h
  b880b5ef4b1f73496a9f468d7345bb2e  libstdc++-v3/include/tr1/cstdarg
*************** a3f397a9552c0545301f163dfcb8f23e  libstd
*** 84313,84319 ****
  cfa4e920cf3f258f5524e2a292d4c41b  libstdc++-v3/libsupc++/bad_cast.cc
  feb0530f06efa95c5772caec8e313ef7  libstdc++-v3/libsupc++/bad_typeid.cc
  5a2e915ae2d643c364c48dd1e6ab3fd4  libstdc++-v3/libsupc++/class_type_info.cc
! 959d87f8a61c319083fafcb5041f53a9  libstdc++-v3/libsupc++/cxxabi.h
  7faa4d3f7492901207bb1794099ceaec  libstdc++-v3/libsupc++/cxxabi_forced.h
  04b8b7620fb0bd32e6c155d5784ced0d  libstdc++-v3/libsupc++/del_op.cc
  9c684e4391701c4344dd298efccf489d  libstdc++-v3/libsupc++/del_opnt.cc
--- 84667,84673 ----
  cfa4e920cf3f258f5524e2a292d4c41b  libstdc++-v3/libsupc++/bad_cast.cc
  feb0530f06efa95c5772caec8e313ef7  libstdc++-v3/libsupc++/bad_typeid.cc
  5a2e915ae2d643c364c48dd1e6ab3fd4  libstdc++-v3/libsupc++/class_type_info.cc
! a3aeb56fa2c8939fd00772565d0c737f  libstdc++-v3/libsupc++/cxxabi.h
  7faa4d3f7492901207bb1794099ceaec  libstdc++-v3/libsupc++/cxxabi_forced.h
  04b8b7620fb0bd32e6c155d5784ced0d  libstdc++-v3/libsupc++/del_op.cc
  9c684e4391701c4344dd298efccf489d  libstdc++-v3/libsupc++/del_opnt.cc
*************** d492c556dc465cbf896577d42b1d0134  libstd
*** 84383,84390 ****
  1aecbbcd88478de8b81a68900cf01bfa  libstdc++-v3/python/hook.in
  68b329da9893e34099c7d8ad5cb9c940  libstdc++-v3/python/libstdcxx/__init__.py
  2335d4087de89a8af5818e642c816bdf  libstdc++-v3/python/libstdcxx/v6/__init__.py
! c10ac2480598a3d270e870cf3687a7cc  libstdc++-v3/python/libstdcxx/v6/printers.py
! 30047004779f3384e4533fed594e701d  libstdc++-v3/python/libstdcxx/v6/xmethods.py
  b1441422cec6381d9285b7681b666124  libstdc++-v3/scripts/check_compile
  533e594add6e79910b0e557ba690fac6  libstdc++-v3/scripts/check_performance
  f480e111db2d50194a3e1f7014c9f422  libstdc++-v3/scripts/create_testsuite_files
--- 84737,84744 ----
  1aecbbcd88478de8b81a68900cf01bfa  libstdc++-v3/python/hook.in
  68b329da9893e34099c7d8ad5cb9c940  libstdc++-v3/python/libstdcxx/__init__.py
  2335d4087de89a8af5818e642c816bdf  libstdc++-v3/python/libstdcxx/v6/__init__.py
! 68d55600470ded815cdb928038e6dd00  libstdc++-v3/python/libstdcxx/v6/printers.py
! ddb64ac7fb08df24b811bdae09dd5165  libstdc++-v3/python/libstdcxx/v6/xmethods.py
  b1441422cec6381d9285b7681b666124  libstdc++-v3/scripts/check_compile
  533e594add6e79910b0e557ba690fac6  libstdc++-v3/scripts/check_performance
  f480e111db2d50194a3e1f7014c9f422  libstdc++-v3/scripts/create_testsuite_files
*************** b4fc738d3ce1e40f1b00792be045fa5a  libstd
*** 84402,84408 ****
  347521178190815879ac73d36dcef6fe  libstdc++-v3/src/c++11/Makefile.am
  32764fd4044c21291accd4f3ad5d7609  libstdc++-v3/src/c++11/Makefile.in
  3067c78086cb727760dfa1fae6d841b7  libstdc++-v3/src/c++11/chrono.cc
! a439d45799a30a40e1e702337f62e524  libstdc++-v3/src/c++11/codecvt.cc
  e96ab9bd2269a688c11d3c3220f924a7  libstdc++-v3/src/c++11/compatibility-atomic-c++0x.cc
  2c66f763695c6f4b1982c366a8d5eb86  libstdc++-v3/src/c++11/compatibility-c++0x.cc
  41cf96da1731eb71912646ff35c67971  libstdc++-v3/src/c++11/compatibility-chrono.cc
--- 84756,84762 ----
  347521178190815879ac73d36dcef6fe  libstdc++-v3/src/c++11/Makefile.am
  32764fd4044c21291accd4f3ad5d7609  libstdc++-v3/src/c++11/Makefile.in
  3067c78086cb727760dfa1fae6d841b7  libstdc++-v3/src/c++11/chrono.cc
! a6ad6bfb7cce19b9cdf432a0e30251b9  libstdc++-v3/src/c++11/codecvt.cc
  e96ab9bd2269a688c11d3c3220f924a7  libstdc++-v3/src/c++11/compatibility-atomic-c++0x.cc
  2c66f763695c6f4b1982c366a8d5eb86  libstdc++-v3/src/c++11/compatibility-c++0x.cc
  41cf96da1731eb71912646ff35c67971  libstdc++-v3/src/c++11/compatibility-chrono.cc
*************** aa183a21faffc51dfc6dc325b1fd925c  libstd
*** 84420,84426 ****
  06eb3bc6425f3a69a104675f56deb968  libstdc++-v3/src/c++11/cxx11-hash_tr1.cc
  c3bc14ceb9885ee3523ae6a7c7bd0213  libstdc++-v3/src/c++11/cxx11-ios_failure.cc
  ac3f803cd282ae86e5bcf061277e600f  libstdc++-v3/src/c++11/cxx11-locale-inst.cc
! d1ce16ea3989024bc4b42f821992a142  libstdc++-v3/src/c++11/cxx11-shim_facets.cc
  954dc5689342cc2774b9bb6d703d4206  libstdc++-v3/src/c++11/cxx11-stdexcept.cc
  f22550c145c6a8a458508badfbc78af0  libstdc++-v3/src/c++11/cxx11-wlocale-inst.cc
  354e3c34982c593b5bb8d290e51eb421  libstdc++-v3/src/c++11/debug.cc
--- 84774,84780 ----
  06eb3bc6425f3a69a104675f56deb968  libstdc++-v3/src/c++11/cxx11-hash_tr1.cc
  c3bc14ceb9885ee3523ae6a7c7bd0213  libstdc++-v3/src/c++11/cxx11-ios_failure.cc
  ac3f803cd282ae86e5bcf061277e600f  libstdc++-v3/src/c++11/cxx11-locale-inst.cc
! bd4e5ac38d30935a895b19a7440d3faa  libstdc++-v3/src/c++11/cxx11-shim_facets.cc
  954dc5689342cc2774b9bb6d703d4206  libstdc++-v3/src/c++11/cxx11-stdexcept.cc
  f22550c145c6a8a458508badfbc78af0  libstdc++-v3/src/c++11/cxx11-wlocale-inst.cc
  354e3c34982c593b5bb8d290e51eb421  libstdc++-v3/src/c++11/debug.cc
*************** bc73b73cdb2850fc54b3a4945e6152b5  libstd
*** 84443,84449 ****
  ab51932d5ec5f3308db7e0f01051cbdb  libstdc++-v3/src/c++11/placeholders.cc
  ca12e43ecd382508ef81e77522ce995a  libstdc++-v3/src/c++11/random.cc
  94351b1ce2a3f07857aaa3dcc9b63371  libstdc++-v3/src/c++11/regex.cc
! 86372580e8e6ba76040e8ca033edc91f  libstdc++-v3/src/c++11/shared_ptr.cc
  88d8414cea330d1d1055cdfd907f7eb1  libstdc++-v3/src/c++11/snprintf_lite.cc
  9a5842d919431ac35e088b4d1e7d47bb  libstdc++-v3/src/c++11/sstream-inst.cc
  bb8bc0cebfae6eb1061e58156dbd6e26  libstdc++-v3/src/c++11/streambuf-inst.cc
--- 84797,84803 ----
  ab51932d5ec5f3308db7e0f01051cbdb  libstdc++-v3/src/c++11/placeholders.cc
  ca12e43ecd382508ef81e77522ce995a  libstdc++-v3/src/c++11/random.cc
  94351b1ce2a3f07857aaa3dcc9b63371  libstdc++-v3/src/c++11/regex.cc
! de7fc10ad3078d974868e0c0b615472d  libstdc++-v3/src/c++11/shared_ptr.cc
  88d8414cea330d1d1055cdfd907f7eb1  libstdc++-v3/src/c++11/snprintf_lite.cc
  9a5842d919431ac35e088b4d1e7d47bb  libstdc++-v3/src/c++11/sstream-inst.cc
  bb8bc0cebfae6eb1061e58156dbd6e26  libstdc++-v3/src/c++11/streambuf-inst.cc
*************** f72f009c32f65bd525a1f0108a072855  libstd
*** 84495,84506 ****
  d2a1df0512a3ee37e33fc3c645922943  libstdc++-v3/src/c++98/tree.cc
  b6ffd48f6fea97d129e65b09896cf445  libstdc++-v3/src/c++98/valarray.cc
  60743fa9fa3d0ef76053bf3349624d6a  libstdc++-v3/src/filesystem/Makefile.am
! 39c72e3d3c5a6d860a94b5db458305b6  libstdc++-v3/src/filesystem/Makefile.in
  7633d4fa9dec0a57af7e7287834bfa78  libstdc++-v3/src/filesystem/cow-dir.cc
  8b626bae3ecd899c4363656ec78276dc  libstdc++-v3/src/filesystem/cow-ops.cc
  77d2776bb7a7156b2171591c26603519  libstdc++-v3/src/filesystem/cow-path.cc
! 488641174cc55b0a8a164893d5519ae7  libstdc++-v3/src/filesystem/dir.cc
! 542ef4263ac6b7140fdedffd6d2f2743  libstdc++-v3/src/filesystem/ops.cc
  8891cd157a54799cac221560ee4ae353  libstdc++-v3/src/filesystem/path.cc
  e8577b85117bb2ed35d706daad710c24  libstdc++-v3/src/shared/hashtable-aux.cc
  b452563b3592bb70abb353bc4a955541  libstdc++-v3/testsuite/17_intro/freestanding.cc
--- 84849,84860 ----
  d2a1df0512a3ee37e33fc3c645922943  libstdc++-v3/src/c++98/tree.cc
  b6ffd48f6fea97d129e65b09896cf445  libstdc++-v3/src/c++98/valarray.cc
  60743fa9fa3d0ef76053bf3349624d6a  libstdc++-v3/src/filesystem/Makefile.am
! 508b2762a46b6cf175cb42a9a17e1415  libstdc++-v3/src/filesystem/Makefile.in
  7633d4fa9dec0a57af7e7287834bfa78  libstdc++-v3/src/filesystem/cow-dir.cc
  8b626bae3ecd899c4363656ec78276dc  libstdc++-v3/src/filesystem/cow-ops.cc
  77d2776bb7a7156b2171591c26603519  libstdc++-v3/src/filesystem/cow-path.cc
! 723eb3eca4a3dbab97e94d243567cb6f  libstdc++-v3/src/filesystem/dir.cc
! 255a1c9e2550418b2be49c98182481f6  libstdc++-v3/src/filesystem/ops.cc
  8891cd157a54799cac221560ee4ae353  libstdc++-v3/src/filesystem/path.cc
  e8577b85117bb2ed35d706daad710c24  libstdc++-v3/src/shared/hashtable-aux.cc
  b452563b3592bb70abb353bc4a955541  libstdc++-v3/testsuite/17_intro/freestanding.cc
*************** f9e18ed7b2c745c612d4a9e2781774ba  libstd
*** 84525,84540 ****
  64803001dc96978bc048e5db2c185676  libstdc++-v3/testsuite/17_intro/headers/c++200x/stdc++.cc
  23b710261d9dfeaa56b11f1c6663f559  libstdc++-v3/testsuite/17_intro/headers/c++200x/stdc++_multiple_inclusion.cc
  07377fd6b991a8e29452c6375d760f28  libstdc++-v3/testsuite/17_intro/headers/c++2014/all_attributes.cc
  b20af6980716c71dcfdaf47d1b8f43b4  libstdc++-v3/testsuite/17_intro/shared_with_static_deps.cc
  13744eaa189ffc141fec7ed2cc2e0fd9  libstdc++-v3/testsuite/17_intro/static.cc
  dd1db8f3291dd92207aef73e464c4f00  libstdc++-v3/testsuite/17_intro/using_namespace_std.cc
  e379f3abfa90fa623f4bfae80420fbe0  libstdc++-v3/testsuite/17_intro/using_namespace_std_tr1_neg.cc
  dff67fa1e948df67524cbea647ef3880  libstdc++-v3/testsuite/18_support/50594.cc
  6fd3c6a703732fa2fce4dcf694120245  libstdc++-v3/testsuite/18_support/bad_alloc/cons_virtual_derivation.cc
  ab4ac40b50beaa88b20a88b1223fb0ed  libstdc++-v3/testsuite/18_support/bad_alloc/what.cc
  40270ac8ab9c1b4a93bddcff3ba55c8f  libstdc++-v3/testsuite/18_support/bad_cast/cons_virtual_derivation.cc
  4f287bfffd543db150c1a4de9484aad6  libstdc++-v3/testsuite/18_support/bad_cast/what.cc
! 7b6a147d68233bcf8e6fd542e72a66a9  libstdc++-v3/testsuite/18_support/bad_exception/23591_thread-1.c
  40d40a75fc85c09bb6415b69d4a478b2  libstdc++-v3/testsuite/18_support/bad_exception/59392.cc
  29f0fe0c71d85717627a92186312ca08  libstdc++-v3/testsuite/18_support/bad_exception/cons_virtual_derivation.cc
  ddfcdae67cc3602eaad9a30060ab5ca7  libstdc++-v3/testsuite/18_support/bad_exception/what.cc
--- 84879,84896 ----
  64803001dc96978bc048e5db2c185676  libstdc++-v3/testsuite/17_intro/headers/c++200x/stdc++.cc
  23b710261d9dfeaa56b11f1c6663f559  libstdc++-v3/testsuite/17_intro/headers/c++200x/stdc++_multiple_inclusion.cc
  07377fd6b991a8e29452c6375d760f28  libstdc++-v3/testsuite/17_intro/headers/c++2014/all_attributes.cc
+ e5203b13d9e40e55dfe4e0ca32686e3a  libstdc++-v3/testsuite/17_intro/names.cc
  b20af6980716c71dcfdaf47d1b8f43b4  libstdc++-v3/testsuite/17_intro/shared_with_static_deps.cc
  13744eaa189ffc141fec7ed2cc2e0fd9  libstdc++-v3/testsuite/17_intro/static.cc
  dd1db8f3291dd92207aef73e464c4f00  libstdc++-v3/testsuite/17_intro/using_namespace_std.cc
+ 70398e36de079e37329ba49c127d140b  libstdc++-v3/testsuite/17_intro/using_namespace_std_exp_neg.cc
  e379f3abfa90fa623f4bfae80420fbe0  libstdc++-v3/testsuite/17_intro/using_namespace_std_tr1_neg.cc
  dff67fa1e948df67524cbea647ef3880  libstdc++-v3/testsuite/18_support/50594.cc
  6fd3c6a703732fa2fce4dcf694120245  libstdc++-v3/testsuite/18_support/bad_alloc/cons_virtual_derivation.cc
  ab4ac40b50beaa88b20a88b1223fb0ed  libstdc++-v3/testsuite/18_support/bad_alloc/what.cc
  40270ac8ab9c1b4a93bddcff3ba55c8f  libstdc++-v3/testsuite/18_support/bad_cast/cons_virtual_derivation.cc
  4f287bfffd543db150c1a4de9484aad6  libstdc++-v3/testsuite/18_support/bad_cast/what.cc
! bd94485ce14edea1314b686a19408742  libstdc++-v3/testsuite/18_support/bad_exception/23591_thread-1.c
  40d40a75fc85c09bb6415b69d4a478b2  libstdc++-v3/testsuite/18_support/bad_exception/59392.cc
  29f0fe0c71d85717627a92186312ca08  libstdc++-v3/testsuite/18_support/bad_exception/cons_virtual_derivation.cc
  ddfcdae67cc3602eaad9a30060ab5ca7  libstdc++-v3/testsuite/18_support/bad_exception/what.cc
*************** b9c25e04ebf6a3462c016ce91cfea3ed  libstd
*** 84580,84586 ****
  63297a19fa260830f22d037fac689378  libstdc++-v3/testsuite/18_support/headers/exception/synopsis.cc
  44d66081e02d2c695782d5c5dd6ebaaf  libstdc++-v3/testsuite/18_support/headers/exception/types_std.cc
  f9d813df87f521529e31d55d48f9f1c1  libstdc++-v3/testsuite/18_support/headers/limits/synopsis.cc
! 460c9c6d56139fc750a54217fca8b82f  libstdc++-v3/testsuite/18_support/headers/new/synopsis.cc
  33f386b817e1ca3f9cabe8078096e403  libstdc++-v3/testsuite/18_support/headers/new/types_std.cc
  91572598fe62c0ea331bb7fec245ba0f  libstdc++-v3/testsuite/18_support/headers/typeinfo/synopsis.cc
  a1940ef71895b619745457baaa4c617f  libstdc++-v3/testsuite/18_support/headers/typeinfo/types_std.cc
--- 84936,84943 ----
  63297a19fa260830f22d037fac689378  libstdc++-v3/testsuite/18_support/headers/exception/synopsis.cc
  44d66081e02d2c695782d5c5dd6ebaaf  libstdc++-v3/testsuite/18_support/headers/exception/types_std.cc
  f9d813df87f521529e31d55d48f9f1c1  libstdc++-v3/testsuite/18_support/headers/limits/synopsis.cc
! 1a68500134caf6d76d07e0dc384af635  libstdc++-v3/testsuite/18_support/headers/new/synopsis.cc
! 96bc0ae5d946b289246aea969013d2b7  libstdc++-v3/testsuite/18_support/headers/new/synopsis_cxx98.cc
  33f386b817e1ca3f9cabe8078096e403  libstdc++-v3/testsuite/18_support/headers/new/types_std.cc
  91572598fe62c0ea331bb7fec245ba0f  libstdc++-v3/testsuite/18_support/headers/typeinfo/synopsis.cc
  a1940ef71895b619745457baaa4c617f  libstdc++-v3/testsuite/18_support/headers/typeinfo/types_std.cc
*************** dd797895afd8213d2e94b7eca5c31f55  libstd
*** 84653,84659 ****
  9d614eb890b0e76dd19ce1760382fcf2  libstdc++-v3/testsuite/19_diagnostics/headers/stdexcept/synopsis.cc
  1255fe501b2f5d9234a98b2bb5fb7093  libstdc++-v3/testsuite/19_diagnostics/headers/stdexcept/types_std.cc
  cd6745cc758ceb02097d5b1a80288856  libstdc++-v3/testsuite/19_diagnostics/headers/system_error/34538.cc
! fdff26e83117f91f5a902d03f132a0d8  libstdc++-v3/testsuite/19_diagnostics/headers/system_error/errc_std_c++0x.cc
  32e9779221eece8fd1127a59d87efc5e  libstdc++-v3/testsuite/19_diagnostics/headers/system_error/std_c++0x_neg.cc
  58626c928d03efb7310e0a9ba1e2b63c  libstdc++-v3/testsuite/19_diagnostics/headers/system_error/types_std_c++0x.cc
  d5156d412da4245970e1d2ef2bf578bc  libstdc++-v3/testsuite/19_diagnostics/logic_error/cons_virtual_derivation.cc
--- 85010,85016 ----
  9d614eb890b0e76dd19ce1760382fcf2  libstdc++-v3/testsuite/19_diagnostics/headers/stdexcept/synopsis.cc
  1255fe501b2f5d9234a98b2bb5fb7093  libstdc++-v3/testsuite/19_diagnostics/headers/stdexcept/types_std.cc
  cd6745cc758ceb02097d5b1a80288856  libstdc++-v3/testsuite/19_diagnostics/headers/system_error/34538.cc
! 4a17630c19748848f8f31f427e460f6e  libstdc++-v3/testsuite/19_diagnostics/headers/system_error/errc_std_c++0x.cc
  32e9779221eece8fd1127a59d87efc5e  libstdc++-v3/testsuite/19_diagnostics/headers/system_error/std_c++0x_neg.cc
  58626c928d03efb7310e0a9ba1e2b63c  libstdc++-v3/testsuite/19_diagnostics/headers/system_error/types_std_c++0x.cc
  d5156d412da4245970e1d2ef2bf578bc  libstdc++-v3/testsuite/19_diagnostics/logic_error/cons_virtual_derivation.cc
*************** bf2688b86ce4aa935512f08e2bff9814  libstd
*** 84712,84717 ****
--- 85069,85075 ----
  33a6133425f823526d50d60ca3d4b53a  libstdc++-v3/testsuite/20_util/allocator/8230.cc
  00ea8a5316b45c4a87aa20442f626d8e  libstdc++-v3/testsuite/20_util/allocator/requirements/explicit_instantiation/1.cc
  c97dba592ac17f95df08491e77e499e1  libstdc++-v3/testsuite/20_util/allocator/requirements/typedefs.cc
+ 357db2c847b39ea41eb430b0b1e001c6  libstdc++-v3/testsuite/20_util/allocator/void.cc
  161431214f03e89da5e00e829b85cda0  libstdc++-v3/testsuite/20_util/allocator_traits/members/allocate_hint.cc
  664404864917c584eb2d9c077f6a0041  libstdc++-v3/testsuite/20_util/allocator_traits/members/allocate_hint_nonpod.cc
  79f710905baa9f1c48f2b478a1597e74  libstdc++-v3/testsuite/20_util/allocator_traits/members/construct.cc
*************** dc96cd76d87b0bc2257a7f58b415fca2  libstd
*** 84787,84797 ****
  cf8c7cdb5f72b65ca8dfeb3052adf44c  libstdc++-v3/testsuite/20_util/duration/cons/2.cc
  88065ccb0e1e49269c9c93e8a4baf757  libstdc++-v3/testsuite/20_util/duration/cons/54025.cc
  815ca44bc4639b7e098a240dabebd258  libstdc++-v3/testsuite/20_util/duration/cons/constexpr.cc
  fb415292186ee4c1fdeed6a3b202ca26  libstdc++-v3/testsuite/20_util/duration/cons/dr974_neg.cc
  79325a58ebd07293f9e17ee7ce5a8fc8  libstdc++-v3/testsuite/20_util/duration/literals/61166.cc
  74982442dbc372859a037f7cb1cb0059  libstdc++-v3/testsuite/20_util/duration/literals/65499.cc
  a808c9968c77342c65010e2916cfcbe4  libstdc++-v3/testsuite/20_util/duration/literals/ns_detail.cc
! d634902df99ab3a2bc030f98fb769e05  libstdc++-v3/testsuite/20_util/duration/literals/range.cc
  f2aa59947bfe11e7fb4c6027fc6dc117  libstdc++-v3/testsuite/20_util/duration/literals/types.cc
  212960315cd235ece88530f9f7b16c54  libstdc++-v3/testsuite/20_util/duration/literals/values.cc
  d5704e843f1428b0deff038b9afd492e  libstdc++-v3/testsuite/20_util/duration/requirements/constexpr_functions.cc
--- 85145,85156 ----
  cf8c7cdb5f72b65ca8dfeb3052adf44c  libstdc++-v3/testsuite/20_util/duration/cons/2.cc
  88065ccb0e1e49269c9c93e8a4baf757  libstdc++-v3/testsuite/20_util/duration/cons/54025.cc
  815ca44bc4639b7e098a240dabebd258  libstdc++-v3/testsuite/20_util/duration/cons/constexpr.cc
+ 84b1c849d6cd3a82028f44614f1c5aed  libstdc++-v3/testsuite/20_util/duration/cons/dr1177.cc
  fb415292186ee4c1fdeed6a3b202ca26  libstdc++-v3/testsuite/20_util/duration/cons/dr974_neg.cc
  79325a58ebd07293f9e17ee7ce5a8fc8  libstdc++-v3/testsuite/20_util/duration/literals/61166.cc
  74982442dbc372859a037f7cb1cb0059  libstdc++-v3/testsuite/20_util/duration/literals/65499.cc
  a808c9968c77342c65010e2916cfcbe4  libstdc++-v3/testsuite/20_util/duration/literals/ns_detail.cc
! b33c4f8e399725b14d7202f6f466577c  libstdc++-v3/testsuite/20_util/duration/literals/range.cc
  f2aa59947bfe11e7fb4c6027fc6dc117  libstdc++-v3/testsuite/20_util/duration/literals/types.cc
  212960315cd235ece88530f9f7b16c54  libstdc++-v3/testsuite/20_util/duration/literals/values.cc
  d5704e843f1428b0deff038b9afd492e  libstdc++-v3/testsuite/20_util/duration/requirements/constexpr_functions.cc
*************** e5014382ec17c3faebe0336e98b11e11  libstd
*** 84838,84854 ****
  a1dbb251ff9c5f915028cff1d9456eb8  libstdc++-v3/testsuite/20_util/function/68995.cc
  7969f564fbd9cf5a436b98960dba1210  libstdc++-v3/testsuite/20_util/function/69222.cc
  de8640bf3cd09bf7dbc9caf451bf044a  libstdc++-v3/testsuite/20_util/function/7.cc
  0be60ec2bd4963ccdbbc2d342eac017c  libstdc++-v3/testsuite/20_util/function/8.cc
  2c29a7bc192d912ec34a144f7c98d46d  libstdc++-v3/testsuite/20_util/function/9.cc
! ac0d5b1ee1484e5d66378852a9675bc6  libstdc++-v3/testsuite/20_util/function/assign/move.cc
  6f5dc13d9e8e584b52f860ffed97c3ff  libstdc++-v3/testsuite/20_util/function/assign/move_target.cc
  dba4ecb898c87aaf457932e4bbf54868  libstdc++-v3/testsuite/20_util/function/cmp/cmp_neg.cc
  3c3ce967501b5056adc0b624957305fc  libstdc++-v3/testsuite/20_util/function/cons/55320.cc
! c61c5ba8830287abeae03f33df922c01  libstdc++-v3/testsuite/20_util/function/cons/57465.cc
  bc11a4cb910a31cf196d5b77ac8b0301  libstdc++-v3/testsuite/20_util/function/cons/addressof.cc
  447f97bdbdccb3cb191ee8383960dbdb  libstdc++-v3/testsuite/20_util/function/cons/callable.cc
! d20d3cc874912d1e705559bd60b6ea62  libstdc++-v3/testsuite/20_util/function/cons/move.cc
  3836c1cf3f54027d50269be43e983c4f  libstdc++-v3/testsuite/20_util/function/cons/move_target.cc
  aba63cc0a0fa69b175819bb519b549a7  libstdc++-v3/testsuite/20_util/function/invoke/forwarding.cc
  b446db653a17039da87c842c7725331a  libstdc++-v3/testsuite/20_util/function/invoke/move_only.cc
  0b143fa118ee8fd5f5acb02ff14a92f1  libstdc++-v3/testsuite/20_util/function/null_pointer_comparisons.cc
--- 85197,85216 ----
  a1dbb251ff9c5f915028cff1d9456eb8  libstdc++-v3/testsuite/20_util/function/68995.cc
  7969f564fbd9cf5a436b98960dba1210  libstdc++-v3/testsuite/20_util/function/69222.cc
  de8640bf3cd09bf7dbc9caf451bf044a  libstdc++-v3/testsuite/20_util/function/7.cc
+ 294f36176d900e2be3b3bf42301494f7  libstdc++-v3/testsuite/20_util/function/77322.cc
  0be60ec2bd4963ccdbbc2d342eac017c  libstdc++-v3/testsuite/20_util/function/8.cc
  2c29a7bc192d912ec34a144f7c98d46d  libstdc++-v3/testsuite/20_util/function/9.cc
! a5cac414296a3125468c0901c1807513  libstdc++-v3/testsuite/20_util/function/assign/move.cc
  6f5dc13d9e8e584b52f860ffed97c3ff  libstdc++-v3/testsuite/20_util/function/assign/move_target.cc
  dba4ecb898c87aaf457932e4bbf54868  libstdc++-v3/testsuite/20_util/function/cmp/cmp_neg.cc
  3c3ce967501b5056adc0b624957305fc  libstdc++-v3/testsuite/20_util/function/cons/55320.cc
! 90959971d6f1c8d1e7242df42f0b89b4  libstdc++-v3/testsuite/20_util/function/cons/57465.cc
! 1e369dfe927c8159f68b74615fd658bd  libstdc++-v3/testsuite/20_util/function/cons/72820.cc
  bc11a4cb910a31cf196d5b77ac8b0301  libstdc++-v3/testsuite/20_util/function/cons/addressof.cc
  447f97bdbdccb3cb191ee8383960dbdb  libstdc++-v3/testsuite/20_util/function/cons/callable.cc
! 5869ce89c75e604541b0b21bf81139df  libstdc++-v3/testsuite/20_util/function/cons/move.cc
  3836c1cf3f54027d50269be43e983c4f  libstdc++-v3/testsuite/20_util/function/cons/move_target.cc
+ 0854a43f0e035a0fd198df79037baac0  libstdc++-v3/testsuite/20_util/function/cons/refqual.cc
  aba63cc0a0fa69b175819bb519b549a7  libstdc++-v3/testsuite/20_util/function/invoke/forwarding.cc
  b446db653a17039da87c842c7725331a  libstdc++-v3/testsuite/20_util/function/invoke/move_only.cc
  0b143fa118ee8fd5f5acb02ff14a92f1  libstdc++-v3/testsuite/20_util/function/null_pointer_comparisons.cc
*************** f6f0c1f261df66cac881723ea8cc6319  libstd
*** 85117,85122 ****
--- 85479,85485 ----
  2bd60caaa9124de17811849126370f55  libstdc++-v3/testsuite/20_util/move_if_noexcept/constexpr.cc
  724784e929b1ee26ee26747d4779e5fd  libstdc++-v3/testsuite/20_util/move_if_noexcept/requirements/explicit_instantiation.cc
  99c21900c082a3378e4bc8d747c014f1  libstdc++-v3/testsuite/20_util/owner_less/cmp.cc
+ 27e275189f66554610c63cb1220f88f7  libstdc++-v3/testsuite/20_util/owner_less/noexcept.cc
  94068105982da501ab670b906df18566  libstdc++-v3/testsuite/20_util/pair/1.cc
  f6e057975d637bfe558d64f8d7a586cf  libstdc++-v3/testsuite/20_util/pair/2.cc
  6742c5799a9c2f4689a0779477612270  libstdc++-v3/testsuite/20_util/pair/3.cc
*************** d72e5626b91ae829e43c942cb10e4d14  libstd
*** 85168,85176 ****
  15258a6b95c62b7a3beaf6229d678701  libstdc++-v3/testsuite/20_util/raw_storage_iterator/requirements/typedefs.cc
  7420d56a682b50835b11c0ce98ba50aa  libstdc++-v3/testsuite/20_util/reference_wrapper/24803.cc
  822409e7b82ceebeed20801a4af53d91  libstdc++-v3/testsuite/20_util/reference_wrapper/41792.cc
! 8f411cc9e67f430775279ef2ce4b8c2e  libstdc++-v3/testsuite/20_util/reference_wrapper/invoke-2.cc
  f28ca1c055737c982d79792bafaf891d  libstdc++-v3/testsuite/20_util/reference_wrapper/invoke-3.cc
! 85e1d54542c98745fa4fb17e0c982982  libstdc++-v3/testsuite/20_util/reference_wrapper/invoke.cc
  ce661ea1f51a01fe73629a1426ce8a15  libstdc++-v3/testsuite/20_util/reference_wrapper/ref_neg.cc
  1405377fdb4c0df4774a7f12381ec9f9  libstdc++-v3/testsuite/20_util/reference_wrapper/requirements.cc
  a3e0377fe36a122b9363b88e4c3de3b6  libstdc++-v3/testsuite/20_util/reference_wrapper/result_type.cc
--- 85531,85540 ----
  15258a6b95c62b7a3beaf6229d678701  libstdc++-v3/testsuite/20_util/raw_storage_iterator/requirements/typedefs.cc
  7420d56a682b50835b11c0ce98ba50aa  libstdc++-v3/testsuite/20_util/reference_wrapper/24803.cc
  822409e7b82ceebeed20801a4af53d91  libstdc++-v3/testsuite/20_util/reference_wrapper/41792.cc
! c9d0498ecb019b25a60b08ab2d5fb63d  libstdc++-v3/testsuite/20_util/reference_wrapper/80504.cc
! e362c5da7f12a6a94214bba7c68a14c0  libstdc++-v3/testsuite/20_util/reference_wrapper/invoke-2.cc
  f28ca1c055737c982d79792bafaf891d  libstdc++-v3/testsuite/20_util/reference_wrapper/invoke-3.cc
! 7513bdfa262e7d971b34141c6e6afeaa  libstdc++-v3/testsuite/20_util/reference_wrapper/invoke.cc
  ce661ea1f51a01fe73629a1426ce8a15  libstdc++-v3/testsuite/20_util/reference_wrapper/ref_neg.cc
  1405377fdb4c0df4774a7f12381ec9f9  libstdc++-v3/testsuite/20_util/reference_wrapper/requirements.cc
  a3e0377fe36a122b9363b88e4c3de3b6  libstdc++-v3/testsuite/20_util/reference_wrapper/result_type.cc
*************** e3b0bf44f0e97fe987d8f524c6bf824f  libstd
*** 85206,85212 ****
--- 85570,85578 ----
  0c326f49ca8a4da379998b412701413b  libstdc++-v3/testsuite/20_util/result_of/sfinae_friendly_2.cc
  1da325a95d23243c9f7c6e43e0515a9f  libstdc++-v3/testsuite/20_util/scoped_allocator/1.cc
  e8c00dd83f8237b72426df0aff834a9c  libstdc++-v3/testsuite/20_util/scoped_allocator/2.cc
+ 22aae5019fa86565ffdf683618c3bd81  libstdc++-v3/testsuite/20_util/scoped_allocator/3.cc
  1d678612f50606f9c142612cbcb0cf54  libstdc++-v3/testsuite/20_util/scoped_allocator/65279.cc
+ 638da7195697e2e28e285655ca6a4f81  libstdc++-v3/testsuite/20_util/scoped_allocator/outermost.cc
  e65732f820cc3d53ebe94766a16a170d  libstdc++-v3/testsuite/20_util/scoped_allocator/propagation.cc
  ecfb31a75adbb19595c12b7581baa72f  libstdc++-v3/testsuite/20_util/scoped_allocator/requirements/explicit_instantiation.cc
  340a15367cf0f7564ab0d9ed2fac214f  libstdc++-v3/testsuite/20_util/scoped_allocator/requirements/typedefs.cc
*************** cf059eebc7561bb1dc8df57e77f0712d  libstd
*** 85282,85288 ****
  9ba56f78c53778a0653a07501b44ad5f  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/swap_neg.cc
  a9b3a667a5a976daae753a98c31e972a  libstdc++-v3/testsuite/20_util/shared_ptr/observers/bool_conv.cc
  44e74a69f4445114335f3868d752284d  libstdc++-v3/testsuite/20_util/shared_ptr/observers/get.cc
! 7919757b3f49c71d9f18b889b8a09c59  libstdc++-v3/testsuite/20_util/shared_ptr/observers/owner_before.cc
  7b234aab86faac33e45d2a72dab98d44  libstdc++-v3/testsuite/20_util/shared_ptr/observers/unique.cc
  06eaab77fabf76371d6a009723462aa6  libstdc++-v3/testsuite/20_util/shared_ptr/observers/use_count.cc
  8d774861947a921100631e3e2a07f007  libstdc++-v3/testsuite/20_util/shared_ptr/requirements/explicit_instantiation/1.cc
--- 85648,85654 ----
  9ba56f78c53778a0653a07501b44ad5f  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/swap_neg.cc
  a9b3a667a5a976daae753a98c31e972a  libstdc++-v3/testsuite/20_util/shared_ptr/observers/bool_conv.cc
  44e74a69f4445114335f3868d752284d  libstdc++-v3/testsuite/20_util/shared_ptr/observers/get.cc
! 892b6fc87fa7778844f9128183bca154  libstdc++-v3/testsuite/20_util/shared_ptr/observers/owner_before.cc
  7b234aab86faac33e45d2a72dab98d44  libstdc++-v3/testsuite/20_util/shared_ptr/observers/unique.cc
  06eaab77fabf76371d6a009723462aa6  libstdc++-v3/testsuite/20_util/shared_ptr/observers/use_count.cc
  8d774861947a921100631e3e2a07f007  libstdc++-v3/testsuite/20_util/shared_ptr/requirements/explicit_instantiation/1.cc
*************** f14a91abd29988411dab7196c5bfee24  libstd
*** 85308,85313 ****
--- 85674,85680 ----
  300b57aa791c77fa0d9e5ffbd85be838  libstdc++-v3/testsuite/20_util/time_point/2.cc
  7b5b48ba6e04e766d141febdf29429ab  libstdc++-v3/testsuite/20_util/time_point/3.cc
  7bb37f2db90f694ab08a7aac72bcb033  libstdc++-v3/testsuite/20_util/time_point/comparison_operators/constexpr.cc
+ 32f6081e3c15b3b718ccba0a2567abef  libstdc++-v3/testsuite/20_util/time_point/cons/81468.cc
  c4e64d8806bd7d53af286844a6ace5b6  libstdc++-v3/testsuite/20_util/time_point/cons/constexpr.cc
  8b1f4e073be862c2e26851e36f686849  libstdc++-v3/testsuite/20_util/time_point/nonmember/constexpr.cc
  5c0859e88ec36341c3da3a18a6a6eb7c  libstdc++-v3/testsuite/20_util/time_point/requirements/constexpr_functions.cc
*************** e8c5799ce8b7cf2953ed6ed63d183067  libstd
*** 85327,85332 ****
--- 85694,85700 ----
  b81efd1ff30c2342fa1e8b62744571b9  libstdc++-v3/testsuite/20_util/tuple/cons/44487.cc
  f5ce60cfe0f81c19a8578f21f31b3207  libstdc++-v3/testsuite/20_util/tuple/cons/45228.cc
  c0794cd42e6e0ba797fc7e3eb2095a9c  libstdc++-v3/testsuite/20_util/tuple/cons/48476.cc
+ d88be794268ced9e99dd4b7fee5d33aa  libstdc++-v3/testsuite/20_util/tuple/cons/allocator_with_any.cc
  7f2928ec41a8f08dc66bad562e22ab7e  libstdc++-v3/testsuite/20_util/tuple/cons/allocators.cc
  7ef488d72e472685dacf3edc90b14294  libstdc++-v3/testsuite/20_util/tuple/cons/assignment.cc
  cb54d8113b787e7989a9c1bc6b8c2a97  libstdc++-v3/testsuite/20_util/tuple/cons/big_tuples.cc
*************** c59176dfe7b413d23604134bb20140c0  libstd
*** 85371,85377 ****
  23eafe48135f30d3e58ae5a3fbf54056  libstdc++-v3/testsuite/20_util/underlying_type/requirements/typedefs-2.cc
  8f373c1f533cf4c63d27648e7b0720ac  libstdc++-v3/testsuite/20_util/unique_ptr/54351.cc
  57e8851834b0f93a02151e17ce1bac72  libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635.cc
! 685156bc6c322359cd41cea24b74b137  libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc
  d03ecf9501ad8f504986515793896202  libstdc++-v3/testsuite/20_util/unique_ptr/assign/assign_neg.cc
  c41cbceecc003b7bdd1eecb3951bbc66  libstdc++-v3/testsuite/20_util/unique_ptr/assign/cv_qual.cc
  093ab2a0f24d449fa98a0c5b9610304e  libstdc++-v3/testsuite/20_util/unique_ptr/assign/move.cc
--- 85739,85745 ----
  23eafe48135f30d3e58ae5a3fbf54056  libstdc++-v3/testsuite/20_util/underlying_type/requirements/typedefs-2.cc
  8f373c1f533cf4c63d27648e7b0720ac  libstdc++-v3/testsuite/20_util/unique_ptr/54351.cc
  57e8851834b0f93a02151e17ce1bac72  libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635.cc
! bf29cb82cbae63e031c5ca668c66bf0f  libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc
  d03ecf9501ad8f504986515793896202  libstdc++-v3/testsuite/20_util/unique_ptr/assign/assign_neg.cc
  c41cbceecc003b7bdd1eecb3951bbc66  libstdc++-v3/testsuite/20_util/unique_ptr/assign/cv_qual.cc
  093ab2a0f24d449fa98a0c5b9610304e  libstdc++-v3/testsuite/20_util/unique_ptr/assign/move.cc
*************** c41cbceecc003b7bdd1eecb3951bbc66  libstd
*** 85379,85384 ****
--- 85747,85753 ----
  6a37f036d09619c77af502fa3ebe079f  libstdc++-v3/testsuite/20_util/unique_ptr/assign/nullptr.cc
  507c39e7a4f13b01e487105d9bd966dd  libstdc++-v3/testsuite/20_util/unique_ptr/comparison/42925.cc
  5d8b8ca354f0516783d54f5a1d6aa492  libstdc++-v3/testsuite/20_util/unique_ptr/comparison/dr1401.cc
+ 47e0731eb8a184225a77c620f670c5e8  libstdc++-v3/testsuite/20_util/unique_ptr/cons/77990.cc
  82fcf174bb8d7fdc732b8c7dcd5fdb4d  libstdc++-v3/testsuite/20_util/unique_ptr/cons/array_convertible_neg.cc
  1692091b3b79d774d18d5901533f569f  libstdc++-v3/testsuite/20_util/unique_ptr/cons/auto_ptr.cc
  5e51cfcfb707e76826c289d9311cbde2  libstdc++-v3/testsuite/20_util/unique_ptr/cons/auto_ptr_neg.cc
*************** dc784433a9adff9f7ca23262950b45c5  libstd
*** 85415,85424 ****
  bd4ecde74f4c10f30480640935b7b220  libstdc++-v3/testsuite/20_util/weak_ptr/cons/constexpr.cc
  216768961542eebd80b54cf0574b1034  libstdc++-v3/testsuite/20_util/weak_ptr/cons/noexcept_move_construct.cc
  3a333d3cd9c06c6a3e609d8737e4e1e8  libstdc++-v3/testsuite/20_util/weak_ptr/lock/1.cc
! 24024304f8a426cfaeeb61cc9791dbfc  libstdc++-v3/testsuite/20_util/weak_ptr/observers/owner_before.cc
  1e2bd525b0386a12c24a75d2d6ad0dc9  libstdc++-v3/testsuite/20_util/weak_ptr/requirements/explicit_instantiation/1.cc
  da94c009fb1cc5e662affea01d948a14  libstdc++-v3/testsuite/20_util/weak_ptr/requirements/explicit_instantiation/2.cc
  88d3b1e9ad9a340f4731a73946aa665b  libstdc++-v3/testsuite/21_strings/basic_string/40160.cc
  3f081a159109ed37e9530a1c6a808c8f  libstdc++-v3/testsuite/21_strings/basic_string/capacity/1.cc
  3665452ce3caa95d05cd6dbf613b38b5  libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/1.cc
  1da7e953837fb5cff8b085aa89fadb86  libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/18654.cc
--- 85784,85807 ----
  bd4ecde74f4c10f30480640935b7b220  libstdc++-v3/testsuite/20_util/weak_ptr/cons/constexpr.cc
  216768961542eebd80b54cf0574b1034  libstdc++-v3/testsuite/20_util/weak_ptr/cons/noexcept_move_construct.cc
  3a333d3cd9c06c6a3e609d8737e4e1e8  libstdc++-v3/testsuite/20_util/weak_ptr/lock/1.cc
! 3bfcea3218f9b2522f93e0d6bd7d2736  libstdc++-v3/testsuite/20_util/weak_ptr/observers/owner_before.cc
  1e2bd525b0386a12c24a75d2d6ad0dc9  libstdc++-v3/testsuite/20_util/weak_ptr/requirements/explicit_instantiation/1.cc
  da94c009fb1cc5e662affea01d948a14  libstdc++-v3/testsuite/20_util/weak_ptr/requirements/explicit_instantiation/2.cc
  88d3b1e9ad9a340f4731a73946aa665b  libstdc++-v3/testsuite/21_strings/basic_string/40160.cc
+ 31199a94e0e1b36f7ded6c6f662be838  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/copy.cc
+ 6ad42301e8fa32322a37d735e89980df  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/copy_assign.cc
+ a789fc3f76c36af3d737f89e4feb7608  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/minimal.cc
+ d49113fb6bb11b017845505163eef8a9  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/move.cc
+ 1f331207ba499c2b082e38d2744fa5e8  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/move_assign.cc
+ 2e52a80116081235a6f6cdbebd8c4c90  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/noexcept.cc
+ 9ac41fce5412b284b15b8d46c694461a  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/swap.cc
+ cd21c7792cb84971e67b11f1cf948796  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/copy.cc
+ c157518162527dfdf9700c932d872a46  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc
+ 184bf1189bdbe3187c73a4cbd9b65fb0  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/minimal.cc
+ 4a474564327bf464ca0b8a03a64b25d7  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/move.cc
+ 5bbe221226ed7c32ceaf384de459ca77  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc
+ 6ccbf082c03cac4ca551dacfd1970d92  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/noexcept.cc
+ b31e52010e11ba984f5c1a6c0ed39bf5  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/swap.cc
  3f081a159109ed37e9530a1c6a808c8f  libstdc++-v3/testsuite/21_strings/basic_string/capacity/1.cc
  3665452ce3caa95d05cd6dbf613b38b5  libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/1.cc
  1da7e953837fb5cff8b085aa89fadb86  libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/18654.cc
*************** a37738df7a1e40fbb0f30c4151b4b8b8  libstd
*** 85650,85662 ****
  1327edad6434db14d1c3097c65904f6c  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/4.cc
  170b643a635a82fcf754b94737b325fa  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/wrapped_env.cc
  10afdd17f39da271f8f5b430b4bdece2  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/wrapped_locale.cc
! 145cc9fe93531edef3341ec843ccf15b  libstdc++-v3/testsuite/22_locale/codecvt/char16_t.cc
  e62d38dc72809cf06244f6a69cb91300  libstdc++-v3/testsuite/22_locale/codecvt/char32_t.cc
  ec175be16bd209a6775d1c2cf82064eb  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/66417.cc
  c756049d8f0d54295ca5b1fa600e7c05  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/requirements/1.cc
  d1ed67ee033e3f14a4e84f4874b7f324  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/69703.cc
  8d5474596a8dc5d292dd87e6915f3f8d  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/requirements/1.cc
  692fd5a663e66c3e9bffc33af34d9d2a  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/66855.cc
  1d09547c50659fc30ac171af08067afa  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/requirements/1.cc
  4f2d1fd63e3c58e811577be09ac275f6  libstdc++-v3/testsuite/22_locale/codecvt/encoding/char/1.cc
  170b643a635a82fcf754b94737b325fa  libstdc++-v3/testsuite/22_locale/codecvt/encoding/char/wrapped_env.cc
--- 86033,86053 ----
  1327edad6434db14d1c3097c65904f6c  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/4.cc
  170b643a635a82fcf754b94737b325fa  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/wrapped_env.cc
  10afdd17f39da271f8f5b430b4bdece2  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/wrapped_locale.cc
! 97759351f1323700567d8141935b3854  libstdc++-v3/testsuite/22_locale/codecvt/char16_t.cc
  e62d38dc72809cf06244f6a69cb91300  libstdc++-v3/testsuite/22_locale/codecvt/char32_t.cc
  ec175be16bd209a6775d1c2cf82064eb  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/66417.cc
+ 7381a2a225a38f7d543b2644d317d814  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/79980.cc
+ ed30e4090d06632432240eaa969c69ec  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/80041.cc
+ b22427a7df8dec8cc70dadb95eb2c0f4  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/members.cc
+ 8438096d28972a2f757975cc1f38b9bf  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc
  c756049d8f0d54295ca5b1fa600e7c05  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/requirements/1.cc
  d1ed67ee033e3f14a4e84f4874b7f324  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/69703.cc
+ efe5e5fabc0e3f37618ad00ad4747bc6  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/79980.cc
+ 11f5ce358412c9403cb074e4f53ad56a  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/members.cc
  8d5474596a8dc5d292dd87e6915f3f8d  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/requirements/1.cc
  692fd5a663e66c3e9bffc33af34d9d2a  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/66855.cc
+ d99bc82f0704f5511363849232f64e8d  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc
+ d615ab2b8de234149c2ec6a4d64615c8  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/members.cc
  1d09547c50659fc30ac171af08067afa  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/requirements/1.cc
  4f2d1fd63e3c58e811577be09ac275f6  libstdc++-v3/testsuite/22_locale/codecvt/encoding/char/1.cc
  170b643a635a82fcf754b94737b325fa  libstdc++-v3/testsuite/22_locale/codecvt/encoding/char/wrapped_env.cc
*************** bb4ad06beec013abba0c8365559a4275  libstd
*** 85770,85775 ****
--- 86161,86167 ----
  87f1476ad659a84d2c84517dd8be07ad  libstdc++-v3/testsuite/22_locale/collate_byname/requirements/explicit_instantiation.cc
  07ba4a82da008839491da717158fbc3b  libstdc++-v3/testsuite/22_locale/collate_byname/requirements/typedefs.cc
  3a89dd542edac0cf191021790854afe7  libstdc++-v3/testsuite/22_locale/conversions/buffer/1.cc
+ 8214d4a2e1204e771ded733605f13d49  libstdc++-v3/testsuite/22_locale/conversions/buffer/2.cc
  4b2e5ca9fa936d90c9e46c14faa9a9f8  libstdc++-v3/testsuite/22_locale/conversions/buffer/requirements/typedefs.cc
  3e00a010806da0adf3334b3e2a46032b  libstdc++-v3/testsuite/22_locale/conversions/string/1.cc
  c90d9242df426e02e05c617e3d14e405  libstdc++-v3/testsuite/22_locale/conversions/string/2.cc
*************** da3533ad05faa9cbb0e251489d85b422  libstd
*** 86583,86588 ****
--- 86975,86982 ----
  2d85bf3b8c7cc3002d2f43523effabcd  libstdc++-v3/testsuite/23_containers/list/operations/4.cc
  b6b24b67f1cd19209c12a9304aa33ac2  libstdc++-v3/testsuite/23_containers/list/operations/4.h
  d70fadf9c36e38ade2e4e73850191d71  libstdc++-v3/testsuite/23_containers/list/operations/42352.cc
+ 9a9c285a7e61c253f7e3be501b383cdf  libstdc++-v3/testsuite/23_containers/list/operations/78389.cc
+ 2e48ac629e274a125bbb34b2e932fd5b  libstdc++-v3/testsuite/23_containers/list/operations/80034.cc
  833167c03bd245f39a0c8199ae887b28  libstdc++-v3/testsuite/23_containers/list/operations/splice/const_iterator.cc
  fef8c09aecd0e8ede65b8f9d4c214e1d  libstdc++-v3/testsuite/23_containers/list/pthread1.cc
  da5dd41e27e41ce2a8e10e8700f96cf7  libstdc++-v3/testsuite/23_containers/list/pthread5.cc
*************** dd3ee3b50e2c19766ba83bbeb75d496f  libstd
*** 86612,86617 ****
--- 87006,87012 ----
  97457202f4f2d6067ff472e57794fe41  libstdc++-v3/testsuite/23_containers/map/56613.cc
  cbeae296fb20fc273a39cccfe47d45e9  libstdc++-v3/testsuite/23_containers/map/58764.cc
  41e2e000be03c3a10a259369305c8e5f  libstdc++-v3/testsuite/23_containers/map/59872.cc
+ d03325e67e465c815b7e50117cf88096  libstdc++-v3/testsuite/23_containers/map/77334.cc
  f8da8f21b83f04a5d98886cfcdc3f394  libstdc++-v3/testsuite/23_containers/map/allocator/copy.cc
  c77cb4ebb663897672e7a487286df286  libstdc++-v3/testsuite/23_containers/map/allocator/copy_assign.cc
  1918ae3f30dffb9938680b45ba0023e4  libstdc++-v3/testsuite/23_containers/map/allocator/init-list.cc
*************** fada72408ea1988aa57b33e155f7a9f3  libstd
*** 86622,86627 ****
--- 87017,87023 ----
  46892cc4a710c7f334aec4c2752e3ef7  libstdc++-v3/testsuite/23_containers/map/allocator/swap.cc
  74cf078351744d43e95f1d0fb49e9ac8  libstdc++-v3/testsuite/23_containers/map/capacity/29134.cc
  d5792bdbd3f18e1391dd6e8a010503e2  libstdc++-v3/testsuite/23_containers/map/cons/moveable.cc
+ 5945b2e8946d763cea3a66d76c4014af  libstdc++-v3/testsuite/23_containers/map/cons/noexcept_default_construct.cc
  9482c08dd302f7a63d53c51047bedfca  libstdc++-v3/testsuite/23_containers/map/cons/noexcept_move_construct.cc
  25787d3e99086023bb295863f851767a  libstdc++-v3/testsuite/23_containers/map/debug/60499.cc
  3b2dd3e2bad59ed7ba2b9acf36ad26f6  libstdc++-v3/testsuite/23_containers/map/debug/construct1_neg.cc
*************** ffef85b6a263a32e0975eaf9ef4f1025  libstd
*** 86660,86666 ****
  80150eaa96234d7f7468cf2311abcb6f  libstdc++-v3/testsuite/23_containers/map/modifiers/swap/2.cc
  6bd6e3a3edd3910d45043ef4c6ed83a1  libstdc++-v3/testsuite/23_containers/map/modifiers/swap/3.cc
  d5022eaf300bf670f1a3976d6b12b363  libstdc++-v3/testsuite/23_containers/map/operations/1.cc
! 03ec3efb44bd1895a848e16f6f901b61  libstdc++-v3/testsuite/23_containers/map/operations/2.cc
  f1fadf0f121bad275a73b4350702d85e  libstdc++-v3/testsuite/23_containers/map/operations/31440.cc
  8febd0417bdaf9883796c782b6ab6a7a  libstdc++-v3/testsuite/23_containers/map/operations/count.cc
  77e2b397dd2aac96c72b2c1f94d240d6  libstdc++-v3/testsuite/23_containers/map/operators/1.cc
--- 87056,87062 ----
  80150eaa96234d7f7468cf2311abcb6f  libstdc++-v3/testsuite/23_containers/map/modifiers/swap/2.cc
  6bd6e3a3edd3910d45043ef4c6ed83a1  libstdc++-v3/testsuite/23_containers/map/modifiers/swap/3.cc
  d5022eaf300bf670f1a3976d6b12b363  libstdc++-v3/testsuite/23_containers/map/operations/1.cc
! 27080cf24013f2ccfa63920cc937583c  libstdc++-v3/testsuite/23_containers/map/operations/2.cc
  f1fadf0f121bad275a73b4350702d85e  libstdc++-v3/testsuite/23_containers/map/operations/31440.cc
  8febd0417bdaf9883796c782b6ab6a7a  libstdc++-v3/testsuite/23_containers/map/operations/count.cc
  77e2b397dd2aac96c72b2c1f94d240d6  libstdc++-v3/testsuite/23_containers/map/operators/1.cc
*************** aa9cf1180d8961e6e7c7b5941ab7b2f4  libstd
*** 86694,86699 ****
--- 87090,87096 ----
  404d64772a8972ff5105258106574e62  libstdc++-v3/testsuite/23_containers/multimap/allocator/swap.cc
  984ec53e64ee9b012111021e8e11143b  libstdc++-v3/testsuite/23_containers/multimap/capacity/29134.cc
  4f755ed0240ece1c327ebe936b4631e6  libstdc++-v3/testsuite/23_containers/multimap/cons/moveable.cc
+ 6a5b594c983dbf55cb748ba043293dea  libstdc++-v3/testsuite/23_containers/multimap/cons/noexcept_default_construct.cc
  0a9a2f51b678ed3d73a44dac149c8a62  libstdc++-v3/testsuite/23_containers/multimap/cons/noexcept_move_construct.cc
  1fb80aff343dccdf6366cb1e7cf4fcbe  libstdc++-v3/testsuite/23_containers/multimap/debug/60499.cc
  3c7044f791d66c6ad3648c143c732b08  libstdc++-v3/testsuite/23_containers/multimap/debug/construct1_neg.cc
*************** bae9ae158ee7b80dd19bf298573fd17b  libstd
*** 86727,86733 ****
  3bea54ac5327d0f68d2aa557dde9c590  libstdc++-v3/testsuite/23_containers/multimap/modifiers/swap/2.cc
  bfdc56d2b68843bd59fd4760a6f0bed0  libstdc++-v3/testsuite/23_containers/multimap/modifiers/swap/3.cc
  9207c3cdb7c2eb9d0655748b22190d6c  libstdc++-v3/testsuite/23_containers/multimap/operations/1.cc
! a738a72bfb84413c6a96a572716ccad0  libstdc++-v3/testsuite/23_containers/multimap/operations/2.cc
  95298c3f8441ad5935f5274cda43be94  libstdc++-v3/testsuite/23_containers/multimap/operations/count.cc
  232ac9b212341b9bcf6a84f89c821347  libstdc++-v3/testsuite/23_containers/multimap/range_access.cc
  efa358c83b089a1476d627e9c1da82e4  libstdc++-v3/testsuite/23_containers/multimap/requirements/citerators.cc
--- 87124,87130 ----
  3bea54ac5327d0f68d2aa557dde9c590  libstdc++-v3/testsuite/23_containers/multimap/modifiers/swap/2.cc
  bfdc56d2b68843bd59fd4760a6f0bed0  libstdc++-v3/testsuite/23_containers/multimap/modifiers/swap/3.cc
  9207c3cdb7c2eb9d0655748b22190d6c  libstdc++-v3/testsuite/23_containers/multimap/operations/1.cc
! fa70bd1f227e3cb5c87bbfeba405debc  libstdc++-v3/testsuite/23_containers/multimap/operations/2.cc
  95298c3f8441ad5935f5274cda43be94  libstdc++-v3/testsuite/23_containers/multimap/operations/count.cc
  232ac9b212341b9bcf6a84f89c821347  libstdc++-v3/testsuite/23_containers/multimap/range_access.cc
  efa358c83b089a1476d627e9c1da82e4  libstdc++-v3/testsuite/23_containers/multimap/requirements/citerators.cc
*************** dc05e09ddbac2ecaa3c597ceabeb5895  libstd
*** 86756,86761 ****
--- 87153,87159 ----
  0db1de0a1f30335f82c6e8fa83584107  libstdc++-v3/testsuite/23_containers/multiset/allocator/swap.cc
  5033e22505bb8dac6f14efded78c3db8  libstdc++-v3/testsuite/23_containers/multiset/capacity/29134.cc
  4b67713d751330a549b9721eec2e21fa  libstdc++-v3/testsuite/23_containers/multiset/cons/moveable.cc
+ 2bc5f5dd7aa3ce79c4124a32e7db6328  libstdc++-v3/testsuite/23_containers/multiset/cons/noexcept_default_construct.cc
  3a6380199d3ef726975e89ba1bbf38b3  libstdc++-v3/testsuite/23_containers/multiset/cons/noexcept_move_construct.cc
  791dde856dc6cc4a83dbe4d841fbbd92  libstdc++-v3/testsuite/23_containers/multiset/debug/60499.cc
  764b0f413c90b840e4a1fed5618bf93f  libstdc++-v3/testsuite/23_containers/multiset/debug/construct1_neg.cc
*************** d2244035eca3f9ca9abeae95533adf51  libstd
*** 86788,86794 ****
  cfcb4265ae4feffc97aeba3a0e86a548  libstdc++-v3/testsuite/23_containers/multiset/modifiers/swap/2.cc
  58b9d37c230f20fcb60624e84c21ea68  libstdc++-v3/testsuite/23_containers/multiset/modifiers/swap/3.cc
  cdf2931657ac6f55e673ea3925c14a76  libstdc++-v3/testsuite/23_containers/multiset/operations/1.cc
! ec81c5b1b0c3544308f0da57288db5e2  libstdc++-v3/testsuite/23_containers/multiset/operations/2.cc
  3e52a65d80ece10f6dae023da082f19b  libstdc++-v3/testsuite/23_containers/multiset/operations/count.cc
  4aafd153fb412d1006016649ddcf4a01  libstdc++-v3/testsuite/23_containers/multiset/range_access.cc
  8403039f31e39cee66c7a42da65eb06c  libstdc++-v3/testsuite/23_containers/multiset/requirements/citerators.cc
--- 87186,87192 ----
  cfcb4265ae4feffc97aeba3a0e86a548  libstdc++-v3/testsuite/23_containers/multiset/modifiers/swap/2.cc
  58b9d37c230f20fcb60624e84c21ea68  libstdc++-v3/testsuite/23_containers/multiset/modifiers/swap/3.cc
  cdf2931657ac6f55e673ea3925c14a76  libstdc++-v3/testsuite/23_containers/multiset/operations/1.cc
! 4b357cf5a78a1929473691e6811c045e  libstdc++-v3/testsuite/23_containers/multiset/operations/2.cc
  3e52a65d80ece10f6dae023da082f19b  libstdc++-v3/testsuite/23_containers/multiset/operations/count.cc
  4aafd153fb412d1006016649ddcf4a01  libstdc++-v3/testsuite/23_containers/multiset/range_access.cc
  8403039f31e39cee66c7a42da65eb06c  libstdc++-v3/testsuite/23_containers/multiset/requirements/citerators.cc
*************** d947ee2c7259252df4c28869e7fcf35e  libstd
*** 86820,86825 ****
--- 87218,87224 ----
  054abaa0bf5b1f5bbc8d5d8a34f96ed1  libstdc++-v3/testsuite/23_containers/set/18604.cc
  5e77a53793c358c9aa2952d5f11e42bf  libstdc++-v3/testsuite/23_containers/set/23781_neg.cc
  c5001c88e56854144fe5d26a385ffd5c  libstdc++-v3/testsuite/23_containers/set/58764.cc
+ 6d4b3f9a23c4db12d15534bb670b76c6  libstdc++-v3/testsuite/23_containers/set/allocator/71964.cc
  46f9f551d9668b970d39ddfd95a9fce7  libstdc++-v3/testsuite/23_containers/set/allocator/copy.cc
  689cdba664d8ac0d53a5b7f8fcbaf517  libstdc++-v3/testsuite/23_containers/set/allocator/copy_assign.cc
  b9e53f65aab99dafeca512570d16798f  libstdc++-v3/testsuite/23_containers/set/allocator/init-list.cc
*************** a15d5a76b47f1e74c803a9ee35f45527  libstd
*** 86832,86837 ****
--- 87231,87237 ----
  1bd2bc0821657d0da1bba3be30d63515  libstdc++-v3/testsuite/23_containers/set/check_construct_destroy.cc
  69aa4c74ba5c8b0dce6b4355749914ed  libstdc++-v3/testsuite/23_containers/set/cons/61023.cc
  1ff85d921b584e15af7933295254e795  libstdc++-v3/testsuite/23_containers/set/cons/moveable.cc
+ 951116ecd4a8e4610c08ace6551760cc  libstdc++-v3/testsuite/23_containers/set/cons/noexcept_default_construct.cc
  6229dd81a1e69a5ffc84c844c6f421e3  libstdc++-v3/testsuite/23_containers/set/cons/noexcept_move_construct.cc
  3c1f9c64e92bd792fcf98450276c232b  libstdc++-v3/testsuite/23_containers/set/debug/60499.cc
  f6b5e076b17d737011002087ef09a2e5  libstdc++-v3/testsuite/23_containers/set/debug/construct1_neg.cc
*************** ccb86af5300532c1f547847cb4318c94  libstd
*** 86864,86870 ****
  5eaff68cbaa8cf4326389f0cd93cf6da  libstdc++-v3/testsuite/23_containers/set/modifiers/swap/2.cc
  e7af450234e1d6877013974f18cc37de  libstdc++-v3/testsuite/23_containers/set/modifiers/swap/3.cc
  3e5cfe0612234ca3155ab738718c8068  libstdc++-v3/testsuite/23_containers/set/operations/1.cc
! b1743085041da0a81e561979e6623b5a  libstdc++-v3/testsuite/23_containers/set/operations/2.cc
  a1b5cbfce2b2aada1c9eaee7ce136fe6  libstdc++-v3/testsuite/23_containers/set/operations/count.cc
  adb74dae8cba1949dbe4b993675f7d2d  libstdc++-v3/testsuite/23_containers/set/operators/1_neg.cc
  60ab4eb724fcfe42d95a375604d78724  libstdc++-v3/testsuite/23_containers/set/range_access.cc
--- 87264,87270 ----
  5eaff68cbaa8cf4326389f0cd93cf6da  libstdc++-v3/testsuite/23_containers/set/modifiers/swap/2.cc
  e7af450234e1d6877013974f18cc37de  libstdc++-v3/testsuite/23_containers/set/modifiers/swap/3.cc
  3e5cfe0612234ca3155ab738718c8068  libstdc++-v3/testsuite/23_containers/set/operations/1.cc
! 6a3024e0fd640a15a1d180bd29982ce8  libstdc++-v3/testsuite/23_containers/set/operations/2.cc
  a1b5cbfce2b2aada1c9eaee7ce136fe6  libstdc++-v3/testsuite/23_containers/set/operations/count.cc
  adb74dae8cba1949dbe4b993675f7d2d  libstdc++-v3/testsuite/23_containers/set/operators/1_neg.cc
  60ab4eb724fcfe42d95a375604d78724  libstdc++-v3/testsuite/23_containers/set/range_access.cc
*************** bdc73159b71b00eba56c356c955c9902  libstd
*** 86897,86902 ****
--- 87297,87303 ----
  31d7606af24b03cfc10a2118e7e683ae  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/swap.cc
  e4f2fa04c7075a996109a515678f4d01  libstdc++-v3/testsuite/23_containers/unordered_map/cons/56112.cc
  90c0eccc40c13e676bb55467a6db0738  libstdc++-v3/testsuite/23_containers/unordered_map/cons/66055.cc
+ aed1acc4c55aaa31b9f0280e6f56ef87  libstdc++-v3/testsuite/23_containers/unordered_map/cons/81891.cc
  79a008ab71e1861809b6d3a89a6af722  libstdc++-v3/testsuite/23_containers/unordered_map/cons/moveable.cc
  8e714db9c678e4305348228670faac84  libstdc++-v3/testsuite/23_containers/unordered_map/debug/60499.cc
  c0bbe610547404a722ac3cfe753cee9e  libstdc++-v3/testsuite/23_containers/unordered_map/debug/begin1_neg.cc
*************** d5ec281d8cbcbcb8b730ec7114a39e0c  libstd
*** 87414,87419 ****
--- 87815,87821 ----
  e374ec574f6202c8aab179c92fda286d  libstdc++-v3/testsuite/24_iterators/reverse_iterator/11729.cc
  55c3cae069bb205250fa7bbcbacda2ed  libstdc++-v3/testsuite/24_iterators/reverse_iterator/2.cc
  1f1b4a7eae82b6b97c99ffc751ef4e61  libstdc++-v3/testsuite/24_iterators/reverse_iterator/3.cc
+ b6f78890d1eca7d0500a883de8c97174  libstdc++-v3/testsuite/24_iterators/reverse_iterator/71771.cc
  a2748c384b6246658f53a423c3031158  libstdc++-v3/testsuite/24_iterators/reverse_iterator/greedy_ops.cc
  0458ed6f18ad6c1351e0fb117d68eb5c  libstdc++-v3/testsuite/24_iterators/reverse_iterator/make.cc
  fb507b0195fd5cd52508f973da76bd85  libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/base_classes.cc
*************** cc8db1b9fa01cea79688c9167b0c2571  libstd
*** 87780,87785 ****
--- 88182,88188 ----
  dc8ec0e222294a21977124cad281ef11  libstdc++-v3/testsuite/25_algorithms/rotate_copy/requirements/explicit_instantiation/2.cc
  703749064944408262e96e1709b8b553  libstdc++-v3/testsuite/25_algorithms/rotate_copy/requirements/explicit_instantiation/pod.cc
  7eb3fd900e7838d0c1637e6f90178914  libstdc++-v3/testsuite/25_algorithms/search/1.cc
+ f2d4ce909499bc068bd9c8890ad562db  libstdc++-v3/testsuite/25_algorithms/search/78346.cc
  c40e5512b816e510e8569a21eb00b7b4  libstdc++-v3/testsuite/25_algorithms/search/check_type.cc
  ffb029d1f136bef42d19f5a44db989bb  libstdc++-v3/testsuite/25_algorithms/search/requirements/explicit_instantiation/2.cc
  4a0bed563ef4b24fee0efd355c0fd58b  libstdc++-v3/testsuite/25_algorithms/search/requirements/explicit_instantiation/pod.cc
*************** bcb9e8614688d1a7f2f6ba79a41f2e0a  libstd
*** 87814,87819 ****
--- 88217,88223 ----
  db30dfe2a28f8e37fc535326651b48dd  libstdc++-v3/testsuite/25_algorithms/sort/34095.cc
  acca35dce26c4102654fe6789f1c5542  libstdc++-v3/testsuite/25_algorithms/sort/34636.cc
  0c1ce8c0746a163f9d9712afcec0393f  libstdc++-v3/testsuite/25_algorithms/sort/35588.cc
+ e0cd9f4576bd9974f038d2d0ec8d973e  libstdc++-v3/testsuite/25_algorithms/sort/78991.cc
  be9c40eda7f74bcab27558f9dc2738e7  libstdc++-v3/testsuite/25_algorithms/sort/check_compare_by_value.cc
  f732e61da8b669128bc8150bc237f59a  libstdc++-v3/testsuite/25_algorithms/sort/moveable.cc
  aff044d9af933e8598e5e92c97948d11  libstdc++-v3/testsuite/25_algorithms/sort/random_test.cc
*************** dba26320d842c6da39aa46f7f44a1705  libstd
*** 87986,87992 ****
  52992f14571e53324d111adeca09c957  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/operators/serialize.cc
  ba2a6ddd725a3d2de84712967406d1af  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/requirements/explicit_instantiation/1.cc
  e232ced63e9fd96450978108cc021fcd  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/requirements/typedefs.cc
! 7d1c6fd54012b2bec8840e2781192617  libstdc++-v3/testsuite/26_numerics/random/default_random_engine.cc
  8a83f4814376a2e22da2c3b425052a58  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/55215.cc
  54d14358901a484f080135505cf19aec  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/base_copy.cc
  ad5233b9a09bdd013398742ae9927b47  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/base_move.cc
--- 88390,88396 ----
  52992f14571e53324d111adeca09c957  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/operators/serialize.cc
  ba2a6ddd725a3d2de84712967406d1af  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/requirements/explicit_instantiation/1.cc
  e232ced63e9fd96450978108cc021fcd  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/requirements/typedefs.cc
! 3d2e0a9ab8f5ac5e7051a0f19cb98fe9  libstdc++-v3/testsuite/26_numerics/random/default_random_engine.cc
  8a83f4814376a2e22da2c3b425052a58  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/55215.cc
  54d14358901a484f080135505cf19aec  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/base_copy.cc
  ad5233b9a09bdd013398742ae9927b47  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/base_move.cc
*************** ff6ecee2b5823fa0f3a30fb700455c16  libstd
*** 88458,88463 ****
--- 88862,88868 ----
  b258cb69861951a84693d5548313ea07  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/5.cc
  cb01bcfb973b79d84f727f17f32fc994  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/9178.cc
  03b2c93f55a06ea5dfc024504d10aa2b  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/9520.cc
+ 9e38cd88be90e8ec763de87e3b49dd0c  libstdc++-v3/testsuite/27_io/basic_fstream/53984.cc
  93f45ed9e6f89815717fb868cad24a4d  libstdc++-v3/testsuite/27_io/basic_fstream/assign/1.cc
  a15a3c067481da04ff91b6fb69589403  libstdc++-v3/testsuite/27_io/basic_fstream/cons/1.cc
  13781c0ed6aec6cbf0c1ce3ef6d6ebf5  libstdc++-v3/testsuite/27_io/basic_fstream/cons/base.cc
*************** ba5cac552123a703ea36b6c7fd0dc4ab  libstd
*** 88643,88648 ****
--- 89048,89054 ----
  bb5b009d091ecae53f62b4e5246efead  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/12297.cc
  5f9fda9c8d5eb62980379e93a9e9dbe0  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/2.cc
  ec8ad8aae9bc9868a95b6fbbdb89aa55  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/3.cc
+ f2fcdbb63f9588d1f62cd3c82414f648  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/53984.cc
  cfc8a582163a5560f43e03e06aa1304d  libstdc++-v3/testsuite/27_io/basic_istream/sentry/pod/1.cc
  148268cfcfc25a99453bd2434dec31ef  libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/1.cc
  f95920d57ca438b16f4ff7c2bc92f4d3  libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc
*************** f4d5955183b9200315720423b3d234b1  libstd
*** 88952,88957 ****
--- 89358,89364 ----
  c010c91128ba41c72b8c9a3935f690db  libstdc++-v3/testsuite/27_io/basic_stringbuf/sync/char/1057.cc
  15a32baf6c22341a4c34be974e747dbb  libstdc++-v3/testsuite/27_io/basic_stringbuf/sync/wchar_t/1057.cc
  6a365e6ace7610c7ba15d48ca8d4612c  libstdc++-v3/testsuite/27_io/basic_stringstream/assign/1.cc
+ b855e51bbcdfca55f7d3a14d0480bbc8  libstdc++-v3/testsuite/27_io/basic_stringstream/assign/81338.cc
  c297f463e41f7a3b04bfff320c7f770f  libstdc++-v3/testsuite/27_io/basic_stringstream/cons/2020.cc
  859e191cc5ddd83389974359c003e571  libstdc++-v3/testsuite/27_io/basic_stringstream/cons/move.cc
  2d7c4502e8e2e87bc9f20ea7f251992d  libstdc++-v3/testsuite/27_io/basic_stringstream/rdbuf/char/2832.cc
*************** d33366abd7d543c13f57516baa9b760f  libstd
*** 89213,89218 ****
--- 89620,89626 ----
  0aa2d8aac329ed3579ce5e5eddb672d9  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/47724.cc
  93d1d1352352539c1ef345c83087e171  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/cstring.cc
  6dde2381b97d763ca68376145a4d98ba  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/default.cc
+ b461c46bfcc00f2be87ba870ccc166c5  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/iter.cc
  1cb38629c4065a208fe07ed1ca08a238  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/pstring_char.cc
  d480714a718001828ca9f36e9562e4c5  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/pstring_wchar_t.cc
  f9eb1e495e38f8cbca2c0a6031ccaaa8  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/raw_string.cc
*************** aae191c4d46650faf1250761b99afc72  libstd
*** 89268,89274 ****
  e0d4d0e50e11aa0a408d14bf1f45ff3f  libstdc++-v3/testsuite/28_regex/range_access.cc
  5d80d4a561189026dd4f7543b4f9ba18  libstdc++-v3/testsuite/28_regex/regex_error/base.cc
  978607a8f7e6e3f9bd517ec5e818bb02  libstdc++-v3/testsuite/28_regex/regex_error/regex_error.cc
! 1680e2b89386743a43720ad4c459ee3c  libstdc++-v3/testsuite/28_regex/regression.cc
  9dd71ab1944ac2a62b5eabf65ccd0f70  libstdc++-v3/testsuite/28_regex/requirements/typedefs.cc
  93f040c85b8b8289ef2ff59664ef072f  libstdc++-v3/testsuite/28_regex/sub_match/cast_char.cc
  7af9bccb781396989e3c630cd72546ac  libstdc++-v3/testsuite/28_regex/sub_match/cast_wchar_t.cc
--- 89676,89682 ----
  e0d4d0e50e11aa0a408d14bf1f45ff3f  libstdc++-v3/testsuite/28_regex/range_access.cc
  5d80d4a561189026dd4f7543b4f9ba18  libstdc++-v3/testsuite/28_regex/regex_error/base.cc
  978607a8f7e6e3f9bd517ec5e818bb02  libstdc++-v3/testsuite/28_regex/regex_error/regex_error.cc
! 6eb20a7897025e9fab4cd03936f348cb  libstdc++-v3/testsuite/28_regex/regression.cc
  9dd71ab1944ac2a62b5eabf65ccd0f70  libstdc++-v3/testsuite/28_regex/requirements/typedefs.cc
  93f040c85b8b8289ef2ff59664ef072f  libstdc++-v3/testsuite/28_regex/sub_match/cast_char.cc
  7af9bccb781396989e3c630cd72546ac  libstdc++-v3/testsuite/28_regex/sub_match/cast_wchar_t.cc
*************** f0b51453938dcbe484cce812ae75956b  libstd
*** 89303,89308 ****
--- 89711,89717 ----
  c06ea9763ce042e1aaa31591690c1dc0  libstdc++-v3/testsuite/29_atomics/atomic/64658.cc
  117ab70171f95ad2f7de16e7a0481eca  libstdc++-v3/testsuite/29_atomics/atomic/65147.cc
  bd42c192efa45b0fb834bf10cc1df250  libstdc++-v3/testsuite/29_atomics/atomic/65913.cc
+ 190039037ff5c550e3f2e5338fb45918  libstdc++-v3/testsuite/29_atomics/atomic/69301.cc
  f9a58d10e6c02aa4673d2c70fb0e4552  libstdc++-v3/testsuite/29_atomics/atomic/cons/49445.cc
  5bf285201b66a8f58c1d8b5a9b55d441  libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
  66ad2a1b538a75abc696225c8fa32364  libstdc++-v3/testsuite/29_atomics/atomic/cons/constexpr.cc
*************** cd29e141b4fb0807cbbc5f0c0a65efa9  libstd
*** 89352,89358 ****
  60da78d39f970ac39440553b4e83dc1e  libstdc++-v3/testsuite/29_atomics/atomic_integral/requirements/standard_layout.cc
  bdd177f6e7fbf766660017d57d432104  libstdc++-v3/testsuite/29_atomics/atomic_integral/requirements/trivial.cc
  15a5cdbe78319dca42d3a96aceca39b7  libstdc++-v3/testsuite/29_atomics/headers/atomic/functions_std_c++0x.cc
! 6946128ce857feb7ee0c9a17d90ae5c2  libstdc++-v3/testsuite/29_atomics/headers/atomic/macros.cc
  79a8bc8e71b30e5218be79a201bf03cd  libstdc++-v3/testsuite/29_atomics/headers/atomic/std_c++0x_neg.cc
  34ea08eae3ad7c12028de900c5048eec  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x.cc
  a92ab5304a7c24dd50f7fa236043a371  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x_neg.cc
--- 89761,89767 ----
  60da78d39f970ac39440553b4e83dc1e  libstdc++-v3/testsuite/29_atomics/atomic_integral/requirements/standard_layout.cc
  bdd177f6e7fbf766660017d57d432104  libstdc++-v3/testsuite/29_atomics/atomic_integral/requirements/trivial.cc
  15a5cdbe78319dca42d3a96aceca39b7  libstdc++-v3/testsuite/29_atomics/headers/atomic/functions_std_c++0x.cc
! 4c541b30cbca6deef3d1fa7089ef5cc0  libstdc++-v3/testsuite/29_atomics/headers/atomic/macros.cc
  79a8bc8e71b30e5218be79a201bf03cd  libstdc++-v3/testsuite/29_atomics/headers/atomic/std_c++0x_neg.cc
  34ea08eae3ad7c12028de900c5048eec  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x.cc
  a92ab5304a7c24dd50f7fa236043a371  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x_neg.cc
*************** f5e421d01e425bfad1b908694b39eaba  libstd
*** 89563,89568 ****
--- 89972,89978 ----
  4b2ff3b155bd036f7938fa14687bf23f  libstdc++-v3/testsuite/30_threads/thread/cons/9.cc
  f95886b30fadd4ee70618412e850b0f9  libstdc++-v3/testsuite/30_threads/thread/cons/assign_neg.cc
  ef5f60de59de61c060fedc1afcd6b05c  libstdc++-v3/testsuite/30_threads/thread/cons/copy_neg.cc
+ 0788bc632bfa5945c37e8757d5312f1f  libstdc++-v3/testsuite/30_threads/thread/cons/lwg2097.cc
  042c7a0d34b1383620f2d5dd2f1a851d  libstdc++-v3/testsuite/30_threads/thread/cons/moveable.cc
  1bc6e00d27ea2ddd052fb0dd04637585  libstdc++-v3/testsuite/30_threads/thread/id/hash.cc
  a52c26db246d2bd588d1a1241901821b  libstdc++-v3/testsuite/30_threads/thread/id/operators.cc
*************** c37598c0fde33f623562b0e5cfd29b7e  libstd
*** 89611,89618 ****
  8d151722b6124bf752b383069b2dbe19  libstdc++-v3/testsuite/30_threads/unique_lock/modifiers/1.cc
  1f2bf346e538550b929431b3dc96d64f  libstdc++-v3/testsuite/30_threads/unique_lock/requirements/explicit_instantiation.cc
  1c6f3e1d45b7cc09ee4d838fe9269880  libstdc++-v3/testsuite/30_threads/unique_lock/requirements/typedefs.cc
! 44f1c3a8855cf03c04532dad52cd7d48  libstdc++-v3/testsuite/Makefile.am
! 6be5c042f456cf571f7457b8be9cfc85  libstdc++-v3/testsuite/Makefile.in
  3e4c47978b4ccb19b07513ffe8cc3aa7  libstdc++-v3/testsuite/abi/30586.cc
  1b168bed366ef5333aff0c11f5f68a7d  libstdc++-v3/testsuite/abi/cxx_runtime_only_linkage.cc
  7af82426bb5f8f19d1715453647bc3f1  libstdc++-v3/testsuite/abi/demangle/abi_examples/01.cc
--- 90021,90028 ----
  8d151722b6124bf752b383069b2dbe19  libstdc++-v3/testsuite/30_threads/unique_lock/modifiers/1.cc
  1f2bf346e538550b929431b3dc96d64f  libstdc++-v3/testsuite/30_threads/unique_lock/requirements/explicit_instantiation.cc
  1c6f3e1d45b7cc09ee4d838fe9269880  libstdc++-v3/testsuite/30_threads/unique_lock/requirements/typedefs.cc
! d6f3a19364db6361c15e0543bb4f5731  libstdc++-v3/testsuite/Makefile.am
! 8353731b44ae0036162ac74b1a2f9d11  libstdc++-v3/testsuite/Makefile.in
  3e4c47978b4ccb19b07513ffe8cc3aa7  libstdc++-v3/testsuite/abi/30586.cc
  1b168bed366ef5333aff0c11f5f68a7d  libstdc++-v3/testsuite/abi/cxx_runtime_only_linkage.cc
  7af82426bb5f8f19d1715453647bc3f1  libstdc++-v3/testsuite/abi/demangle/abi_examples/01.cc
*************** b00422bb58c0a1a3cba6f717a879a92c  libstd
*** 89689,89695 ****
  6c5d956b6b0bf00554b7c09aad40df7a  libstdc++-v3/testsuite/abi/demangle/regression/cw-15.cc
  3b7603cb8080c507fa85cdd4ebc26e2a  libstdc++-v3/testsuite/abi/demangle/regression/cw-16.cc
  1b1fa2da7ff2f18cfa9131032e97f0c2  libstdc++-v3/testsuite/abi/demangle/regression/old.cc
! 79488c4a0436fce07cfeed2205ab1938  libstdc++-v3/testsuite/abi/header_cxxabi.c
  eb211087d450aa52e8e371d3b6e43f0b  libstdc++-v3/testsuite/abi/pr42230.cc
  a1f8d9a05bd1a4b4ec035cc3562a4908  libstdc++-v3/testsuite/backward/11460.cc
  c2bec8f413c05c7b98eea1b8e9fff3ac  libstdc++-v3/testsuite/backward/hash_map/1.cc
--- 90099,90105 ----
  6c5d956b6b0bf00554b7c09aad40df7a  libstdc++-v3/testsuite/abi/demangle/regression/cw-15.cc
  3b7603cb8080c507fa85cdd4ebc26e2a  libstdc++-v3/testsuite/abi/demangle/regression/cw-16.cc
  1b1fa2da7ff2f18cfa9131032e97f0c2  libstdc++-v3/testsuite/abi/demangle/regression/old.cc
! 9381d035e2e050b11d44791ee86eeec5  libstdc++-v3/testsuite/abi/header_cxxabi.c
  eb211087d450aa52e8e371d3b6e43f0b  libstdc++-v3/testsuite/abi/pr42230.cc
  a1f8d9a05bd1a4b4ec035cc3562a4908  libstdc++-v3/testsuite/backward/11460.cc
  c2bec8f413c05c7b98eea1b8e9fff3ac  libstdc++-v3/testsuite/backward/hash_map/1.cc
*************** e4458818bdbc82771622d38f5079d968  libstd
*** 89777,89812 ****
  8912bbe40cc8eeda84e82f96e7df2dba  libstdc++-v3/testsuite/decimal/pr54036-3.cc
  b85e6634a14ee3ab49f092176cc51474  libstdc++-v3/testsuite/decimal/pr58815.cc
  d51f3e21ad6431dee5fe09d61cd212dd  libstdc++-v3/testsuite/decimal/unary-arith.cc
! 4940e0c38043752581e5c500c729a1a8  libstdc++-v3/testsuite/experimental/algorithm/sample.cc
  17afc05de841cd6cc88d3a8b739edc24  libstdc++-v3/testsuite/experimental/algorithm/search.cc
  5df144e01ffde22cb733c3562985229b  libstdc++-v3/testsuite/experimental/any/assign/1.cc
  77cdfabc2f351a6d637360a3446e3548  libstdc++-v3/testsuite/experimental/any/assign/2.cc
  9c4ab5fe5fb779271b94521b7b08dd2e  libstdc++-v3/testsuite/experimental/any/cons/1.cc
  0820d3ae16e4cb70c1cd197407728b77  libstdc++-v3/testsuite/experimental/any/cons/2.cc
  8852019ca7dfc3369a7fd09a6e6fdce7  libstdc++-v3/testsuite/experimental/any/cons/nontrivial.cc
! 842f1c56734d5e57cf7c367a51f4ba59  libstdc++-v3/testsuite/experimental/any/misc/any_cast.cc
! be02f48a16c7f5c4cdc2266c1307a3cd  libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc
  7b26a150cf689dd93126d743a4b5f57c  libstdc++-v3/testsuite/experimental/any/misc/any_cast_no_rtti.cc
  067ad8908443dca2d12c72be6f01a740  libstdc++-v3/testsuite/experimental/any/misc/swap.cc
  d9797aab1694a752ea961bebaa7a3291  libstdc++-v3/testsuite/experimental/any/modifiers/1.cc
  28bd2579e624d40cb7bb498717fb6564  libstdc++-v3/testsuite/experimental/any/observers/type.cc
! 79a776b15a0d127cb100daaf1574f8c1  libstdc++-v3/testsuite/experimental/any/typedefs.cc
! c71bae36e1ebc210a1e5e65e89ef3ff0  libstdc++-v3/testsuite/experimental/chrono/value.cc
  1c10a535f04c73dcb2dcf34a55e5f892  libstdc++-v3/testsuite/experimental/feat-cxx14.cc
  f1868e7d6427fc60964c1a38200d329f  libstdc++-v3/testsuite/experimental/feat-lib-fund.cc
! d9353455947c267aa24aab212095ae25  libstdc++-v3/testsuite/experimental/filesystem/iterators/directory_iterator.cc
! b64eb4551994515d2c844a9915a2b9fe  libstdc++-v3/testsuite/experimental/filesystem/iterators/recursive_directory_iterator.cc
  d59b619f20b86a251bd98a8404c36137  libstdc++-v3/testsuite/experimental/filesystem/operations/absolute.cc
  d158e1c53c170373d65dac0b0159492c  libstdc++-v3/testsuite/experimental/filesystem/operations/canonical.cc
! 73ebaba0b0e8c6af32b38c4a0c8a3e84  libstdc++-v3/testsuite/experimental/filesystem/operations/copy.cc
! 43478894c9ffeeff98b3c58779cdd278  libstdc++-v3/testsuite/experimental/filesystem/operations/copy_file.cc
! 181be60277b05df4db65bb821d5d8c44  libstdc++-v3/testsuite/experimental/filesystem/operations/create_directories.cc
  25adc7117e80c1cd1e18b1cde11f4c1e  libstdc++-v3/testsuite/experimental/filesystem/operations/create_directory.cc
  22e6de2575753436b6ed7bba2f56bcfb  libstdc++-v3/testsuite/experimental/filesystem/operations/current_path.cc
! 0c6d28111000f05d45e32004d93e1114  libstdc++-v3/testsuite/experimental/filesystem/operations/exists.cc
  5ee3804131357eb8335dee2619f859a8  libstdc++-v3/testsuite/experimental/filesystem/operations/file_size.cc
  ea39d7f9ddaa40bc9ea79628c951305c  libstdc++-v3/testsuite/experimental/filesystem/operations/status.cc
! 17996fdcec9639240c01a8a12bc79b33  libstdc++-v3/testsuite/experimental/filesystem/operations/temp_directory_path.cc
  c651b9cbfefcd55b4abb1d09e1477a97  libstdc++-v3/testsuite/experimental/filesystem/path/append/path.cc
  a8681c8a5546586c8aae970e89114690  libstdc++-v3/testsuite/experimental/filesystem/path/assign/assign.cc
  51dc391cb41f43de6d9ba6d718926e5a  libstdc++-v3/testsuite/experimental/filesystem/path/assign/copy.cc
--- 90187,90230 ----
  8912bbe40cc8eeda84e82f96e7df2dba  libstdc++-v3/testsuite/decimal/pr54036-3.cc
  b85e6634a14ee3ab49f092176cc51474  libstdc++-v3/testsuite/decimal/pr58815.cc
  d51f3e21ad6431dee5fe09d61cd212dd  libstdc++-v3/testsuite/decimal/unary-arith.cc
! b1bf34141186dfc05c57ba442ab6234d  libstdc++-v3/testsuite/experimental/algorithm/sample.cc
  17afc05de841cd6cc88d3a8b739edc24  libstdc++-v3/testsuite/experimental/algorithm/search.cc
  5df144e01ffde22cb733c3562985229b  libstdc++-v3/testsuite/experimental/any/assign/1.cc
  77cdfabc2f351a6d637360a3446e3548  libstdc++-v3/testsuite/experimental/any/assign/2.cc
  9c4ab5fe5fb779271b94521b7b08dd2e  libstdc++-v3/testsuite/experimental/any/cons/1.cc
  0820d3ae16e4cb70c1cd197407728b77  libstdc++-v3/testsuite/experimental/any/cons/2.cc
  8852019ca7dfc3369a7fd09a6e6fdce7  libstdc++-v3/testsuite/experimental/any/cons/nontrivial.cc
! d69b2f8108788c5ecdf8280946db2e1a  libstdc++-v3/testsuite/experimental/any/misc/any_cast.cc
! 3c9fbd9769548fb4b7f6de0e000503c9  libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc
  7b26a150cf689dd93126d743a4b5f57c  libstdc++-v3/testsuite/experimental/any/misc/any_cast_no_rtti.cc
  067ad8908443dca2d12c72be6f01a740  libstdc++-v3/testsuite/experimental/any/misc/swap.cc
  d9797aab1694a752ea961bebaa7a3291  libstdc++-v3/testsuite/experimental/any/modifiers/1.cc
  28bd2579e624d40cb7bb498717fb6564  libstdc++-v3/testsuite/experimental/any/observers/type.cc
! 178eb38c2d2bfb801b8ce4eeb241591a  libstdc++-v3/testsuite/experimental/any/typedefs.cc
! 0c3298322884370f0ccbf8f3c5fbac47  libstdc++-v3/testsuite/experimental/chrono/value.cc
  1c10a535f04c73dcb2dcf34a55e5f892  libstdc++-v3/testsuite/experimental/feat-cxx14.cc
  f1868e7d6427fc60964c1a38200d329f  libstdc++-v3/testsuite/experimental/feat-lib-fund.cc
! 5152f201fe4ed0fc602a47b865354bfd  libstdc++-v3/testsuite/experimental/filesystem/iterators/directory_iterator.cc
! 39dc30b4d0fa5d55ae6cf22181cee0db  libstdc++-v3/testsuite/experimental/filesystem/iterators/pop.cc
! 342294726d744aaeceb0b92dfbf9659a  libstdc++-v3/testsuite/experimental/filesystem/iterators/recursive_directory_iterator.cc
  d59b619f20b86a251bd98a8404c36137  libstdc++-v3/testsuite/experimental/filesystem/operations/absolute.cc
  d158e1c53c170373d65dac0b0159492c  libstdc++-v3/testsuite/experimental/filesystem/operations/canonical.cc
! c9c178490e0d377913e40d5f0fd41700  libstdc++-v3/testsuite/experimental/filesystem/operations/copy.cc
! 2bd6d91dacdd9dbcc53871916c94e881  libstdc++-v3/testsuite/experimental/filesystem/operations/copy_file.cc
! 232fed06860682a7eebd439eb290af63  libstdc++-v3/testsuite/experimental/filesystem/operations/create_directories.cc
  25adc7117e80c1cd1e18b1cde11f4c1e  libstdc++-v3/testsuite/experimental/filesystem/operations/create_directory.cc
+ 38ba8795fabeabcbc98284230a756c29  libstdc++-v3/testsuite/experimental/filesystem/operations/create_symlink.cc
  22e6de2575753436b6ed7bba2f56bcfb  libstdc++-v3/testsuite/experimental/filesystem/operations/current_path.cc
! dbdb00c67d5dc6772d150b87c7a3da0a  libstdc++-v3/testsuite/experimental/filesystem/operations/equivalent.cc
! 4b6de16de9670886293d825baa91e102  libstdc++-v3/testsuite/experimental/filesystem/operations/exists.cc
  5ee3804131357eb8335dee2619f859a8  libstdc++-v3/testsuite/experimental/filesystem/operations/file_size.cc
+ 085ecd77876b8765af0fb2376a324d12  libstdc++-v3/testsuite/experimental/filesystem/operations/is_empty.cc
+ 60e34aa9914fd1b224594e9a6db9b299  libstdc++-v3/testsuite/experimental/filesystem/operations/last_write_time.cc
+ 75d957c4b12b36e2c8ad4dafcbb38b7e  libstdc++-v3/testsuite/experimental/filesystem/operations/permissions.cc
+ 59a403c45210a3ceb057a905fe0ecd38  libstdc++-v3/testsuite/experimental/filesystem/operations/read_symlink.cc
+ 45c648cffe0568036684a3e4f548c019  libstdc++-v3/testsuite/experimental/filesystem/operations/remove_all.cc
  ea39d7f9ddaa40bc9ea79628c951305c  libstdc++-v3/testsuite/experimental/filesystem/operations/status.cc
! 9e17537128f48417959da824246cd5ce  libstdc++-v3/testsuite/experimental/filesystem/operations/temp_directory_path.cc
  c651b9cbfefcd55b4abb1d09e1477a97  libstdc++-v3/testsuite/experimental/filesystem/path/append/path.cc
  a8681c8a5546586c8aae970e89114690  libstdc++-v3/testsuite/experimental/filesystem/path/assign/assign.cc
  51dc391cb41f43de6d9ba6d718926e5a  libstdc++-v3/testsuite/experimental/filesystem/path/assign/copy.cc
*************** c697f2ad3719a6b60c9f665454560f3f  libstd
*** 89818,89824 ****
  a9b75b44755d0218b591d0800e6d8a95  libstdc++-v3/testsuite/experimental/filesystem/path/construct/copy.cc
  b92c6dc45c0b7aca50b5e4954593f072  libstdc++-v3/testsuite/experimental/filesystem/path/construct/default.cc
  abce0f1846315c2f67ddca1fddad07cb  libstdc++-v3/testsuite/experimental/filesystem/path/construct/locale.cc
! 97a6cfe62f2076fc415fc858d08e479c  libstdc++-v3/testsuite/experimental/filesystem/path/construct/range.cc
  79295fe47abb8efdd9f01a96bef0b3b9  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/extension.cc
  78affa87ff7cd1d1c4d4454ecb227ef4  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/filename.cc
  b0c62eea8573c84ea7a8edc5bf368fb6  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/parent_path.cc
--- 90236,90243 ----
  a9b75b44755d0218b591d0800e6d8a95  libstdc++-v3/testsuite/experimental/filesystem/path/construct/copy.cc
  b92c6dc45c0b7aca50b5e4954593f072  libstdc++-v3/testsuite/experimental/filesystem/path/construct/default.cc
  abce0f1846315c2f67ddca1fddad07cb  libstdc++-v3/testsuite/experimental/filesystem/path/construct/locale.cc
! d1d325687da8c23e4502d760d23d29c2  libstdc++-v3/testsuite/experimental/filesystem/path/construct/range.cc
! e2a436d713e0ecbd3f2fba0f3c90cc34  libstdc++-v3/testsuite/experimental/filesystem/path/construct/string_view.cc
  79295fe47abb8efdd9f01a96bef0b3b9  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/extension.cc
  78affa87ff7cd1d1c4d4454ecb227ef4  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/filename.cc
  b0c62eea8573c84ea7a8edc5bf368fb6  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/parent_path.cc
*************** d5db974a706f613a925136de562f5b3c  libstd
*** 89847,89899 ****
  3caad6031433c634c061e72edf0c01cd  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_root_path.cc
  ac02712866abec15dd8ef5d75cae6a36  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_stem.cc
  570a28c676a821eed170bb6e088194a9  libstdc++-v3/testsuite/experimental/filesystem/path/query/is_relative.cc
! 71a5e7e646664fad6a38f4edfa3e91c4  libstdc++-v3/testsuite/experimental/functional/not_fn.cc
  7dedd912cb1300b7278aef36626d72ca  libstdc++-v3/testsuite/experimental/functional/searchers.cc
  bde8d7805c483b450a4af8bf54546d4c  libstdc++-v3/testsuite/experimental/functional/value.cc
! 83d7c4eb6d91efc719a31bc789aace7e  libstdc++-v3/testsuite/experimental/optional/assignment/1.cc
! cc8e058f45441859f79a1ce54213b575  libstdc++-v3/testsuite/experimental/optional/assignment/2.cc
! df1edd34729d885b789a2781ee4c1362  libstdc++-v3/testsuite/experimental/optional/assignment/3.cc
! 4d9292c18797385296d3894c9e0d0482  libstdc++-v3/testsuite/experimental/optional/assignment/4.cc
! 2c1403a83ddff1763b2ea4e8deb73b8b  libstdc++-v3/testsuite/experimental/optional/assignment/5.cc
! ed2906d756e91ccd4ac9bf142cf7c4f8  libstdc++-v3/testsuite/experimental/optional/assignment/6.cc
  d4ca80db2b2a540d64c5a8216a549caa  libstdc++-v3/testsuite/experimental/optional/cons/copy.cc
  127e829757b16f28c2c30890a0a1b8b7  libstdc++-v3/testsuite/experimental/optional/cons/default.cc
! 9630ce8d661e7a7c0c60320c7509388a  libstdc++-v3/testsuite/experimental/optional/cons/move.cc
! d79e1173abdbb558a3377edc63356ba4  libstdc++-v3/testsuite/experimental/optional/cons/value.cc
  a8f27f2c76934b0e4aef193a3320462b  libstdc++-v3/testsuite/experimental/optional/constexpr/cons/default.cc
! 49a19f9aadb390a54d0292ec9babb65b  libstdc++-v3/testsuite/experimental/optional/constexpr/cons/value.cc
  d8922cac53a7de29eb23d8eb444adabd  libstdc++-v3/testsuite/experimental/optional/constexpr/in_place.cc
! 576e8bf473142686c8cb2a19ee65d474  libstdc++-v3/testsuite/experimental/optional/constexpr/make_optional.cc
  3d288fbb75569ba8a76c25d6ffbad468  libstdc++-v3/testsuite/experimental/optional/constexpr/nullopt.cc
! 7928831dd852348bd0e5cdc0fb97ddc2  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/1.cc
! fe6a0071562eb38710933666a815c481  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/2.cc
! 831f80d686c1d8ee818e4f29c99c142e  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/3.cc
! 43bf4083fb451e8fd1cbfaee49ad015d  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/4.cc
! 4ace25d23517903486c696ba564b1c75  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/5.cc
! 239565f455fbe5ff184a728e146100f4  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/1.cc
! fb9a4363f316f78adbcd6cd854412ee6  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/2.cc
! b8a77ee63b8064fbd683abb4427c5041  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/3.cc
! c7305170759230bb2d38114513cd8269  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/4.cc
! 2a02447409654c31acd417e9094bc98f  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/5.cc
! 2b23ac84856b34e9115b1bd5c43237e2  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/6.cc
  b018a8c113577ca3689f2fc2c8823fc1  libstdc++-v3/testsuite/experimental/optional/in_place.cc
! 70669eaca53abb45bdada047ae64d1e1  libstdc++-v3/testsuite/experimental/optional/make_optional.cc
  387280389da2d83b748e618ae0225fa1  libstdc++-v3/testsuite/experimental/optional/nullopt.cc
! 61862a4af4dde2b49a6fe9a2029ffceb  libstdc++-v3/testsuite/experimental/optional/observers/1.cc
! 047f5a137d54ee8925848bbb123d2e1e  libstdc++-v3/testsuite/experimental/optional/observers/2.cc
! 4ed8866ee996e2078abf37778217dbe8  libstdc++-v3/testsuite/experimental/optional/observers/3.cc
! 351d8e93cb521bf5344621623d6591ec  libstdc++-v3/testsuite/experimental/optional/observers/4.cc
! 9b590c0c8689c793a2ad95d8d6824fec  libstdc++-v3/testsuite/experimental/optional/observers/5.cc
! 16227aaffe61b9809d02df0a776e9b5b  libstdc++-v3/testsuite/experimental/optional/relops/1.cc
! ad091af2db449f5f3613f47209336694  libstdc++-v3/testsuite/experimental/optional/relops/2.cc
! 1bcfc9fadecc9d501d439d19fd8c5724  libstdc++-v3/testsuite/experimental/optional/relops/3.cc
! 60e495d49a0de665aeb3a6e824cfc667  libstdc++-v3/testsuite/experimental/optional/relops/4.cc
! 8738e89a3b5077f5732316ad5cd7b6d2  libstdc++-v3/testsuite/experimental/optional/relops/5.cc
! eb6bf591101c3fa9d7835af2325cec7b  libstdc++-v3/testsuite/experimental/optional/relops/6.cc
! d2c3de82f7e4b57a81f20929cc3a8d28  libstdc++-v3/testsuite/experimental/optional/requirements.cc
! a8780ea3c337d5bd190acf3150457e94  libstdc++-v3/testsuite/experimental/optional/swap/1.cc
! bd88d1b8f69d1ec51a29506dfb990da0  libstdc++-v3/testsuite/experimental/optional/typedefs.cc
! b3b6d8d1e1cb27d0a5448aad40a9f2b2  libstdc++-v3/testsuite/experimental/ratio/value.cc
  44b1f28db585dc85fe05fdf9d2326e0e  libstdc++-v3/testsuite/experimental/string_view/capacity/1.cc
  28b01d42e26b382b7f336f4978d4f7be  libstdc++-v3/testsuite/experimental/string_view/cons/char/1.cc
  390da4e0fe0d3ee1041751e0f3e2a702  libstdc++-v3/testsuite/experimental/string_view/cons/char/2.cc
--- 90266,90318 ----
  3caad6031433c634c061e72edf0c01cd  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_root_path.cc
  ac02712866abec15dd8ef5d75cae6a36  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_stem.cc
  570a28c676a821eed170bb6e088194a9  libstdc++-v3/testsuite/experimental/filesystem/path/query/is_relative.cc
! 40ccb743f043faf3775f85cef1411606  libstdc++-v3/testsuite/experimental/functional/not_fn.cc
  7dedd912cb1300b7278aef36626d72ca  libstdc++-v3/testsuite/experimental/functional/searchers.cc
  bde8d7805c483b450a4af8bf54546d4c  libstdc++-v3/testsuite/experimental/functional/value.cc
! 5b9959dce1ce956239c8dde7267a067c  libstdc++-v3/testsuite/experimental/optional/assignment/1.cc
! 9d5972d603e11ef75730b050c276c31d  libstdc++-v3/testsuite/experimental/optional/assignment/2.cc
! 16a6053a093b5429be0adff2fb926e54  libstdc++-v3/testsuite/experimental/optional/assignment/3.cc
! 24f3ba2babd5122df7d23e12eace2df9  libstdc++-v3/testsuite/experimental/optional/assignment/4.cc
! 029600f2089615f54d616a49ee2e0934  libstdc++-v3/testsuite/experimental/optional/assignment/5.cc
! a698b7c4a9cfd3f94ed8d27a4af4629c  libstdc++-v3/testsuite/experimental/optional/assignment/6.cc
  d4ca80db2b2a540d64c5a8216a549caa  libstdc++-v3/testsuite/experimental/optional/cons/copy.cc
  127e829757b16f28c2c30890a0a1b8b7  libstdc++-v3/testsuite/experimental/optional/cons/default.cc
! b914a084e893fc20444b6dbc97772d84  libstdc++-v3/testsuite/experimental/optional/cons/move.cc
! b8ac641ece7154511ab25b5833c1a84a  libstdc++-v3/testsuite/experimental/optional/cons/value.cc
  a8f27f2c76934b0e4aef193a3320462b  libstdc++-v3/testsuite/experimental/optional/constexpr/cons/default.cc
! a667031d47b7993001696557ad2ea851  libstdc++-v3/testsuite/experimental/optional/constexpr/cons/value.cc
  d8922cac53a7de29eb23d8eb444adabd  libstdc++-v3/testsuite/experimental/optional/constexpr/in_place.cc
! 1129a8efac61392e5df6f308f6eac965  libstdc++-v3/testsuite/experimental/optional/constexpr/make_optional.cc
  3d288fbb75569ba8a76c25d6ffbad468  libstdc++-v3/testsuite/experimental/optional/constexpr/nullopt.cc
! da1ed9a975510f19ed065847448f9e05  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/1.cc
! 802ee50d26f288e8831741201c83a19c  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/2.cc
! 1e8a5a4bdfbea9f3649f9acc50521ce9  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/3.cc
! d35794c291c98f5b1679b6194d6988d2  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/4.cc
! b724c37daaad9c758442c02d933cc2fe  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/5.cc
! 3528ae13d4bb685a8423898d48ae6c53  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/1.cc
! d328fc912c5305a7c89a55091bf76653  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/2.cc
! 96a5303722dee563d3d524396b088048  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/3.cc
! 7505229b86de48bb4537028e779c8128  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/4.cc
! 93cc1c154989a4467583f47f5aec96ad  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/5.cc
! 80913b879871970daecec44840eb7aba  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/6.cc
  b018a8c113577ca3689f2fc2c8823fc1  libstdc++-v3/testsuite/experimental/optional/in_place.cc
! f6db4a1f253c65b84a07140318b831df  libstdc++-v3/testsuite/experimental/optional/make_optional.cc
  387280389da2d83b748e618ae0225fa1  libstdc++-v3/testsuite/experimental/optional/nullopt.cc
! 45b9157187c30df48db1c89360889bb8  libstdc++-v3/testsuite/experimental/optional/observers/1.cc
! 3ae140205062e2b6844909bf9dced241  libstdc++-v3/testsuite/experimental/optional/observers/2.cc
! f22e5785e82b96db0e72d48d8def5395  libstdc++-v3/testsuite/experimental/optional/observers/3.cc
! 39945a24b49f01230108de78edd005e8  libstdc++-v3/testsuite/experimental/optional/observers/4.cc
! adfb42bf95c09eb490f4e79f8beeb64f  libstdc++-v3/testsuite/experimental/optional/observers/5.cc
! b8c8c9541ed75a9bf7721c5d4131835a  libstdc++-v3/testsuite/experimental/optional/relops/1.cc
! d813076b8a490e5c03057ce0df848a1e  libstdc++-v3/testsuite/experimental/optional/relops/2.cc
! e47fcdc7707b8560ac67167ac81f00f0  libstdc++-v3/testsuite/experimental/optional/relops/3.cc
! da5b0b76d802bfb337e673452be1265d  libstdc++-v3/testsuite/experimental/optional/relops/4.cc
! 9ed6c22133f7fde30ec01054a8deb420  libstdc++-v3/testsuite/experimental/optional/relops/5.cc
! cccd8032b85df09e80a8cdaf9f95e241  libstdc++-v3/testsuite/experimental/optional/relops/6.cc
! a8cd1e2c18ba75fe1d31bbf617ce8764  libstdc++-v3/testsuite/experimental/optional/requirements.cc
! 808b0e7279ed364a9c886a52b408efdf  libstdc++-v3/testsuite/experimental/optional/swap/1.cc
! 0e0a2daa72b2e06f6cc489a0fc0f8f37  libstdc++-v3/testsuite/experimental/optional/typedefs.cc
! 890e85757139536e342d2fff2d2e2581  libstdc++-v3/testsuite/experimental/ratio/value.cc
  44b1f28db585dc85fe05fdf9d2326e0e  libstdc++-v3/testsuite/experimental/string_view/capacity/1.cc
  28b01d42e26b382b7f336f4978d4f7be  libstdc++-v3/testsuite/experimental/string_view/cons/char/1.cc
  390da4e0fe0d3ee1041751e0f3e2a702  libstdc++-v3/testsuite/experimental/string_view/cons/char/2.cc
*************** fdaf3cbfa155768a04007995ff0df8a6  libstd
*** 89958,89969 ****
  74df7dff469c803245dba5475fbf5af9  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/char32_t/1.cc
  404177a43d27b58c86e3d5befcbb6e58  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/wchar_t/1.cc
  b15c1e440c6c766478b33d5c89049d23  libstdc++-v3/testsuite/experimental/string_view/requirements/typedefs.cc
! cceb4ae15b63e41780a782cee0c7351c  libstdc++-v3/testsuite/experimental/string_view/typedefs.cc
  2f40876477489904c91cf4abb3a95bbd  libstdc++-v3/testsuite/experimental/string_view/types/1.cc
! ad529a423bb74da678d59a230b218c96  libstdc++-v3/testsuite/experimental/system_error/value.cc
  73bcb1319926414f08bc6279a28a18d4  libstdc++-v3/testsuite/experimental/tuple/apply.cc
! a460a6019425b9eeffb6924d6e0219ed  libstdc++-v3/testsuite/experimental/tuple/tuple_size.cc
! 6d8525ec8b861f79c1bfdda4997f4d11  libstdc++-v3/testsuite/experimental/type_traits/value.cc
  11a524b0a27a56a698dbf630ddb149f7  libstdc++-v3/testsuite/ext/array_allocator/1.cc
  fa1377f6eafbb23351f933fcb8a1a143  libstdc++-v3/testsuite/ext/array_allocator/2.cc
  d1e170890f883ee074f74b6f50d9224c  libstdc++-v3/testsuite/ext/array_allocator/26875.cc
--- 90377,90388 ----
  74df7dff469c803245dba5475fbf5af9  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/char32_t/1.cc
  404177a43d27b58c86e3d5befcbb6e58  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/wchar_t/1.cc
  b15c1e440c6c766478b33d5c89049d23  libstdc++-v3/testsuite/experimental/string_view/requirements/typedefs.cc
! 69c128c4aeac46869fe5992397f495a6  libstdc++-v3/testsuite/experimental/string_view/typedefs.cc
  2f40876477489904c91cf4abb3a95bbd  libstdc++-v3/testsuite/experimental/string_view/types/1.cc
! e830d9b5f5390ce5f209170962a6f9ae  libstdc++-v3/testsuite/experimental/system_error/value.cc
  73bcb1319926414f08bc6279a28a18d4  libstdc++-v3/testsuite/experimental/tuple/apply.cc
! c6bcefa70ca30c0c67ddb3e38eaf77e0  libstdc++-v3/testsuite/experimental/tuple/tuple_size.cc
! 573332562c48e14cf4304b0bc70cd645  libstdc++-v3/testsuite/experimental/type_traits/value.cc
  11a524b0a27a56a698dbf630ddb149f7  libstdc++-v3/testsuite/ext/array_allocator/1.cc
  fa1377f6eafbb23351f933fcb8a1a143  libstdc++-v3/testsuite/ext/array_allocator/2.cc
  d1e170890f883ee074f74b6f50d9224c  libstdc++-v3/testsuite/ext/array_allocator/26875.cc
*************** d82b4fab7df54dc5c2715e5883bec7b5  libstd
*** 90083,90091 ****
  4e333d23116bbb486a65a5b0299c33c1  libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_map_rand_debug.cc
  d45f9e2dd31518b84164970861fd7625  libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_set_rand.cc
  775c7cec61f1ef55c1a951e4817df58f  libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_set_rand_debug.cc
  bd77766492d0f7fcf5c7925e1857e868  libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queue_rand.cc
  a96817c73816bff2c33952b8c6a12e40  libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queue_rand_debug.cc
! 342c7a2c762c9ae201c0ce04e78da648  libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queues.cc
  7e3db66d226b025469fce648e06b9c73  libstdc++-v3/testsuite/ext/pb_ds/regression/tree_map_rand.cc
  60abf43df3bb0eb55df961ec2a71dce4  libstdc++-v3/testsuite/ext/pb_ds/regression/tree_map_rand_debug.cc
  88637343793d687ceb3e127826661b1f  libstdc++-v3/testsuite/ext/pb_ds/regression/tree_set_rand.cc
--- 90502,90511 ----
  4e333d23116bbb486a65a5b0299c33c1  libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_map_rand_debug.cc
  d45f9e2dd31518b84164970861fd7625  libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_set_rand.cc
  775c7cec61f1ef55c1a951e4817df58f  libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_set_rand_debug.cc
+ adaf4213d618ef3bf2e611c156e73ce1  libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queue_binary_heap-62045.cc
  bd77766492d0f7fcf5c7925e1857e868  libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queue_rand.cc
  a96817c73816bff2c33952b8c6a12e40  libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queue_rand_debug.cc
! 34f1efbed067b8086824c37ee4767c99  libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queues.cc
  7e3db66d226b025469fce648e06b9c73  libstdc++-v3/testsuite/ext/pb_ds/regression/tree_map_rand.cc
  60abf43df3bb0eb55df961ec2a71dce4  libstdc++-v3/testsuite/ext/pb_ds/regression/tree_map_rand_debug.cc
  88637343793d687ceb3e127826661b1f  libstdc++-v3/testsuite/ext/pb_ds/regression/tree_set_rand.cc
*************** c85b22ef7778d1a58dcab78789d747a4  libstd
*** 90103,90109 ****
  08a291c5e0ff92133bdba048bb46848e  libstdc++-v3/testsuite/ext/pool_allocator/explicit_instantiation.cc
  56628295a7bdba12c0a830483e75bf27  libstdc++-v3/testsuite/ext/pool_allocator/variadic_construct.cc
  6e80d868ec40d2a8bc7509aa838d0a84  libstdc++-v3/testsuite/ext/profile/all.cc
! 1dd7c5dabc148a74637b530720e1181d  libstdc++-v3/testsuite/ext/profile/mutex_extensions_neg.cc
  fdd817f377bf8329ad61c7c2efe44605  libstdc++-v3/testsuite/ext/profile/profiler_algos.cc
  74b43934bcaa013af0ee530ca8bef0ca  libstdc++-v3/testsuite/ext/profile/replace_new.cc
  7e67dff1232cba142c53a1d8c326243d  libstdc++-v3/testsuite/ext/random/arcsine_distribution/cons/default.cc
--- 90523,90529 ----
  08a291c5e0ff92133bdba048bb46848e  libstdc++-v3/testsuite/ext/pool_allocator/explicit_instantiation.cc
  56628295a7bdba12c0a830483e75bf27  libstdc++-v3/testsuite/ext/pool_allocator/variadic_construct.cc
  6e80d868ec40d2a8bc7509aa838d0a84  libstdc++-v3/testsuite/ext/profile/all.cc
! 9570eefa21d4fe05a96c3a6e018ac975  libstdc++-v3/testsuite/ext/profile/mutex_extensions_neg.cc
  fdd817f377bf8329ad61c7c2efe44605  libstdc++-v3/testsuite/ext/profile/profiler_algos.cc
  74b43934bcaa013af0ee530ca8bef0ca  libstdc++-v3/testsuite/ext/profile/replace_new.cc
  7e67dff1232cba142c53a1d8c326243d  libstdc++-v3/testsuite/ext/random/arcsine_distribution/cons/default.cc
*************** bde5bbc5c6dd69150f391d1d625fabde  libstd
*** 90222,90227 ****
--- 90642,90649 ----
  3007b28fd60c82fc6a2f7a1d6d623d91  libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-2.cc
  4f469be1092ee407e46ef0f32721f233  libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-3.cc
  2e9b1c1692f9e2d4cee76e300a045df9  libstdc++-v3/testsuite/ext/stdio_filebuf/char/2.cc
+ 27988ec57765b6fad6dc4a46c6e8d093  libstdc++-v3/testsuite/ext/stdio_filebuf/char/79820.cc
+ a5b76ab5544142437a4202bcc0dcd2c0  libstdc++-v3/testsuite/ext/stdio_filebuf/char/81751.cc
  739340f84c950a9833b57febb7a8c92c  libstdc++-v3/testsuite/ext/stdio_filebuf/requirements/explicit_instantiation.cc
  e81da8cf1cce4ce8fa0ba42a1e478721  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/1.cc
  705f6a96373d6060beb52d16d7784c69  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/12048-1.cc
*************** cdda6f093b200c7369e10271522b8fca  libstd
*** 90294,90318 ****
  0f8ca56b40749b2924a4a8898a90e087  libstdc++-v3/testsuite/ext/vstring/types/23767.cc
  d1ccaa1d0aa1d567b1cefe40211570a3  libstdc++-v3/testsuite/lib/dg-options.exp
  3d9f0f9b8bfca1e41f33f5cf9be17261  libstdc++-v3/testsuite/lib/gdb-test.exp
! feafe2bee54b68b525e0f9dd9b15d8b5  libstdc++-v3/testsuite/lib/libstdc++.exp
  38175b10db17bc6a4addc1484a607447  libstdc++-v3/testsuite/lib/prune.exp
  75ec7d6fa668bf2dda42f09a8d0e8da9  libstdc++-v3/testsuite/libstdc++-abi/abi.exp
  a0a4cbf08f67a4fa61d7187fb0ed255d  libstdc++-v3/testsuite/libstdc++-dg/conformance.exp
  ef6b4db95cca251e5e71aaf5bf99d551  libstdc++-v3/testsuite/libstdc++-prettyprinters/48362.cc
  282d13795982eb654c7e3fc8988d54b5  libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc
  6d8e1b90939735cecceb16d8755f6b17  libstdc++-v3/testsuite/libstdc++-prettyprinters/debug.cc
  1807f5e4c55a5760bb701253ddf8f160  libstdc++-v3/testsuite/libstdc++-prettyprinters/libfundts.cc
  caf971c86a8b350ec4d8aea2190e64d4  libstdc++-v3/testsuite/libstdc++-prettyprinters/prettyprinters.exp
  0d45de9b08da076346e1d5e97c434cc5  libstdc++-v3/testsuite/libstdc++-prettyprinters/shared_ptr.cc
! 4686038968162521d0df88229d2fa6e4  libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc
! 492dd7bb218bdee90d5830705f826aa7  libstdc++-v3/testsuite/libstdc++-prettyprinters/simple11.cc
  f8bc1952ed05b68b8a451d8518fff660  libstdc++-v3/testsuite/libstdc++-prettyprinters/tr1.cc
  3e08409ebd36c1770229252fe8a29e70  libstdc++-v3/testsuite/libstdc++-prettyprinters/whatis.cc
  31ba231409babe4490c1976814261459  libstdc++-v3/testsuite/libstdc++-xmethods/array.cc
  e52422214e14e3185334b2ecaa34448a  libstdc++-v3/testsuite/libstdc++-xmethods/associative-containers.cc
  a999043567f67e61e797ad2350d530e2  libstdc++-v3/testsuite/libstdc++-xmethods/deque.cc
  9a2341d598e26848249af390291910b3  libstdc++-v3/testsuite/libstdc++-xmethods/forwardlist.cc
! 04a7eac1741ddc99e4a8058a9038c7e0  libstdc++-v3/testsuite/libstdc++-xmethods/list.cc
  e50b9cecb85b66d687e8891ce0b94380  libstdc++-v3/testsuite/libstdc++-xmethods/unique_ptr.cc
  e1ed8058eb3602b9028a64b494a8f5d5  libstdc++-v3/testsuite/libstdc++-xmethods/vector.cc
  22accf3a41ebf184e97435104ddda4a2  libstdc++-v3/testsuite/libstdc++-xmethods/xmethods.exp
--- 90716,90741 ----
  0f8ca56b40749b2924a4a8898a90e087  libstdc++-v3/testsuite/ext/vstring/types/23767.cc
  d1ccaa1d0aa1d567b1cefe40211570a3  libstdc++-v3/testsuite/lib/dg-options.exp
  3d9f0f9b8bfca1e41f33f5cf9be17261  libstdc++-v3/testsuite/lib/gdb-test.exp
! f0eec4cb1b40d5584be7bb7c40d445e9  libstdc++-v3/testsuite/lib/libstdc++.exp
  38175b10db17bc6a4addc1484a607447  libstdc++-v3/testsuite/lib/prune.exp
  75ec7d6fa668bf2dda42f09a8d0e8da9  libstdc++-v3/testsuite/libstdc++-abi/abi.exp
  a0a4cbf08f67a4fa61d7187fb0ed255d  libstdc++-v3/testsuite/libstdc++-dg/conformance.exp
  ef6b4db95cca251e5e71aaf5bf99d551  libstdc++-v3/testsuite/libstdc++-prettyprinters/48362.cc
+ 68e683137d64badec192d4c3bd419579  libstdc++-v3/testsuite/libstdc++-prettyprinters/59161.cc
  282d13795982eb654c7e3fc8988d54b5  libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc
  6d8e1b90939735cecceb16d8755f6b17  libstdc++-v3/testsuite/libstdc++-prettyprinters/debug.cc
  1807f5e4c55a5760bb701253ddf8f160  libstdc++-v3/testsuite/libstdc++-prettyprinters/libfundts.cc
  caf971c86a8b350ec4d8aea2190e64d4  libstdc++-v3/testsuite/libstdc++-prettyprinters/prettyprinters.exp
  0d45de9b08da076346e1d5e97c434cc5  libstdc++-v3/testsuite/libstdc++-prettyprinters/shared_ptr.cc
! 2e4332de4258686dc86ae99f178fe375  libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc
! f1ea5811702448803bfd269016bad4f5  libstdc++-v3/testsuite/libstdc++-prettyprinters/simple11.cc
  f8bc1952ed05b68b8a451d8518fff660  libstdc++-v3/testsuite/libstdc++-prettyprinters/tr1.cc
  3e08409ebd36c1770229252fe8a29e70  libstdc++-v3/testsuite/libstdc++-prettyprinters/whatis.cc
  31ba231409babe4490c1976814261459  libstdc++-v3/testsuite/libstdc++-xmethods/array.cc
  e52422214e14e3185334b2ecaa34448a  libstdc++-v3/testsuite/libstdc++-xmethods/associative-containers.cc
  a999043567f67e61e797ad2350d530e2  libstdc++-v3/testsuite/libstdc++-xmethods/deque.cc
  9a2341d598e26848249af390291910b3  libstdc++-v3/testsuite/libstdc++-xmethods/forwardlist.cc
! f4a78d6a8eb37dda09b274c2b47a5425  libstdc++-v3/testsuite/libstdc++-xmethods/list.cc
  e50b9cecb85b66d687e8891ce0b94380  libstdc++-v3/testsuite/libstdc++-xmethods/unique_ptr.cc
  e1ed8058eb3602b9028a64b494a8f5d5  libstdc++-v3/testsuite/libstdc++-xmethods/vector.cc
  22accf3a41ebf184e97435104ddda4a2  libstdc++-v3/testsuite/libstdc++-xmethods/xmethods.exp
*************** e255b3f6d0466119eb96f3d956f0ced2  libstd
*** 91086,91092 ****
  887bf40f7e3e256fdbaba654864141e6  libstdc++-v3/testsuite/util/testsuite_abi.h
  d0866c3b64aaa09d83e4fe16edeb11a5  libstdc++-v3/testsuite/util/testsuite_abi_check.cc
  a11b1e002a5c42fab34938479d8315ca  libstdc++-v3/testsuite/util/testsuite_allocator.cc
! 70d5fc7e12209d6ba443baf127d3ee71  libstdc++-v3/testsuite/util/testsuite_allocator.h
  36e33d1363b146391d91bd458283416d  libstdc++-v3/testsuite/util/testsuite_api.h
  dc98fd86b88226fd1338470d1bd3b217  libstdc++-v3/testsuite/util/testsuite_character.cc
  60165b3b356e585eb621719deb4080d8  libstdc++-v3/testsuite/util/testsuite_character.h
--- 91509,91515 ----
  887bf40f7e3e256fdbaba654864141e6  libstdc++-v3/testsuite/util/testsuite_abi.h
  d0866c3b64aaa09d83e4fe16edeb11a5  libstdc++-v3/testsuite/util/testsuite_abi_check.cc
  a11b1e002a5c42fab34938479d8315ca  libstdc++-v3/testsuite/util/testsuite_allocator.cc
! e40abcca223b3ba081c26f8542be0015  libstdc++-v3/testsuite/util/testsuite_allocator.h
  36e33d1363b146391d91bd458283416d  libstdc++-v3/testsuite/util/testsuite_api.h
  dc98fd86b88226fd1338470d1bd3b217  libstdc++-v3/testsuite/util/testsuite_character.cc
  60165b3b356e585eb621719deb4080d8  libstdc++-v3/testsuite/util/testsuite_character.h
*************** cfd6a3073a2a054ef0434258467f7e01  libstd
*** 91096,91105 ****
  41c4892b1a6335645517b54ccb31f5ea  libstdc++-v3/testsuite/util/testsuite_containers.h
  606eb58a9d68b55ae03577365d23ce9e  libstdc++-v3/testsuite/util/testsuite_counter_type.h
  d23ee1aef25d462266dda64d3f962d1c  libstdc++-v3/testsuite/util/testsuite_error.h
! 7c7c776dd5df84f876c8eb17c6005942  libstdc++-v3/testsuite/util/testsuite_fs.h
  aff5a0c6584cff622a9e62f6ffa73789  libstdc++-v3/testsuite/util/testsuite_greedy_ops.h
  431db1da6d6e8e9e1064773cb9b09c55  libstdc++-v3/testsuite/util/testsuite_hooks.cc
! 9d1bd5d1b0f4590ddae16040fbf06e47  libstdc++-v3/testsuite/util/testsuite_hooks.h
  0b4d17fadd08a420eaeb8612e4f549e2  libstdc++-v3/testsuite/util/testsuite_io.h
  fef59bdb25215ac4b80d7aa2bec48b74  libstdc++-v3/testsuite/util/testsuite_iterators.h
  a2333f73941fdf49306fddaafbd5254f  libstdc++-v3/testsuite/util/testsuite_new_operators.h
--- 91519,91528 ----
  41c4892b1a6335645517b54ccb31f5ea  libstdc++-v3/testsuite/util/testsuite_containers.h
  606eb58a9d68b55ae03577365d23ce9e  libstdc++-v3/testsuite/util/testsuite_counter_type.h
  d23ee1aef25d462266dda64d3f962d1c  libstdc++-v3/testsuite/util/testsuite_error.h
! 3de9a2d8a787eac57b09d36600206971  libstdc++-v3/testsuite/util/testsuite_fs.h
  aff5a0c6584cff622a9e62f6ffa73789  libstdc++-v3/testsuite/util/testsuite_greedy_ops.h
  431db1da6d6e8e9e1064773cb9b09c55  libstdc++-v3/testsuite/util/testsuite_hooks.cc
! d98590d23e0349381dfd626db2da7069  libstdc++-v3/testsuite/util/testsuite_hooks.h
  0b4d17fadd08a420eaeb8612e4f549e2  libstdc++-v3/testsuite/util/testsuite_io.h
  fef59bdb25215ac4b80d7aa2bec48b74  libstdc++-v3/testsuite/util/testsuite_iterators.h
  a2333f73941fdf49306fddaafbd5254f  libstdc++-v3/testsuite/util/testsuite_new_operators.h
*************** a2333f73941fdf49306fddaafbd5254f  libstd
*** 91113,91119 ****
  d70b9cbb92ec922b879056258938b07d  libstdc++-v3/testsuite/util/thread/all.h
  b950d655469c477755252b1e18009596  libtool-ldflags
  7a2b83d2d625a4022b9213ceb75f5897  libtool.m4
! 30b3730c67db1a70e8c33812af1f21d8  libvtv/ChangeLog
  244b517457d96ecc5b87cbc18e8047ed  libvtv/Makefile.am
  8642f78885bb2ab0bd770e01f4b876e7  libvtv/Makefile.in
  4ce86f8604e6c86211a4cb2025ffc53e  libvtv/acinclude.m4
--- 91536,91542 ----
  d70b9cbb92ec922b879056258938b07d  libstdc++-v3/testsuite/util/thread/all.h
  b950d655469c477755252b1e18009596  libtool-ldflags
  7a2b83d2d625a4022b9213ceb75f5897  libtool.m4
! 076d0f1c161b8327529f9190d5f74841  libvtv/ChangeLog
  244b517457d96ecc5b87cbc18e8047ed  libvtv/Makefile.am
  8642f78885bb2ab0bd770e01f4b876e7  libvtv/Makefile.in
  4ce86f8604e6c86211a4cb2025ffc53e  libvtv/acinclude.m4
*************** b667f264afd4d34b959414ca812fb36f  libvtv
*** 91196,91215 ****
  5ddbd6d7662cb8cab972934da6561160  libvtv/vtv_utils.h
  247597a3fcc5b5aa8bd923351c59d853  ltgcc.m4
  4e65f2f6a05f5eca82ba79c6363aa3db  ltmain.sh
! 1824b831aef7c55393720b70eb173694  lto-plugin/ChangeLog
  ac3e1f5348d7a62eef1fcd69e1fe9bff  lto-plugin/Makefile.am
  1c20eeba73adc0b0ac37cdb759265758  lto-plugin/Makefile.in
  e0b6c77fa2326a08aa2d7a69e87e0f8c  lto-plugin/aclocal.m4
  e8d8e3dc8d2e134b03f22c7c567d030c  lto-plugin/config.h.in
  7983d6efb28540d7b6e363fabb7cf983  lto-plugin/configure
  96f8a1797122b5436e2941a2a99b7893  lto-plugin/configure.ac
! 3a486d26e24af8d0aedc60d6eebf4d79  lto-plugin/lto-plugin.c
  139179f8500d6f092a4f53d8f4da7f5c  lto-plugin/lto-symtab.c
  dee72a6a60e99528b0d17bf3ff9a1e15  ltoptions.m4
  bc2f6032c98896249eadb56177c7d357  ltsugar.m4
  c30cd33c496505f13d9fbdb6970c7c33  ltversion.m4
  293853a13b7e218e3a4342cf85fbbf25  lt~obsolete.m4
! 82bd5cd434e85836b9474a903df84513  maintainer-scripts/ChangeLog
  33c7bc2d2c55956dfac85a05d8a80eff  maintainer-scripts/README
  4edf444bac508f167955906d3753b32b  maintainer-scripts/crontab
  6facef54b1f26f6ee5d58aef536e7c82  maintainer-scripts/gcc_release
--- 91619,91638 ----
  5ddbd6d7662cb8cab972934da6561160  libvtv/vtv_utils.h
  247597a3fcc5b5aa8bd923351c59d853  ltgcc.m4
  4e65f2f6a05f5eca82ba79c6363aa3db  ltmain.sh
! 8997d9fe3a821f4d396a6ec879df283e  lto-plugin/ChangeLog
  ac3e1f5348d7a62eef1fcd69e1fe9bff  lto-plugin/Makefile.am
  1c20eeba73adc0b0ac37cdb759265758  lto-plugin/Makefile.in
  e0b6c77fa2326a08aa2d7a69e87e0f8c  lto-plugin/aclocal.m4
  e8d8e3dc8d2e134b03f22c7c567d030c  lto-plugin/config.h.in
  7983d6efb28540d7b6e363fabb7cf983  lto-plugin/configure
  96f8a1797122b5436e2941a2a99b7893  lto-plugin/configure.ac
! 41556fdf74abebe78ebc2d5db5c3893e  lto-plugin/lto-plugin.c
  139179f8500d6f092a4f53d8f4da7f5c  lto-plugin/lto-symtab.c
  dee72a6a60e99528b0d17bf3ff9a1e15  ltoptions.m4
  bc2f6032c98896249eadb56177c7d357  ltsugar.m4
  c30cd33c496505f13d9fbdb6970c7c33  ltversion.m4
  293853a13b7e218e3a4342cf85fbbf25  lt~obsolete.m4
! b9609257867558c8ad3adc294410fa61  maintainer-scripts/ChangeLog
  33c7bc2d2c55956dfac85a05d8a80eff  maintainer-scripts/README
  4edf444bac508f167955906d3753b32b  maintainer-scripts/crontab
  6facef54b1f26f6ee5d58aef536e7c82  maintainer-scripts/gcc_release
*************** fbe2467afef81c41c166173adeb0ee20  mkdep
*** 91225,91231 ****
  cf2baa0854f564a7785307e79f155efc  symlink-tree
  cb06c1be6a41d68b0a65e0c1a91752bc  ylwrap
  ed77bd1cb8611c7e07d54332abbbb44a  zlib/CMakeLists.txt
! 3770fb0fc6784242d2583efdba69ba1d  zlib/ChangeLog
  dabec672c0eb67568e57ee1cb8d7ec2a  zlib/ChangeLog.gcj
  0e9a37be8e3b85cc0ccf60504064c297  zlib/ChangeLog.jit
  b7a1991f01daea3efe108a215c5514a5  zlib/FAQ
--- 91648,91654 ----
  cf2baa0854f564a7785307e79f155efc  symlink-tree
  cb06c1be6a41d68b0a65e0c1a91752bc  ylwrap
  ed77bd1cb8611c7e07d54332abbbb44a  zlib/CMakeLists.txt
! a07f39f5e82b77e2198742f456a95b5b  zlib/ChangeLog
  dabec672c0eb67568e57ee1cb8d7ec2a  zlib/ChangeLog.gcj
  0e9a37be8e3b85cc0ccf60504064c297  zlib/ChangeLog.jit
  b7a1991f01daea3efe108a215c5514a5  zlib/FAQ
diff -Nrcpad gcc-5.4.0/NEWS gcc-5.5.0/NEWS
*** gcc-5.4.0/NEWS	Fri Jun  3 08:46:16 2016
--- gcc-5.5.0/NEWS	Tue Oct 10 08:20:39 2017
*************** see ONEWS.
*** 6,35 ****
  
  ======================================================================
  http://gcc.gnu.org/gcc-5/index.html
- 
                                GCC 5 Release Series
  
!    June 3, 2016
  
     The [1]GNU project and the GCC developers are pleased to announce the
!    release of GCC 5.4.
  
     This release is a bug-fix release, containing fixes for regressions in
!    GCC 5.3 relative to previous releases of GCC.
  
  Release History
  
     GCC 5.4
!           June 3, 2016 ([2]changes, [3]documentation)
  
     GCC 5.3
!           December 4, 2015 ([4]changes, [5]documentation)
  
     GCC 5.2
!           July 16, 2015 ([6]changes, [7]documentation)
  
     GCC 5.1
!           April 22, 2015 ([8]changes, [9]documentation)
  
  References and Acknowledgements
  
--- 6,37 ----
  
  ======================================================================
  http://gcc.gnu.org/gcc-5/index.html
                                GCC 5 Release Series
  
!    October 10, 2017
  
     The [1]GNU project and the GCC developers are pleased to announce the
!    release of GCC 5.5.
  
     This release is a bug-fix release, containing fixes for regressions in
!    GCC 5.4 relative to previous releases of GCC.
  
  Release History
  
+    GCC 5.5
+           October 10, 2017 ([2]changes, [3]documentation)
+ 
     GCC 5.4
!           June 3, 2016 ([4]changes, [5]documentation)
  
     GCC 5.3
!           December 4, 2015 ([6]changes, [7]documentation)
  
     GCC 5.2
!           July 16, 2015 ([8]changes, [9]documentation)
  
     GCC 5.1
!           April 22, 2015 ([10]changes, [11]documentation)
  
  References and Acknowledgements
  
*************** References and Acknowledgements
*** 37,97 ****
     supports several other languages aside from C, it now stands for the
     GNU Compiler Collection.
  
!    A list of [10]successful builds is updated as new information becomes
     available.
  
     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 [11]amazing group of volunteers is
     what makes GCC successful.
  
!    For additional information about GCC please refer to the [12]GCC
!    project web site or contact the [13]GCC development mailing list.
  
!    To obtain GCC please use [14]our mirror sites or [15]our SVN server.
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [16]GCC manuals. If that fails, the
!     [17]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 [18]gcc@gcc.gnu.org. All of [19]our lists have public
      archives.
  
!    Copyright (C) [20]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 [21]maintained by the GCC team. Last modified
!    2016-06-03[22].
  
  References
  
     1. http://www.gnu.org/
     2. http://gcc.gnu.org/gcc-5/changes.html
!    3. http://gcc.gnu.org/onlinedocs/5.4.0/
     4. http://gcc.gnu.org/gcc-5/changes.html
!    5. http://gcc.gnu.org/onlinedocs/5.3.0/
     6. http://gcc.gnu.org/gcc-5/changes.html
!    7. http://gcc.gnu.org/onlinedocs/5.2.0/
     8. http://gcc.gnu.org/gcc-5/changes.html
!    9. http://gcc.gnu.org/onlinedocs/5.1.0/
!   10. http://gcc.gnu.org/gcc-5/buildstat.html
!   11. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
!   12. http://gcc.gnu.org/index.html
!   13. mailto:gcc@gcc.gnu.org
!   14. http://gcc.gnu.org/mirrors.html
!   15. http://gcc.gnu.org/svn.html
!   16. https://gcc.gnu.org/onlinedocs/
!   17. mailto:gcc-help@gcc.gnu.org
!   18. mailto:gcc@gcc.gnu.org
!   19. https://gcc.gnu.org/lists.html
!   20. http://www.fsf.org/
!   21. https://gcc.gnu.org/about.html
!   22. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-5/changes.html
- 
                                GCC 5 Release Series
                          Changes, New Features, and Fixes
  
--- 39,100 ----
     supports several other languages aside from C, it now stands for the
     GNU Compiler Collection.
  
!    A list of [12]successful builds is updated as new information becomes
     available.
  
     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 [13]amazing group of volunteers is
     what makes GCC successful.
  
!    For additional information about GCC please refer to the [14]GCC
!    project web site or contact the [15]GCC development mailing list.
  
!    To obtain GCC please use [16]our mirror sites or [17]our SVN server.
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [18]GCC manuals. If that fails, the
!     [19]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 [20]gcc@gcc.gnu.org. All of [21]our lists have public
      archives.
  
!    Copyright (C) [22]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 [23]maintained by the GCC team. Last modified
!    2017-10-10[24].
  
  References
  
     1. http://www.gnu.org/
     2. http://gcc.gnu.org/gcc-5/changes.html
!    3. http://gcc.gnu.org/onlinedocs/5.5.0/
     4. http://gcc.gnu.org/gcc-5/changes.html
!    5. http://gcc.gnu.org/onlinedocs/5.4.0/
     6. http://gcc.gnu.org/gcc-5/changes.html
!    7. http://gcc.gnu.org/onlinedocs/5.3.0/
     8. http://gcc.gnu.org/gcc-5/changes.html
!    9. http://gcc.gnu.org/onlinedocs/5.2.0/
!   10. http://gcc.gnu.org/gcc-5/changes.html
!   11. http://gcc.gnu.org/onlinedocs/5.1.0/
!   12. http://gcc.gnu.org/gcc-5/buildstat.html
!   13. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
!   14. http://gcc.gnu.org/index.html
!   15. mailto:gcc@gcc.gnu.org
!   16. http://gcc.gnu.org/mirrors.html
!   17. http://gcc.gnu.org/svn.html
!   18. https://gcc.gnu.org/onlinedocs/
!   19. mailto:gcc-help@gcc.gnu.org
!   20. mailto:gcc@gcc.gnu.org
!   21. https://gcc.gnu.org/lists.html
!   22. http://www.fsf.org/
!   23. https://gcc.gnu.org/about.html
!   24. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-5/changes.html
                                GCC 5 Release Series
                          Changes, New Features, and Fixes
  
*************** void operator delete[] (void *, std::siz
*** 506,513 ****
  
       * Compatibility notice:
            + The version of the module files (.mod) has been incremented.
!           + For free-form source files, [22]-Werror=line-truncation is now
!             enabled by default; note that comments exceeding the line
              length are not diagnosed. (For fixed-form source code, the
              same warning is available but turned off by default, such that
              excess characters are ignored. -ffree-line-length-n and
--- 509,516 ----
  
       * Compatibility notice:
            + The version of the module files (.mod) has been incremented.
!           + For free-form source files [22]-Werror=line-truncation is now
!             enabled by default. Note that comments exceeding the line
              length are not diagnosed. (For fixed-form source code, the
              same warning is available but turned off by default, such that
              excess characters are ignored. -ffree-line-length-n and
*************** void operator delete[] (void *, std::siz
*** 516,522 ****
            + The -Wtabs option is now more sensible: with -Wtabs the
              compiler warns if it encounters tabs and with -Wno-tabs this
              warning is turned off. Before, -Wno-tabs warned and -Wtabs
!             turned the warning off. As before, the warning is also enabled
              by -Wall, -pedantic and the f95, f2003, f2008 and f2008ts
              options of -std=.
       * Incomplete support for colorizing diagnostics emitted by gfortran
--- 519,525 ----
            + The -Wtabs option is now more sensible: with -Wtabs the
              compiler warns if it encounters tabs and with -Wno-tabs this
              warning is turned off. Before, -Wno-tabs warned and -Wtabs
!             disabled the warning. As before, this warning is also enabled
              by -Wall, -pedantic and the f95, f2003, f2008 and f2008ts
              options of -std=.
       * Incomplete support for colorizing diagnostics emitted by gfortran
*************** New Targets and Target Specific Improvem
*** 706,712 ****
  
    IA-32/x86-64
  
!      * New ISA extensions support [40]AVX-512{BW,DQ,VL,IFMA,VBMI} of
         Intel's CPU codenamed Skylake Server was added to GCC. That
         includes inline assembly support, new intrinsics, and basic
         autovectorization. These new AVX-512 extensions are available via
--- 709,715 ----
  
    IA-32/x86-64
  
!      * New [40]ISA extensions support AVX-512{BW,DQ,VL,IFMA,VBMI} of
         Intel's CPU codenamed Skylake Server was added to GCC. That
         includes inline assembly support, new intrinsics, and basic
         autovectorization. These new AVX-512 extensions are available via
*************** New Targets and Target Specific Improvem
*** 715,721 ****
         Dword and Qword instructions: -mavx512dq, AVX-512 FMA-52
         instructions: -mavx512ifma and for AVX-512 Vector Bit Manipulation
         Instructions: -mavx512vbmi.
!      * New ISA extensions support [41]Intel MPX was added to GCC. This new
         extension is available via the -mmpx compiler switch. Intel MPX is
         a set of processor features which, with compiler, run-time library
         and OS support, brings increased robustness to software by run-time
--- 718,724 ----
         Dword and Qword instructions: -mavx512dq, AVX-512 FMA-52
         instructions: -mavx512ifma and for AVX-512 Vector Bit Manipulation
         Instructions: -mavx512vbmi.
!      * New ISA extensions support Intel MPX was added to GCC. This new
         extension is available via the -mmpx compiler switch. Intel MPX is
         a set of processor features which, with compiler, run-time library
         and OS support, brings increased robustness to software by run-time
*************** New Targets and Target Specific Improvem
*** 845,850 ****
--- 848,859 ----
  
  Operating Systems
  
+   AIX
+ 
+      * GCC now supports stabs debugging continuation lines to allow long
+        stabs debug information without overflow that generates AIX linker
+        errors.
+ 
    DragonFly BSD
  
       * GCC now supports the DragonFly BSD operating system.
*************** Other significant improvements
*** 869,877 ****
         automatically generates a developer-friendly reproducer whenever an
         internal compiler error is encountered.
  
! GCC 5.2
  
!    This is the [42]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 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).
--- 878,886 ----
         automatically generates a developer-friendly reproducer whenever an
         internal compiler error is encountered.
  
!                                     GCC 5.2
  
!    This is the [41]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 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).
*************** Target Specific Changes
*** 910,918 ****
         make use of these builtins the vecintrin.h header file needs to be
         included.
  
! GCC 5.3
  
!    This is the [43]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 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).
--- 919,927 ----
         make use of these builtins the vecintrin.h header file needs to be
         included.
  
!                                     GCC 5.3
  
!    This is the [42]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 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).
*************** Target Specific Changes
*** 932,951 ****
         the GO runtime environment. GCC 5.3 has proven to be able to
         compile larger GO applications on IBM z Systems.
  
! GCC 5.4
  
!    This is the [44]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 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).
  
! (Pending) GCC 5.5
  
!    This is the [45]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 5.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 [46]GCC manuals. If that fails, the
--- 941,967 ----
         the GO runtime environment. GCC 5.3 has proven to be able to
         compile larger GO applications on IBM z Systems.
  
!                                     GCC 5.4
  
!    This is the [43]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 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).
  
!                                     GCC 5.5
  
!    This is the [44]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 5.5 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
+ Target Specific Changes
+ 
+   IA-32/x86-64
+ 
+      * Support for the [45]deprecated pcommit instruction has been
+        removed.
+ 
  
      For questions related to the use of GCC, please consult these web
      pages and the [46]GCC manuals. If that fails, the
*************** GCC 5.4
*** 959,974 ****
     provided this notice is preserved.
  
     These pages are [51]maintained by the GCC team. Last modified
!    2016-06-03[52].
  
  References
  
     1. http://gcc.gnu.org/gcc-5/changes.html#libstdcxx
     2. https://gcc.gnu.org/onlinedocs/gcc/Spec-Files.html
     3. https://savannah.nongnu.org/bugs/?44574
!    4. https://gcc.gnu.org/wiki/Intel%20MPX%20support%20in%20the%20GCC%20compiler
!    5. http://www.openmp.org/mp-documents/OpenMP4.0.0.pdf
!    6. http://openmp.org/mp-documents/OpenMP4.0.0.Examples.pdf
     7. https://gcc.gnu.org/wiki/OpenACC
     8. https://gcc.gnu.org/install/configure.html
     9. https://www.cilkplus.org/
--- 975,990 ----
     provided this notice is preserved.
  
     These pages are [51]maintained by the GCC team. Last modified
!    2017-10-10[52].
  
  References
  
     1. http://gcc.gnu.org/gcc-5/changes.html#libstdcxx
     2. https://gcc.gnu.org/onlinedocs/gcc/Spec-Files.html
     3. https://savannah.nongnu.org/bugs/?44574
!    4. https://gcc.gnu.org/wiki/Intel MPX support in the GCC compiler
!    5. http://www.openmp.org/wp-content/uploads/OpenMP4.0.0.pdf
!    6. http://www.openmp.org/wp-content/uploads/OpenMP4.0.0.Examples.pdf
     7. https://gcc.gnu.org/wiki/OpenACC
     8. https://gcc.gnu.org/install/configure.html
     9. https://www.cilkplus.org/
*************** References
*** 1002,1013 ****
    37. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/jit/intro/tutorial05.html
    38. https://gcc.gnu.org/onlinedocs/gcc/Spec-Files.html
    39. https://gcc.gnu.org/onlinedocs/gcc/Named-Address-Spaces.html
!   40. https://software.intel.com/sites/default/files/managed/0d/53/319433-023.pdf
!   41. https://software.intel.com/sites/default/files/managed/0d/53/319433-022.pdf
!   42. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=5.2
!   43. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=5.3
!   44. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=5.4
!   45. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=5.5
    46. https://gcc.gnu.org/onlinedocs/
    47. mailto:gcc-help@gcc.gnu.org
    48. mailto:gcc@gcc.gnu.org
--- 1018,1029 ----
    37. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/jit/intro/tutorial05.html
    38. https://gcc.gnu.org/onlinedocs/gcc/Spec-Files.html
    39. https://gcc.gnu.org/onlinedocs/gcc/Named-Address-Spaces.html
!   40. https://software.intel.com/sites/default/files/managed/39/c5/325462-sdm-vol-1-2abcd-3abcd.pdf
!   41. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=5.2
!   42. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=5.3
!   43. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=5.4
!   44. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=5.5
!   45. https://software.intel.com/en-us/blogs/2016/09/12/deprecate-pcommit-instruction
    46. https://gcc.gnu.org/onlinedocs/
    47. mailto:gcc-help@gcc.gnu.org
    48. mailto:gcc@gcc.gnu.org
*************** References
*** 1017,1046 ****
    52. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.9/index.html
- 
                               GCC 4.9 Release Series
  
!    June 26, 2015
  
     The [1]GNU project and the GCC developers are pleased to announce the
!    release of GCC 4.9.3.
  
     This release is a bug-fix release, containing fixes for regressions in
!    GCC 4.9.2 relative to previous releases of GCC.
  
  Release History
  
     GCC 4.9.3
!           June 26, 2015 ([2]changes, [3]documentation)
  
     GCC 4.9.2
!           October 30, 2014 ([4]changes, [5]documentation)
  
     GCC 4.9.1
!           July 16, 2014 ([6]changes, [7]documentation)
  
     GCC 4.9.0
!           April 22, 2014 ([8]changes, [9]documentation)
  
  References and Acknowledgements
  
--- 1033,1066 ----
    52. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.9/index.html
                               GCC 4.9 Release Series
  
!    Aug 3, 2016
  
     The [1]GNU project and the GCC developers are pleased to announce the
!    release of GCC 4.9.4.
  
     This release is a bug-fix release, containing fixes for regressions in
!    GCC 4.9.3 relative to previous releases of GCC.
! 
!    This release series is no longer maintained.
  
  Release History
  
+    GCC 4.9.4
+           Aug 3, 2016 ([2]changes, [3]documentation)
+ 
     GCC 4.9.3
!           June 26, 2015 ([4]changes, [5]documentation)
  
     GCC 4.9.2
!           October 30, 2014 ([6]changes, [7]documentation)
  
     GCC 4.9.1
!           July 16, 2014 ([8]changes, [9]documentation)
  
     GCC 4.9.0
!           April 22, 2014 ([10]changes, [11]documentation)
  
  References and Acknowledgements
  
*************** References and Acknowledgements
*** 1048,1108 ****
     supports several other languages aside from C, it now stands for the
     GNU Compiler Collection.
  
!    A list of [10]successful builds is updated as new information becomes
     available.
  
     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 [11]amazing group of volunteers is
     what makes GCC successful.
  
!    For additional information about GCC please refer to the [12]GCC
!    project web site or contact the [13]GCC development mailing list.
  
!    To obtain GCC please use [14]our mirror sites or [15]our SVN server.
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [16]GCC manuals. If that fails, the
!     [17]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 [18]gcc@gcc.gnu.org. All of [19]our lists have public
      archives.
  
!    Copyright (C) [20]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 [21]maintained by the GCC team. Last modified
!    2016-01-30[22].
  
  References
  
     1. http://www.gnu.org/
     2. http://gcc.gnu.org/gcc-4.9/changes.html
!    3. http://gcc.gnu.org/onlinedocs/4.9.3/
     4. http://gcc.gnu.org/gcc-4.9/changes.html
!    5. http://gcc.gnu.org/onlinedocs/4.9.2/
     6. http://gcc.gnu.org/gcc-4.9/changes.html
!    7. http://gcc.gnu.org/onlinedocs/4.9.1/
     8. http://gcc.gnu.org/gcc-4.9/changes.html
!    9. https://gcc.gnu.org/onlinedocs/4.9.0/
!   10. http://gcc.gnu.org/gcc-4.9/buildstat.html
!   11. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
!   12. http://gcc.gnu.org/index.html
!   13. mailto:gcc@gcc.gnu.org
!   14. http://gcc.gnu.org/mirrors.html
!   15. http://gcc.gnu.org/svn.html
!   16. https://gcc.gnu.org/onlinedocs/
!   17. mailto:gcc-help@gcc.gnu.org
!   18. mailto:gcc@gcc.gnu.org
!   19. https://gcc.gnu.org/lists.html
!   20. http://www.fsf.org/
!   21. https://gcc.gnu.org/about.html
!   22. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.9/changes.html
- 
                               GCC 4.9 Release Series
                          Changes, New Features, and Fixes
  
--- 1068,1129 ----
     supports several other languages aside from C, it now stands for the
     GNU Compiler Collection.
  
!    A list of [12]successful builds is updated as new information becomes
     available.
  
     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 [13]amazing group of volunteers is
     what makes GCC successful.
  
!    For additional information about GCC please refer to the [14]GCC
!    project web site or contact the [15]GCC development mailing list.
  
!    To obtain GCC please use [16]our mirror sites or [17]our SVN server.
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [18]GCC manuals. If that fails, the
!     [19]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 [20]gcc@gcc.gnu.org. All of [21]our lists have public
      archives.
  
!    Copyright (C) [22]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 [23]maintained by the GCC team. Last modified
!    2016-09-30[24].
  
  References
  
     1. http://www.gnu.org/
     2. http://gcc.gnu.org/gcc-4.9/changes.html
!    3. http://gcc.gnu.org/onlinedocs/4.9.4/
     4. http://gcc.gnu.org/gcc-4.9/changes.html
!    5. http://gcc.gnu.org/onlinedocs/4.9.3/
     6. http://gcc.gnu.org/gcc-4.9/changes.html
!    7. http://gcc.gnu.org/onlinedocs/4.9.2/
     8. http://gcc.gnu.org/gcc-4.9/changes.html
!    9. http://gcc.gnu.org/onlinedocs/4.9.1/
!   10. http://gcc.gnu.org/gcc-4.9/changes.html
!   11. https://gcc.gnu.org/onlinedocs/4.9.0/
!   12. http://gcc.gnu.org/gcc-4.9/buildstat.html
!   13. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
!   14. http://gcc.gnu.org/index.html
!   15. mailto:gcc@gcc.gnu.org
!   16. http://gcc.gnu.org/mirrors.html
!   17. http://gcc.gnu.org/svn.html
!   18. https://gcc.gnu.org/onlinedocs/
!   19. mailto:gcc-help@gcc.gnu.org
!   20. mailto:gcc@gcc.gnu.org
!   21. https://gcc.gnu.org/lists.html
!   22. http://www.fsf.org/
!   23. https://gcc.gnu.org/about.html
!   24. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.9/changes.html
                               GCC 4.9 Release Series
                          Changes, New Features, and Fixes
  
*************** New Languages and Language specific impr
*** 1216,1236 ****
         -fdiagnostics-color=never.
         Sample diagnostics output:
      $ g++ -fdiagnostics-color=always -S -Wall test.C
!     test.C: In function `int foo()':
      test.C:1:14: warning: no return statement in function returning non-void [-W
  return-type]
       int foo () { }
                    ^
      test.C:2:46: error: template instantiation depth exceeds maximum of 900 (use
!  -ftemplate-depth= to increase the maximum) instantiating `struct X<100>'
       template <int N> struct X { static const int value = X<N-1>::value; }; temp
  late struct X<1000>;
                                                    ^
!     test.C:2:46:   recursively required from `const int X<999>::value'
!     test.C:2:46:   required from `const int X<1000>::value'
      test.C:2:88:   required from here
  
!     test.C:2:46: error: incomplete type `X<100>' used in nested name specifier
  
       * With the new [7]#pragma GCC ivdep, the user can assert that there
         are no loop-carried dependencies which would prevent concurrent
--- 1237,1257 ----
         -fdiagnostics-color=never.
         Sample diagnostics output:
      $ g++ -fdiagnostics-color=always -S -Wall test.C
!     test.C: In function ‘int foo()’:
      test.C:1:14: warning: no return statement in function returning non-void [-W
  return-type]
       int foo () { }
                    ^
      test.C:2:46: error: template instantiation depth exceeds maximum of 900 (use
!  -ftemplate-depth= to increase the maximum) instantiating ‘struct X<100>’
       template <int N> struct X { static const int value = X<N-1>::value; }; temp
  late struct X<1000>;
                                                    ^
!     test.C:2:46:   recursively required from ‘const int X<999>::value’
!     test.C:2:46:   required from ‘const int X<1000>::value’
      test.C:2:88:   required from here
  
!     test.C:2:46: error: incomplete type ‘X<100>’ used in nested name specifier
  
       * With the new [7]#pragma GCC ivdep, the user can assert that there
         are no loop-carried dependencies which would prevent concurrent
*************** auto incr = [](auto x) { return x++; };
*** 1335,1345 ****
  // a functional object that will add two like-type objects
  auto add = [] <typename T> (T a, T b) { return a + b; };
  
!      * G++ supports unconstrained generic functions as specified by
!        S:4.1.2 and S:5.1.1 of [16]N3889: Concepts Lite Specification.
!        Briefly, auto may be used as a type-specifier in a parameter
!        declaration of any function declarator in order to introduce an
!        implicit function template parameter, akin to generic lambdas.
  
  // the following two function declarations are equivalent
  auto incr(auto x) { return x++; }
--- 1356,1366 ----
  // a functional object that will add two like-type objects
  auto add = [] <typename T> (T a, T b) { return a + b; };
  
!      * G++ supports unconstrained generic functions as specified by §4.1.2
!        and §5.1.1 of [16]N3889: Concepts Lite Specification. Briefly, auto
!        may be used as a type-specifier in a parameter declaration of any
!        function declarator in order to introduce an implicit function
!        template parameter, akin to generic lambdas.
  
  // the following two function declarations are equivalent
  auto incr(auto x) { return x++; }
*************** auto incr(T x) { return x++; }
*** 1429,1435 ****
         be used as argument to ISO_C_BINDING's C_LOC and as actual argument
         to another NO_ARG_CHECK dummy argument; also the other constraints
         of TYPE(*) apply. The dummy arguments should be declared as scalar
!        or assumed-size variable of type type(*) (recommended) - or of type
         integer, real, complex or logical. With NO_ARG_CHECK, a pointer to
         the data without further type or shape information is passed,
         similar to C's void*. Note that also TS 29113's
--- 1450,1456 ----
         be used as argument to ISO_C_BINDING's C_LOC and as actual argument
         to another NO_ARG_CHECK dummy argument; also the other constraints
         of TYPE(*) apply. The dummy arguments should be declared as scalar
!        or assumed-size variable of type type(*) (recommended) – or of type
         integer, real, complex or logical. With NO_ARG_CHECK, a pointer to
         the data without further type or shape information is passed,
         similar to C's void*. Note that also TS 29113's
*************** New Targets and Target Specific Improvem
*** 1540,1545 ****
--- 1561,1572 ----
       * A number of code generation improvements for Thumb2 to reduce code
         size when compiling for the M-profile processors.
  
+   AVR
+ 
+      * A new command-line option -mfract-convert-truncate has been added.
+        It allows compiler to use truncation instead of rounding towards
+        zero for fractional fixed-point types.
+ 
    IA-32/x86-64
  
       * -mfpmath=sse is now implied by -ffast-math on all targets where
*************** GCC 4.9.1
*** 1669,1691 ****
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
!    Version 4.0 of the [26]OpenMP specification is supported even in
!    Fortran, not just C and C++.
  
  GCC 4.9.2
  
!    This is the [27]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.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).
  
  GCC 4.9.3
  
!    This is the [28]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.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).
  
  
      For questions related to the use of GCC, please consult these web
      pages and the [29]GCC manuals. If that fails, the
--- 1696,1725 ----
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
!    Version 4.0 of the OpenMP specification is supported even in Fortran,
!    not just C and C++.
  
  GCC 4.9.2
  
!    This is the [26]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.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).
  
  GCC 4.9.3
  
!    This is the [27]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.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).
  
+ GCC 4.9.4
+ 
+    This is the [28]list of problem reports (PRs) from GCC's bug tracking
+    system that are known to be fixed in the 4.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).
+ 
  
      For questions related to the use of GCC, please consult these web
      pages and the [29]GCC manuals. If that fails, the
*************** GCC 4.9.3
*** 1699,1712 ****
     provided this notice is preserved.
  
     These pages are [34]maintained by the GCC team. Last modified
!    2016-01-30[35].
  
  References
  
     1. https://gcc.gnu.org/ml/gcc-patches/2013-05/msg00728.html
     2. https://gcc.gnu.org/PR60825
     3. https://gcc.gnu.org/gcc-4.9/porting_to.html
!    4. http://openmp.org/wp/openmp-specifications/
     5. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Optimize-Options.html#index-fsimd-cost-model-908
     6. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Language-Independent-Options.html#index-fdiagnostics-color-252
     7. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Loop-Specific-Pragmas.html
--- 1733,1746 ----
     provided this notice is preserved.
  
     These pages are [34]maintained by the GCC team. Last modified
!    2016-12-28[35].
  
  References
  
     1. https://gcc.gnu.org/ml/gcc-patches/2013-05/msg00728.html
     2. https://gcc.gnu.org/PR60825
     3. https://gcc.gnu.org/gcc-4.9/porting_to.html
!    4. http://www.openmp.org/specifications/
     5. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Optimize-Options.html#index-fsimd-cost-model-908
     6. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Language-Independent-Options.html#index-fdiagnostics-color-252
     7. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Loop-Specific-Pragmas.html
*************** References
*** 1728,1736 ****
    23. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gfortran/Debugging-Options.html
    24. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Function-Multiversioning.html
    25. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.9.1
!   26. http://openmp.org/wp/openmp-specifications/
!   27. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.9.2
!   28. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.9.3
    29. https://gcc.gnu.org/onlinedocs/
    30. mailto:gcc-help@gcc.gnu.org
    31. mailto:gcc@gcc.gnu.org
--- 1762,1770 ----
    23. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gfortran/Debugging-Options.html
    24. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Function-Multiversioning.html
    25. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.9.1
!   26. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.9.2
!   27. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.9.3
!   28. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.9.4
    29. https://gcc.gnu.org/onlinedocs/
    30. mailto:gcc-help@gcc.gnu.org
    31. mailto:gcc@gcc.gnu.org
*************** References
*** 1740,1746 ****
    35. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.8/index.html
- 
                               GCC 4.8 Release Series
  
     June 23, 2015
--- 1774,1779 ----
*************** http://gcc.gnu.org/gcc-4.8/index.html
*** 1751,1756 ****
--- 1784,1791 ----
     This release is a bug-fix release, containing fixes for regressions in
     GCC 4.8.4 relative to previous releases of GCC.
  
+    This release series is no longer maintained.
+ 
  Release History
  
     GCC 4.8.5
*************** References and Acknowledgements
*** 1803,1809 ****
     provided this notice is preserved.
  
     These pages are [25]maintained by the GCC team. Last modified
!    2016-01-30[26].
  
  References
  
--- 1838,1844 ----
     provided this notice is preserved.
  
     These pages are [25]maintained by the GCC team. Last modified
!    2016-09-30[26].
  
  References
  
*************** References
*** 1835,1841 ****
    26. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.8/changes.html
- 
                               GCC 4.8 Release Series
                          Changes, New Features, and Fixes
  
--- 1870,1875 ----
*************** New Languages and Language specific impr
*** 1964,1971 ****
         diagnostics. Combined with the caret information, an example
         diagnostic showing these two features is:
  
! t.c:1:94: error: invalid operands to binary < (have `struct mystruct' and `float
! ')
   #define MYMAX(A,B)    __extension__ ({ __typeof__(A) __a = (A); __typeof__(B) _
  _b = (B); __a < __b ? __b : __a; })
  
--- 1998,2005 ----
         diagnostics. Combined with the caret information, an example
         diagnostic showing these two features is:
  
! t.c:1:94: error: invalid operands to binary < (have ‘struct mystruct’ and ‘float
! ’)
   #define MYMAX(A,B)    __extension__ ({ __typeof__(A) __a = (A); __typeof__(B) _
  _b = (B); __a < __b ? __b : __a; })
  
*************** int i = A().f();  // error, f() requires
*** 2089,2096 ****
              older versions except as noted below.
            + ABI: Some internal names (used in the assembler/object file)
              have changed for symbols declared in the specification part of
!             a module. If an affected module - or a file using it via use
!             association - is recompiled, the module and all files which
              directly use such symbols have to be recompiled as well. This
              change only affects the following kind of module symbols:
                 o Procedure pointers. Note: C-interoperable function
--- 2123,2130 ----
              older versions except as noted below.
            + ABI: Some internal names (used in the assembler/object file)
              have changed for symbols declared in the specification part of
!             a module. If an affected module – or a file using it via use
!             association – is recompiled, the module and all files which
              directly use such symbols have to be recompiled as well. This
              change only affects the following kind of module symbols:
                 o Procedure pointers. Note: C-interoperable function
*************** int i = A().f();  // error, f() requires
*** 2117,2123 ****
       * The [21]-Wcompare-reals command-line option has been added. When
         this is set, warnings are issued when comparing REAL or COMPLEX
         types for equality and inequality; consider replacing a == b by
!        abs(a -b) < eps with a suitable eps. -Wcompare-reals is enabled by
         -Wextra.
       * The [22]-Wtarget-lifetime command-line option has been added
         (enabled with -Wall), which warns if the pointer in a pointer
--- 2151,2157 ----
       * The [21]-Wcompare-reals command-line option has been added. When
         this is set, warnings are issued when comparing REAL or COMPLEX
         types for equality and inequality; consider replacing a == b by
!        abs(a−b) < eps with a suitable eps. -Wcompare-reals is enabled by
         -Wextra.
       * The [22]-Wtarget-lifetime command-line option has been added
         (enabled with -Wall), which warns if the pointer in a pointer
*************** int i = A().f();  // error, f() requires
*** 2129,2135 ****
         4.0e0).
         (For Fortran source code, consider replacing the "q" in
         floating-point literals by a kind parameter (e.g. 4.0e0_qp with a
!        suitable qp). Note that - in Fortran source code - replacing "q" by
         a simple "e" is not equivalent.)
       * The GFORTRAN_TMPDIR environment variable for specifying a
         non-default directory for files opened with STATUS="SCRATCH", is
--- 2163,2169 ----
         4.0e0).
         (For Fortran source code, consider replacing the "q" in
         floating-point literals by a kind parameter (e.g. 4.0e0_qp with a
!        suitable qp). Note that – in Fortran source code – replacing "q" by
         a simple "e" is not equivalent.)
       * The GFORTRAN_TMPDIR environment variable for specifying a
         non-default directory for files opened with STATUS="SCRATCH", is
*************** New Targets and Target Specific Improvem
*** 2224,2231 ****
      }
         The inline assembler in this example will generate code like
      mov r24, 8+7
!        provided c is allocated to R24 and val is allocated to R8...R15.
!        This works because the GNU assembler accepts plain register numbers
         without register prefix.
       * Static initializers with 3-byte symbols are supported now:
      extern const __memx char foo;
--- 2258,2265 ----
      }
         The inline assembler in this example will generate code like
      mov r24, 8+7
!        provided c is allocated to R24 and val is allocated to R8…R15. This
!        works because the GNU assembler accepts plain register numbers
         without register prefix.
       * Static initializers with 3-byte symbols are supported now:
      extern const __memx char foo;
*************** New Targets and Target Specific Improvem
*** 2476,2481 ****
--- 2510,2520 ----
  
  Operating Systems
  
+   OpenBSD
+ 
+      * Support for OpenBSD/amd64 (x86_64-*-openbsd*) has been added and
+        support for OpenBSD/i386 (i386-*-openbsd*) has been rejuvenated.
+ 
    Windows (Cygwin)
  
       * Executables are now linked against shared libgcc by default. The
*************** GCC 4.8.5
*** 2554,2560 ****
     provided this notice is preserved.
  
     These pages are [43]maintained by the GCC team. Last modified
!    2016-05-28[44].
  
  References
  
--- 2593,2599 ----
     provided this notice is preserved.
  
     These pages are [43]maintained by the GCC team. Last modified
!    2017-02-27[44].
  
  References
  
*************** References
*** 2583,2589 ****
    23. https://gcc.gnu.org/onlinedocs/gfortran/TMPDIR.html
    24. https://gcc.gnu.org/wiki/Fortran2003Status
    25. https://gcc.gnu.org/wiki/TS29113Status
!   26. https://gcc.gnu.org/viewcvs/trunk/libgfortran/libgfortran.h?content-type=text%2Fplain&view=co
    27. http://chasm-interop.sourceforge.net/
    28. https://gcc.gnu.org/wiki/avr-gcc#Fixed-Point_Support
    29. https://gcc.gnu.org/onlinedocs/gcc/Fixed-Point.html
--- 2622,2628 ----
    23. https://gcc.gnu.org/onlinedocs/gfortran/TMPDIR.html
    24. https://gcc.gnu.org/wiki/Fortran2003Status
    25. https://gcc.gnu.org/wiki/TS29113Status
!   26. https://gcc.gnu.org/viewcvs/trunk/libgfortran/libgfortran.h?content-type=text/plain&view=co
    27. http://chasm-interop.sourceforge.net/
    28. https://gcc.gnu.org/wiki/avr-gcc#Fixed-Point_Support
    29. https://gcc.gnu.org/onlinedocs/gcc/Fixed-Point.html
*************** References
*** 2604,2610 ****
    44. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.7/index.html
- 
                               GCC 4.7 Release Series
  
     June 12, 2014
--- 2643,2648 ----
*************** http://gcc.gnu.org/gcc-4.7/index.html
*** 2615,2620 ****
--- 2653,2660 ----
     This release is a bug-fix release, containing fixes for regressions in
     GCC 4.7.3 relative to previous releases of GCC.
  
+    This release series is no longer maintained.
+ 
  Release History
  
     GCC 4.7.4
*************** References and Acknowledgements
*** 2664,2670 ****
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2016-01-30[24].
  
  References
  
--- 2704,2710 ----
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2016-09-30[24].
  
  References
  
*************** References
*** 2694,2700 ****
    24. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.7/changes.html
- 
                               GCC 4.7 Release Series
                          Changes, New Features, and Fixes
  
--- 2734,2739 ----
*************** long double pi = 180.0_degrees;
*** 3025,3031 ****
  template <class T> using Ptr = T*;
  Ptr<int> ip;  // decltype(ip) is int*
  
!      * Thanks to Ville Voutilainen and Pedro Lamarao, G++ now implements
         [13]C++11 delegating constructors.
  
  struct A {
--- 3064,3070 ----
  template <class T> using Ptr = T*;
  Ptr<int> ip;  // decltype(ip) is int*
  
!      * Thanks to Ville Voutilainen and Pedro Lamarão, G++ now implements
         [13]C++11 delegating constructors.
  
  struct A {
*************** New Targets and Target Specific Improvem
*** 3219,3225 ****
  
       * GCC now supports the XMEGA architecture. This requires GNU binutils
         2.22 or later.
!      * Support for the [36]named address spaces __flash, __flash1, ...,
         __flash5 and __memx has been added. These address spaces locate
         read-only data in flash memory and allow reading from flash memory
         by means of ordinary C code, i.e. without the need of (inline)
--- 3258,3264 ----
  
       * GCC now supports the XMEGA architecture. This requires GNU binutils
         2.22 or later.
!      * Support for the [36]named address spaces __flash, __flash1, …,
         __flash5 and __memx has been added. These address spaces locate
         read-only data in flash memory and allow reading from flash memory
         by means of ordinary C code, i.e. without the need of (inline)
*************** int add_values (const __flash int *p, in
*** 3245,3252 ****
       * New command-line options -maccumulate-args, -mbranch-cost=cost and
         -mstrict-X were added to allow better fine-tuning of code
         optimization.
!      * The command option -fdata-sections now also takes affect on the
!        section names of variables with the progmem attribute.
       * A new inline assembler print modifier %i to print a RAM address as
         I/O address has been added:
  
--- 3284,3291 ----
       * New command-line options -maccumulate-args, -mbranch-cost=cost and
         -mstrict-X were added to allow better fine-tuning of code
         optimization.
!      * The command-line option -fdata-sections now also takes affect on
!        the section names of variables with the progmem attribute.
       * A new inline assembler print modifier %i to print a RAM address as
         I/O address has been added:
  
*************** void set_portb (uint8_t value)
*** 3263,3269 ****
         suitable to be used as operand in an I/O command. The address must
         be a constant integer known at compile time.
       * The inline assembler constraint "R" to represent integers in the
!        range -6 ... 5 has been removed without replacement.
       * Many optimizations to:
            + 64-bit integer arithmetic
            + Widening multiplication
--- 3302,3308 ----
         suitable to be used as operand in an I/O command. The address must
         be a constant integer known at compile time.
       * The inline assembler constraint "R" to represent integers in the
!        range −6 … 5 has been removed without replacement.
       * Many optimizations to:
            + 64-bit integer arithmetic
            + Widening multiplication
*************** void set_portb (uint8_t value)
*** 3275,3281 ****
            + If-else decision trees generated by switch instructions
            + Merging of data located in flash memory
            + New libgcc variants for devices with 8-bit wide stack pointer
!           + ...
       * Better documentation:
            + Handling of EIND and indirect jumps on devices with more than
              128 KiB of program memory.
--- 3314,3320 ----
            + If-else decision trees generated by switch instructions
            + Merging of data located in flash memory
            + New libgcc variants for devices with 8-bit wide stack pointer
!           + …
       * Better documentation:
            + Handling of EIND and indirect jumps on devices with more than
              128 KiB of program memory.
*************** GCC 4.7.4
*** 3486,3492 ****
     provided this notice is preserved.
  
     These pages are [55]maintained by the GCC team. Last modified
!    2016-02-29[56].
  
  References
  
--- 3525,3531 ----
     provided this notice is preserved.
  
     These pages are [55]maintained by the GCC team. Last modified
!    2017-03-03[56].
  
  References
  
*************** References
*** 3494,3500 ****
     2. http://savannah.nongnu.org/bugs/?35407
     3. https://gcc.gnu.org/PR18145
     4. https://gcc.gnu.org/gcc-4.7/porting_to.html
!    5. http://openmp.org/wp/openmp-specifications/
     6. https://gcc.gnu.org/wiki/TransactionalMemory
     7. https://gcc.gnu.org/wiki/Atomic/GCCMM
     8. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html
--- 3533,3539 ----
     2. http://savannah.nongnu.org/bugs/?35407
     3. https://gcc.gnu.org/PR18145
     4. https://gcc.gnu.org/gcc-4.7/porting_to.html
!    5. http://www.openmp.org/specifications/
     6. https://gcc.gnu.org/wiki/TransactionalMemory
     7. https://gcc.gnu.org/wiki/Atomic/GCCMM
     8. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html
*************** References
*** 3515,3521 ****
    23. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfaggressive-function-elimination_007d-270
    24. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWreal-q-constant_007d-149
    25. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/SELECTED_005fREAL_005fKIND.html
!   26. https://msdn.microsoft.com/en-us/library/bb787181%28v=vs.85%29.aspx
    27. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Debugging-Options.html#index-g_t_0040code_007bfno-backtrace_007d-183
    28. https://gcc.gnu.org/wiki/Fortran2003Status
    29. https://gcc.gnu.org/wiki/OOP
--- 3554,3560 ----
    23. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfaggressive-function-elimination_007d-270
    24. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWreal-q-constant_007d-149
    25. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/SELECTED_005fREAL_005fKIND.html
!   26. https://msdn.microsoft.com/en-us/library/bb787181(v=vs.85).aspx
    27. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Debugging-Options.html#index-g_t_0040code_007bfno-backtrace_007d-183
    28. https://gcc.gnu.org/wiki/Fortran2003Status
    29. https://gcc.gnu.org/wiki/OOP
*************** References
*** 3528,3538 ****
    36. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Named-Address-Spaces.html
    37. http://nongnu.org/avr-libc/
    38. https://gcc.gnu.org/PR54461
!   39. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/AVR-Built%5f002din-Functions.html
    40. https://sites.google.com/site/x32abi/
    41. http://www.dwarfstd.org/ShowIssue.php?issue=100909.1
    42. http://www.dwarfstd.org/ShowIssue.php?issue=100909.2
!   43. http://www.dwarfstd.org/doc/040408.1.html
    44. http://www.dwarfstd.org/ShowIssue.php?issue=110722.1
    45. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.1
    46. https://golang.org/doc/go1
--- 3567,3577 ----
    36. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Named-Address-Spaces.html
    37. http://nongnu.org/avr-libc/
    38. https://gcc.gnu.org/PR54461
!   39. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/AVR-Built_002din-Functions.html
    40. https://sites.google.com/site/x32abi/
    41. http://www.dwarfstd.org/ShowIssue.php?issue=100909.1
    42. http://www.dwarfstd.org/ShowIssue.php?issue=100909.2
!   43. http://www.dwarfstd.org/ShowIssue.php?issue=140425.1
    44. http://www.dwarfstd.org/ShowIssue.php?issue=110722.1
    45. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.1
    46. https://golang.org/doc/go1
*************** References
*** 3548,3554 ****
    56. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.6/index.html
- 
                               GCC 4.6 Release Series
  
     April 12, 2013
--- 3587,3592 ----
*************** http://gcc.gnu.org/gcc-4.6/index.html
*** 3559,3564 ****
--- 3597,3604 ----
     This release is a bug-fix release, containing fixes for regressions in
     GCC 4.6.3 relative to previous releases of GCC.
  
+    This release series is no longer maintained.
+ 
  Release History
  
     GCC 4.6.4
*************** References and Acknowledgements
*** 3608,3614 ****
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2016-01-30[24].
  
  References
  
--- 3648,3654 ----
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2016-09-30[24].
  
  References
  
*************** References
*** 3638,3644 ****
    24. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.6/changes.html
- 
                               GCC 4.6 Release Series
                          Changes, New Features, and Fixes
  
--- 3678,3683 ----
*************** General Optimizer Improvements
*** 3755,3761 ****
                   the Gold linker on ELF targets. Plugin support of the
                   Apple linker on Darwin is not compatible with GCC. The
                   linker plugin can also be controlled by the
!                  -fuse-linker-plugin command line option.
                 o Resolution information from the linker plugin is used to
                   drive whole program assumptions. Use of the linker plugin
                   results in more aggressive optimization on binaries and
--- 3794,3800 ----
                   the Gold linker on ELF targets. Plugin support of the
                   Apple linker on Darwin is not compatible with GCC. The
                   linker plugin can also be controlled by the
!                  -fuse-linker-plugin command-line option.
                 o Resolution information from the linker plugin is used to
                   drive whole program assumptions. Use of the linker plugin
                   results in more aggressive optimization on binaries and
*************** New Languages and Language specific impr
*** 3882,3888 ****
  #pragma GCC diagnostic pop
    foo(c);                       /* error is given for this one */
  #pragma GCC diagnostic pop
!   foo(d);                       /* depends on command line options */
  
       * The -fmax-errors=N option is now supported. Using this option
         causes the compiler to exit after N errors have been issued.
--- 3921,3927 ----
  #pragma GCC diagnostic pop
    foo(c);                       /* error is given for this one */
  #pragma GCC diagnostic pop
!   foo(d);                       /* depends on command-line options */
  
       * The -fmax-errors=N option is now supported. Using this option
         causes the compiler to exit after N errors have been issued.
*************** New Languages and Language specific impr
*** 3978,3984 ****
  
       * [12]Improved experimental support for the upcoming ISO C++
         standard, C++0x, including using constexpr and nullptr.
!      * Performance improvements to the [13]Debug Mode, thanks to Franc,ois
         Dumont.
       * Atomic operations used for reference-counting are annotated so that
         they can be understood by race detectors such as Helgrind, see
--- 4017,4023 ----
  
       * [12]Improved experimental support for the upcoming ISO C++
         standard, C++0x, including using constexpr and nullptr.
!      * Performance improvements to the [13]Debug Mode, thanks to François
         Dumont.
       * Atomic operations used for reference-counting are annotated so that
         they can be understood by race detectors such as Helgrind, see
*************** New Languages and Language specific impr
*** 4033,4039 ****
              allocated (if unallocated) or reallocated (if the shape or
              type parameter is different). To avoid the small performance
              penalty, you can use a(:) = ... instead of a = ... for arrays
!             and character strings - or disable the feature using -std=f95
              or -fno-realloc-lhs.
            + Deferred type parameter: For scalar allocatable and pointer
              variables the character length can be deferred.
--- 4072,4078 ----
              allocated (if unallocated) or reallocated (if the shape or
              type parameter is different). To avoid the small performance
              penalty, you can use a(:) = ... instead of a = ... for arrays
!             and character strings – or disable the feature using -std=f95
              or -fno-realloc-lhs.
            + Deferred type parameter: For scalar allocatable and pointer
              variables the character length can be deferred.
*************** New Languages and Language specific impr
*** 4088,4094 ****
              be declared in a single PROCEDURE statement; implied-shape
              arrays are supported for named constants (PARAMETER). The
              transformational, three argument versions of BESSEL_JN and
!             BESSEL_YN were added - the elemental, two-argument version had
              been added in GCC 4.4; note that the transformational
              functions use a recurrence algorithm.
  
--- 4127,4133 ----
              be declared in a single PROCEDURE statement; implied-shape
              arrays are supported for named constants (PARAMETER). The
              transformational, three argument versions of BESSEL_JN and
!             BESSEL_YN were added – the elemental, two-argument version had
              been added in GCC 4.4; note that the transformational
              functions use a recurrence algorithm.
  
*************** New Targets and Target Specific Improvem
*** 4368,4374 ****
         callee for functions taking parameters with sub-word size in 32-bit
         mode, since this is redundant with the specification of the ABI.
         GCC has never done so in 64-bit mode since this is also redundant.
!      * The command line option -mfix-at697f has been added to enable the
         documented workaround for the single erratum of the Atmel AT697F
         processor.
  
--- 4407,4413 ----
         callee for functions taking parameters with sub-word size in 32-bit
         mode, since this is redundant with the specification of the ABI.
         GCC has never done so in 64-bit mode since this is also redundant.
!      * The command-line option -mfix-at697f has been added to enable the
         documented workaround for the single erratum of the Atmel AT697F
         processor.
  
*************** GCC 4.6.4
*** 4533,4539 ****
     provided this notice is preserved.
  
     These pages are [29]maintained by the GCC team. Last modified
!    2016-05-28[30].
  
  References
  
--- 4572,4578 ----
     provided this notice is preserved.
  
     These pages are [29]maintained by the GCC team. Last modified
!    2016-11-27[30].
  
  References
  
*************** References
*** 4569,4575 ****
    30. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.5/index.html
- 
                               GCC 4.5 Release Series
  
     Jul 2, 2012
--- 4608,4613 ----
*************** http://gcc.gnu.org/gcc-4.5/index.html
*** 4580,4585 ****
--- 4618,4625 ----
     This release is a bug-fix release, containing fixes for regressions in
     GCC 4.5.3 relative to previous releases of GCC.
  
+    This release series is no longer maintained.
+ 
  Release History
  
     GCC 4.5.4
*************** References and Acknowledgements
*** 4629,4635 ****
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2016-01-30[19].
  
  References
  
--- 4669,4675 ----
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2016-09-30[19].
  
  References
  
*************** References
*** 4654,4660 ****
    19. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.5/changes.html
- 
                               GCC 4.5 Release Series
                          Changes, New Features, and Fixes
  
--- 4694,4699 ----
*************** Caveats
*** 4696,4702 ****
         epilogue unwind info is emitted unconditionally whenever unwind
         info is emitted.
       * On x86 targets, code containing floating-point calculations may run
!        significantly slower when compiled with GCC 4.5 in strict C99
         conformance mode than they did with earlier GCC versions. This is
         due to stricter standard conformance of the compiler and can be
         avoided by using the option -fexcess-precision=fast; also see
--- 4735,4741 ----
         epilogue unwind info is emitted unconditionally whenever unwind
         info is emitted.
       * On x86 targets, code containing floating-point calculations may run
!        significantly more slowly when compiled with GCC 4.5 in strict C99
         conformance mode than they did with earlier GCC versions. This is
         due to stricter standard conformance of the compiler and can be
         avoided by using the option -fexcess-precision=fast; also see
*************** New Languages and Language specific impr
*** 4891,4897 ****
         defined ([13]DR 757).
       * Labels may now have attributes, as has been permitted for a while
         in C. This is only permitted when the label definition and the
!        attribute specifier is followed by a semicolon--i.e., the label
         applies to an empty statement. The only useful attribute for a
         label is unused.
       * G++ now implements [14]DR 176. Previously G++ did not support using
--- 4930,4936 ----
         defined ([13]DR 757).
       * Labels may now have attributes, as has been permitted for a while
         in C. This is only permitted when the label definition and the
!        attribute specifier is followed by a semicolon—i.e., the label
         applies to an empty statement. The only useful attribute for a
         label is unused.
       * G++ now implements [14]DR 176. Previously G++ did not support using
*************** vector-size: improvement = 3: call stack
*** 4973,4979 ****
  
    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
--- 5012,5018 ----
  
    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
*************** GCC 4.5.4
*** 5302,5308 ****
     provided this notice is preserved.
  
     These pages are [33]maintained by the GCC team. Last modified
!    2016-05-28[34].
  
  References
  
--- 5341,5347 ----
     provided this notice is preserved.
  
     These pages are [33]maintained by the GCC team. Last modified
!    2017-02-28[34].
  
  References
  
*************** References
*** 5342,5348 ****
    34. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.4/index.html
- 
                               GCC 4.4 Release Series
  
     March 13, 2012
--- 5381,5386 ----
*************** http://gcc.gnu.org/gcc-4.4/index.html
*** 5353,5358 ****
--- 5391,5398 ----
     This release is a bug-fix release, containing fixes for regressions in
     GCC 4.4.6 relative to previous releases of GCC.
  
+    This release series is no longer maintained.
+ 
  Release History
  
     GCC 4.4.7
*************** References and Acknowledgements
*** 5411,5417 ****
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2016-01-30[22].
  
  References
  
--- 5451,5457 ----
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2016-09-30[22].
  
  References
  
*************** References
*** 5439,5445 ****
    22. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.4/changes.html
- 
                               GCC 4.4 Release Series
                          Changes, New Features, and Fixes
  
--- 5479,5484 ----
*************** New warning options
*** 5655,5663 ****
  
  New Languages and Language specific improvements
  
!      * Version 3.0 of the [5]OpenMP specification is now supported for the
!        C, C++, and Fortran compilers.
!      * New character data types, per [6]TR 19769: New character types in
         C, are now supported for the C compiler in -std=gnu99 mode, as
         __CHAR16_TYPE__ and __CHAR32_TYPE__, and for the C++ compiler in
         -std=c++0x and -std=gnu++0x modes, as char16_t and char32_t too.
--- 5694,5702 ----
  
  New Languages and Language specific improvements
  
!      * Version 3.0 of the OpenMP specification is now supported for the C,
!        C++, and Fortran compilers.
!      * New character data types, per [5]TR 19769: New character types in
         C, are now supported for the C compiler in -std=gnu99 mode, as
         __CHAR16_TYPE__ and __CHAR32_TYPE__, and for the C++ compiler in
         -std=c++0x and -std=gnu++0x modes, as char16_t and char32_t too.
*************** New Languages and Language specific impr
*** 5686,5692 ****
  
    C++
  
!      * [7]Improved experimental support for the upcoming ISO C++ standard,
         C++0x. Including support for auto, inline namespaces, generalized
         initializer lists, defaulted and deleted functions, new character
         types, and scoped enums.
--- 5725,5731 ----
  
    C++
  
!      * [6]Improved experimental support for the upcoming ISO C++ standard,
         C++0x. Including support for auto, inline namespaces, generalized
         initializer lists, defaulted and deleted functions, new character
         types, and scoped enums.
*************** New Languages and Language specific impr
*** 5726,5737 ****
    Fortran
  
       * GNU Fortran now employs libcpp directly instead of using cc1 as an
!        external preprocessor. The [8]-cpp option was added to allow manual
         invocation of the preprocessor without relying on filename
         extensions.
!      * The [9]-Warray-temporaries option warns about array temporaries
         generated by the compiler, as an aid to optimization.
!      * The [10]-fcheck-array-temporaries option has been added, printing a
         notification at run time, when an array temporary had to be created
         for an function argument. Contrary to -Warray-temporaries the
         warning is only printed if the array is noncontiguous.
--- 5765,5776 ----
    Fortran
  
       * GNU Fortran now employs libcpp directly instead of using cc1 as an
!        external preprocessor. The [7]-cpp option was added to allow manual
         invocation of the preprocessor without relying on filename
         extensions.
!      * The [8]-Warray-temporaries option warns about array temporaries
         generated by the compiler, as an aid to optimization.
!      * The [9]-fcheck-array-temporaries option has been added, printing a
         notification at run time, when an array temporary had to be created
         for an function argument. Contrary to -Warray-temporaries the
         warning is only printed if the array is noncontiguous.
*************** New Languages and Language specific impr
*** 5753,5759 ****
       * Fortran 2003 support has been extended:
            + Wide characters (ISO 10646, UCS-4, kind=4) and UTF-8 I/O is
              now supported (except internal reads from/writes to wide
!             strings). [11]-fbackslash now supports also \unnnn and
              \Unnnnnnnn to enter Unicode characters.
            + Asynchronous I/O (implemented as synchronous I/O) and the
              decimal=, size=, sign=, pad=, blank=, and delim= specifiers
--- 5792,5798 ----
       * Fortran 2003 support has been extended:
            + Wide characters (ISO 10646, UCS-4, kind=4) and UTF-8 I/O is
              now supported (except internal reads from/writes to wide
!             strings). [10]-fbackslash now supports also \unnnn and
              \Unnnnnnnn to enter Unicode characters.
            + Asynchronous I/O (implemented as synchronous I/O) and the
              decimal=, size=, sign=, pad=, blank=, and delim= specifiers
*************** Other significant improvements
*** 5982,6048 ****
  
  GCC 4.4.1
  
!    This is the [12]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.4.1 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 4.4.2
  
!    This is the [13]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.4.2 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 4.4.3
  
!    This is the [14]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.4.3 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 4.4.4
  
!    This is the [15]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.4.4 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 4.4.5
  
!    This is the [16]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.4.5 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 4.4.6
  
!    This is the [17]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.4.6 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 4.4.7
  
!    This is the [18]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.4.7 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 [19]GCC manuals. If that fails, the
!     [20]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 [21]gcc@gcc.gnu.org. All of [22]our lists have public
      archives.
  
!    Copyright (C) [23]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 [24]maintained by the GCC team. Last modified
!    2016-01-30[25].
  
  References
  
--- 6021,6087 ----
  
  GCC 4.4.1
  
!    This is the [11]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.4.1 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 4.4.2
  
!    This is the [12]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.4.2 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 4.4.3
  
!    This is the [13]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.4.3 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 4.4.4
  
!    This is the [14]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.4.4 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 4.4.5
  
!    This is the [15]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.4.5 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 4.4.6
  
!    This is the [16]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.4.6 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 4.4.7
  
!    This is the [17]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.4.7 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 [18]GCC manuals. If that fails, the
!     [19]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 [20]gcc@gcc.gnu.org. All of [21]our lists have public
      archives.
  
!    Copyright (C) [22]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 [23]maintained by the GCC team. Last modified
!    2016-12-28[24].
  
  References
  
*************** References
*** 6050,6079 ****
     2. http://gcc.gnu.org/gcc-4.3/changes.html#obsoleted
     3. http://gcc.gnu.org/gcc-4.4/porting_to.html
     4. https://gcc.gnu.org/wiki/Graphite
!    5. http://openmp.org/wp/openmp-specifications/
!    6. http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1040.pdf
!    7. http://gcc.gnu.org/gcc-4.4/cxx0x_status.html
!    8. https://gcc.gnu.org/onlinedocs/gfortran/Preprocessing-Options.html
!    9. https://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWarray-temporaries_007d-125
!   10. https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfcheck-array-temporaries_007d-221
!   11. https://gcc.gnu.org/onlinedocs/gfortran/Fortran-Dialect-Options.html#index-g_t_0040code_007bbackslash_007d-34
!   12. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.1
!   13. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.2
!   14. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.3
!   15. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.4
!   16. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.5
!   17. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.6
!   18. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.7
!   19. https://gcc.gnu.org/onlinedocs/
!   20. mailto:gcc-help@gcc.gnu.org
!   21. mailto:gcc@gcc.gnu.org
!   22. https://gcc.gnu.org/lists.html
!   23. http://www.fsf.org/
!   24. https://gcc.gnu.org/about.html
!   25. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.3/index.html
- 
                               GCC 4.3 Release Series
  
     Jun 27, 2011
--- 6089,6116 ----
     2. http://gcc.gnu.org/gcc-4.3/changes.html#obsoleted
     3. http://gcc.gnu.org/gcc-4.4/porting_to.html
     4. https://gcc.gnu.org/wiki/Graphite
!    5. http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1040.pdf
!    6. http://gcc.gnu.org/gcc-4.4/cxx0x_status.html
!    7. https://gcc.gnu.org/onlinedocs/gfortran/Preprocessing-Options.html
!    8. https://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWarray-temporaries_007d-125
!    9. https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfcheck-array-temporaries_007d-221
!   10. https://gcc.gnu.org/onlinedocs/gfortran/Fortran-Dialect-Options.html#index-g_t_0040code_007bbackslash_007d-34
!   11. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.1
!   12. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.2
!   13. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.3
!   14. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.4
!   15. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.5
!   16. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.6
!   17. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.7
!   18. https://gcc.gnu.org/onlinedocs/
!   19. mailto:gcc-help@gcc.gnu.org
!   20. mailto:gcc@gcc.gnu.org
!   21. https://gcc.gnu.org/lists.html
!   22. http://www.fsf.org/
!   23. https://gcc.gnu.org/about.html
!   24. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.3/index.html
                               GCC 4.3 Release Series
  
     Jun 27, 2011
*************** http://gcc.gnu.org/gcc-4.3/index.html
*** 6084,6089 ****
--- 6121,6128 ----
     This release is a bug-fix release, containing fixes for regressions in
     GCC 4.3.5 relative to previous releases of GCC.
  
+    This release series is no longer maintained.
+ 
  Release History
  
     GCC 4.3.6
*************** References and Acknowledgements
*** 6139,6145 ****
     provided this notice is preserved.
  
     These pages are [20]maintained by the GCC team. Last modified
!    2016-01-30[21].
  
  References
  
--- 6178,6184 ----
     provided this notice is preserved.
  
     These pages are [20]maintained by the GCC team. Last modified
!    2016-09-30[21].
  
  References
  
*************** References
*** 6166,6172 ****
    21. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.3/changes.html
- 
                               GCC 4.3 Release Series
                          Changes, New Features, and Fixes
  
--- 6205,6210 ----
*************** New Languages and Language specific impr
*** 6415,6428 ****
  
       * [13]Experimental support for the upcoming ISO C++ standard, C++0x.
       * Support for TR1 mathematical special functions and regular
!        expressions. ([14]Implementation status of TR1)
       * Default what implementations give more elaborate exception strings
         for bad_cast, bad_typeid, bad_exception, and bad_alloc.
       * Header dependencies have been streamlined, reducing unnecessary
         includes and pre-processed bloat.
       * Variadic template implementations of items in <tuple> and
         <functional>.
!      * An experimental [15]parallel mode has been added. This is a
         parallel implementation of many C++ Standard library algorithms,
         like std::accumulate, std::for_each, std::transform, or std::sort,
         to give but four examples. These algorithms can be substituted for
--- 6453,6466 ----
  
       * [13]Experimental support for the upcoming ISO C++ standard, C++0x.
       * Support for TR1 mathematical special functions and regular
!        expressions.
       * Default what implementations give more elaborate exception strings
         for bad_cast, bad_typeid, bad_exception, and bad_alloc.
       * Header dependencies have been streamlined, reducing unnecessary
         includes and pre-processed bloat.
       * Variadic template implementations of items in <tuple> and
         <functional>.
!      * An experimental [14]parallel mode has been added. This is a
         parallel implementation of many C++ Standard library algorithms,
         like std::accumulate, std::for_each, std::transform, or std::sort,
         to give but four examples. These algorithms can be substituted for
*************** New Languages and Language specific impr
*** 6453,6459 ****
       * Due to the fact that the GMP and MPFR libraries are required for
         all languages, Fortran is no longer special in this regard and is
         available by default.
!      * The [16]-fexternal-blas option has been added, which generates
         calls to BLAS routines for intrinsic matrix operations such as
         matmul rather than using the built-in algorithms.
       * Support to give a backtrace (compiler flag -fbacktrace or
--- 6491,6497 ----
       * Due to the fact that the GMP and MPFR libraries are required for
         all languages, Fortran is no longer special in this regard and is
         available by default.
!      * The [15]-fexternal-blas option has been added, which generates
         calls to BLAS routines for intrinsic matrix operations such as
         matmul rather than using the built-in algorithms.
       * Support to give a backtrace (compiler flag -fbacktrace or
*************** New Languages and Language specific impr
*** 6462,6477 ****
         run-time error occured.
       * GNU Fortran now defines __GFORTRAN__ when it runs the C
         preprocessor (CPP).
!      * The [17]-finit-local-zero, -finit-real, -finit-integer,
         -finit-character, and -finit-logical options have been added, which
         can be used to initialize local variables.
!      * The intrinsic procedures [18]GAMMA and [19]LGAMMA have been added,
         which calculate the Gamma function and its logarithm. Use EXTERNAL
         gamma if you want to use your own gamma function.
       * GNU Fortran now regards the backslash character as literal (as
!        required by the Fortran 2003 standard); using [20]-fbackslash GNU
         Fortran interprets backslashes as C-style escape characters.
!      * The [21]interpretation of binary, octal and hexadecimal (BOZ)
         literal constants has been changed. Before they were always
         interpreted as integer; now they are bit-wise transferred as
         argument of INT, REAL, DBLE and CMPLX as required by the Fortran
--- 6500,6515 ----
         run-time error occured.
       * GNU Fortran now defines __GFORTRAN__ when it runs the C
         preprocessor (CPP).
!      * The [16]-finit-local-zero, -finit-real, -finit-integer,
         -finit-character, and -finit-logical options have been added, which
         can be used to initialize local variables.
!      * The intrinsic procedures [17]GAMMA and [18]LGAMMA have been added,
         which calculate the Gamma function and its logarithm. Use EXTERNAL
         gamma if you want to use your own gamma function.
       * GNU Fortran now regards the backslash character as literal (as
!        required by the Fortran 2003 standard); using [19]-fbackslash GNU
         Fortran interprets backslashes as C-style escape characters.
!      * The [20]interpretation of binary, octal and hexadecimal (BOZ)
         literal constants has been changed. Before they were always
         interpreted as integer; now they are bit-wise transferred as
         argument of INT, REAL, DBLE and CMPLX as required by the Fortran
*************** Documentation improvements
*** 6841,6847 ****
  
       * Existing libstdc++ documentation has been edited and restructured
         into a single DocBook XML manual. The results can be viewed online
!        [22]here.
  
  Other significant improvements
  
--- 6879,6885 ----
  
       * Existing libstdc++ documentation has been edited and restructured
         into a single DocBook XML manual. The results can be viewed online
!        [21]here.
  
  Other significant improvements
  
*************** Other significant improvements
*** 6873,6879 ****
  
  GCC 4.3.1
  
!    This is the [23]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.3.1 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
--- 6911,6917 ----
  
  GCC 4.3.1
  
!    This is the [22]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.3.1 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
*************** Target Specific Changes
*** 6899,6951 ****
  
  GCC 4.3.2
  
!    This is the [24]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.3.2 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 4.3.3
  
!    This is the [25]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.3.3 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 4.3.4
  
!    This is the [26]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.3.4 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 4.3.5
  
!    This is the [27]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.3.5 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 4.3.6
  
!    This is the [28]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.3.6 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 [29]GCC manuals. If that fails, the
!     [30]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 [31]gcc@gcc.gnu.org. All of [32]our lists have public
      archives.
  
!    Copyright (C) [33]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 [34]maintained by the GCC team. Last modified
!    2016-01-30[35].
  
  References
  
--- 6937,6989 ----
  
  GCC 4.3.2
  
!    This is the [23]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.3.2 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 4.3.3
  
!    This is the [24]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.3.3 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 4.3.4
  
!    This is the [25]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.3.4 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 4.3.5
  
!    This is the [26]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.3.5 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 4.3.6
  
!    This is the [27]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.3.6 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 [28]GCC manuals. If that fails, the
!     [29]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 [30]gcc@gcc.gnu.org. All of [31]our lists have public
      archives.
  
!    Copyright (C) [32]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 [33]maintained by the GCC team. Last modified
!    2017-02-07[34].
  
  References
  
*************** References
*** 6962,6992 ****
    11. https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
    12. http://gcc.gnu.org/gcc-4.3/cxx0x_status.html
    13. http://gcc.gnu.org/gcc-4.3/cxx0x_status.html
!   14. https://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt01ch01.html#m anual.intro.status.standard.tr1
!   15. https://gcc.gnu.org/onlinedocs/libstdc++/manual/parallel_mode.html
!   16. https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#Code-Gen-Options
!   17. https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfinit-local-zero_007d-167
!   18. https://gcc.gnu.org/onlinedocs/gcc-4.3.0/gfortran/GAMMA.html
!   19. https://gcc.gnu.org/onlinedocs/gcc-4.3.0/gfortran/LGAMMA.html
!   20. https://gcc.gnu.org/onlinedocs/gfortran/Fortran-Dialect-Options.html
!   21. https://gcc.gnu.org/onlinedocs/gfortran/BOZ-literal-constants.html
!   22. https://gcc.gnu.org/onlinedocs/libstdc++/
!   23. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.1
!   24. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.2
!   25. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.3
!   26. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.4
!   27. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.5
!   28. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.6
!   29. https://gcc.gnu.org/onlinedocs/
!   30. mailto:gcc-help@gcc.gnu.org
!   31. mailto:gcc@gcc.gnu.org
!   32. https://gcc.gnu.org/lists.html
!   33. http://www.fsf.org/
!   34. https://gcc.gnu.org/about.html
!   35. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.2/index.html
- 
                               GCC 4.2 Release Series
  
     May 19, 2008
--- 7000,7028 ----
    11. https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
    12. http://gcc.gnu.org/gcc-4.3/cxx0x_status.html
    13. http://gcc.gnu.org/gcc-4.3/cxx0x_status.html
!   14. https://gcc.gnu.org/onlinedocs/libstdc++/manual/parallel_mode.html
!   15. https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#Code-Gen-Options
!   16. https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfinit-local-zero_007d-167
!   17. https://gcc.gnu.org/onlinedocs/gcc-4.3.0/gfortran/GAMMA.html
!   18. https://gcc.gnu.org/onlinedocs/gcc-4.3.0/gfortran/LGAMMA.html
!   19. https://gcc.gnu.org/onlinedocs/gfortran/Fortran-Dialect-Options.html
!   20. https://gcc.gnu.org/onlinedocs/gfortran/BOZ-literal-constants.html
!   21. https://gcc.gnu.org/onlinedocs/libstdc++/
!   22. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.1
!   23. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.2
!   24. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.3
!   25. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.4
!   26. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.5
!   27. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.6
!   28. https://gcc.gnu.org/onlinedocs/
!   29. mailto:gcc-help@gcc.gnu.org
!   30. mailto:gcc@gcc.gnu.org
!   31. https://gcc.gnu.org/lists.html
!   32. http://www.fsf.org/
!   33. https://gcc.gnu.org/about.html
!   34. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.2/index.html
                               GCC 4.2 Release Series
  
     May 19, 2008
*************** http://gcc.gnu.org/gcc-4.2/index.html
*** 6997,7002 ****
--- 7033,7040 ----
     This release is a bug-fix release, containing fixes for regressions in
     GCC 4.2.3 relative to previous releases of GCC.
  
+    This release series is no longer maintained.
+ 
  Release History
  
     GCC 4.2.4
*************** References and Acknowledgements
*** 7046,7052 ****
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2016-01-30[19].
  
  References
  
--- 7084,7090 ----
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2016-09-30[19].
  
  References
  
*************** References
*** 7071,7077 ****
    19. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.2/changes.html
- 
                               GCC 4.2 Release Series
                          Changes, New Features, and Fixes
  
--- 7109,7114 ----
*************** New Languages and Language specific impr
*** 7197,7203 ****
       * Added support for TR1 <random>, <complex>, and C compatibility
         headers. In addition, a lock-free version of shared_ptr was
         contributed as part of Phillip Jordan's Google Summer of Code
!        project on lock-free containers. ([3]Implementation status of TR1)
       * In association with the Summer of Code work on lock-free
         containers, the interface for atomic builtins was adjusted,
         creating simpler alternatives for non-threaded code paths. Also,
--- 7234,7240 ----
       * Added support for TR1 <random>, <complex>, and C compatibility
         headers. In addition, a lock-free version of shared_ptr was
         contributed as part of Phillip Jordan's Google Summer of Code
!        project on lock-free containers.
       * In association with the Summer of Code work on lock-free
         containers, the interface for atomic builtins was adjusted,
         creating simpler alternatives for non-threaded code paths. Also,
*************** New Languages and Language specific impr
*** 7215,7221 ****
         (basic_tree, tree, trie), lists (list_update), and both
         collision-chaining and probing hash-based containers
         (basic_hash_table, cc_hash_table, gp_hash_table). More details per
!        the [4]documentation.
       * The implementation of the debug mode was modified, whereby the
         debug namespaces were nested inside of namespace std and namespace
         __gnu_cxx in order to resolve some long standing corner cases
--- 7252,7258 ----
         (basic_tree, tree, trie), lists (list_update), and both
         collision-chaining and probing hash-based containers
         (basic_hash_table, cc_hash_table, gp_hash_table). More details per
!        the [3]documentation.
       * The implementation of the debug mode was modified, whereby the
         debug namespaces were nested inside of namespace std and namespace
         __gnu_cxx in order to resolve some long standing corner cases
*************** New Languages and Language specific impr
*** 7248,7254 ****
         gfortran used 8-byte record markers by default (on most systems).
         In order to change the length of the record markers, e.g. to read
         unformatted files created by older gfortran versions, the
!        [5]-frecord-marker=8 option can be used.
  
    Java (GCJ)
  
--- 7285,7291 ----
         gfortran used 8-byte record markers by default (on most systems).
         In order to change the length of the record markers, e.g. to read
         unformatted files created by older gfortran versions, the
!        [4]-frecord-marker=8 option can be used.
  
    Java (GCJ)
  
*************** New Languages and Language specific impr
*** 7259,7265 ****
         memory than if the shared version of libgcj were used. However
         caution should be used as it can also cause essential parts of the
         library to be omitted. Some of these issues are discussed in:
!        [6]https://gcc.gnu.org/wiki/Statically_linking_libgcj
       * fastjar is no longer bundled with GCC. To build libgcj, you will
         need either InfoZIP (both zip and unzip) or an external jar
         program. In the former case, the GCC build will install a jar shell
--- 7296,7302 ----
         memory than if the shared version of libgcj were used. However
         caution should be used as it can also cause essential parts of the
         library to be omitted. Some of these issues are discussed in:
!        [5]https://gcc.gnu.org/wiki/Statically_linking_libgcj
       * fastjar is no longer bundled with GCC. To build libgcj, you will
         need either InfoZIP (both zip and unzip) or an external jar
         program. In the former case, the GCC build will install a jar shell
*************** Other significant improvements
*** 7365,7401 ****
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [7]GCC manuals. If that fails, the
!     [8]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 [9]gcc@gcc.gnu.org. All of [10]our lists have public
!     archives.
  
!    Copyright (C) [11]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 [12]maintained by the GCC team. Last modified
!    2016-01-30[13].
  
  References
  
     1. http://gcc.gnu.org/projects/gomp/
     2. https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
!    3. https://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt01ch01.html#manual.intro.status.standard.tr1
!    4. https://gcc.gnu.org/onlinedocs/libstdc++/ext/pb_ds/index.html
!    5. https://gcc.gnu.org/onlinedocs/gfortran/Runtime-Options.html
!    6. https://gcc.gnu.org/wiki/Statically_linking_libgcj
!    7. https://gcc.gnu.org/onlinedocs/
!    8. mailto:gcc-help@gcc.gnu.org
!    9. mailto:gcc@gcc.gnu.org
!   10. https://gcc.gnu.org/lists.html
!   11. http://www.fsf.org/
!   12. https://gcc.gnu.org/about.html
!   13. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.1/index.html
- 
                               GCC 4.1 Release Series
  
     February 13, 2007
--- 7402,7435 ----
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [6]GCC manuals. If that fails, the
!     [7]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 [8]gcc@gcc.gnu.org. All of [9]our lists have public archives.
  
!    Copyright (C) [10]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 [11]maintained by the GCC team. Last modified
!    2017-02-07[12].
  
  References
  
     1. http://gcc.gnu.org/projects/gomp/
     2. https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
!    3. https://gcc.gnu.org/onlinedocs/libstdc++/ext/pb_ds/index.html
!    4. https://gcc.gnu.org/onlinedocs/gfortran/Runtime-Options.html
!    5. https://gcc.gnu.org/wiki/Statically_linking_libgcj
!    6. https://gcc.gnu.org/onlinedocs/
!    7. mailto:gcc-help@gcc.gnu.org
!    8. mailto:gcc@gcc.gnu.org
!    9. https://gcc.gnu.org/lists.html
!   10. http://www.fsf.org/
!   11. https://gcc.gnu.org/about.html
!   12. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.1/index.html
                               GCC 4.1 Release Series
  
     February 13, 2007
*************** http://gcc.gnu.org/gcc-4.1/index.html
*** 7406,7411 ****
--- 7440,7447 ----
     This release is a bug-fix release, containing fixes for regressions in
     GCC 4.1.1 relative to previous releases of GCC.
  
+    This release series is no longer maintained.
+ 
  Release History
  
     GCC 4.1.2
*************** References and Acknowledgements
*** 7449,7455 ****
     provided this notice is preserved.
  
     These pages are [16]maintained by the GCC team. Last modified
!    2016-01-30[17].
  
  References
  
--- 7485,7491 ----
     provided this notice is preserved.
  
     These pages are [16]maintained by the GCC team. Last modified
!    2016-09-30[17].
  
  References
  
*************** References
*** 7472,7478 ****
    17. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.1/changes.html
- 
                               GCC 4.1 Release Series
                          Changes, New Features, and Fixes
  
--- 7508,7513 ----
*************** References
*** 8032,8038 ****
    13. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.0/index.html
- 
                               GCC 4.0 Release Series
  
     January 31, 2007
--- 8067,8072 ----
*************** http://gcc.gnu.org/gcc-4.0/index.html
*** 8043,8048 ****
--- 8077,8084 ----
     This release is a bug-fix release, containing fixes for regressions in
     GCC 4.0.3 relative to previous releases of GCC.
  
+    This release series is no longer maintained.
+ 
  Release History
  
     GCC 4.0.4
*************** References and Acknowledgements
*** 8092,8098 ****
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2016-01-30[19].
  
  References
  
--- 8128,8134 ----
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2016-09-30[19].
  
  References
  
*************** References
*** 8117,8123 ****
    19. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.0/changes.html
- 
                               GCC 4.0 Release Series
                          Changes, New Features, and Fixes
  
--- 8153,8158 ----
*************** Obsolete Systems
*** 8527,8533 ****
     declared obsolete:
       * Intel i860
       * Ubicom IP2022
!      * National Semiconductor NS32K
       * Texas Instruments TMS320C[34]x
  
     Also, those for some individual systems have been obsoleted:
--- 8562,8568 ----
     declared obsolete:
       * Intel i860
       * Ubicom IP2022
!      * National Semiconductor NS32K (ns32k)
       * Texas Instruments TMS320C[34]x
  
     Also, those for some individual systems have been obsoleted:
*************** GCC 4.0.4
*** 8619,8625 ****
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2016-05-27[22].
  
  References
  
--- 8654,8660 ----
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2017-03-29[22].
  
  References
  
*************** References
*** 8630,8636 ****
     5. http://gcc.gnu.org/news/sms.html
     6. https://www.akkadia.org/drepper/dsohowto.pdf
     7. http://gcc.gnu.org/gcc-4.0/changes.html#visibility
!    8. http://mentorembedded.github.io/cxx-abi/
     9. http://gcc.gnu.org/fortran/
    10. https://gcc.gnu.org/install/
    11. https://gcc.gnu.org/wiki/Visibility
--- 8665,8671 ----
     5. http://gcc.gnu.org/news/sms.html
     6. https://www.akkadia.org/drepper/dsohowto.pdf
     7. http://gcc.gnu.org/gcc-4.0/changes.html#visibility
!    8. https://itanium-cxx-abi.github.io/cxx-abi/
     9. http://gcc.gnu.org/fortran/
    10. https://gcc.gnu.org/install/
    11. https://gcc.gnu.org/wiki/Visibility
*************** References
*** 8647,8653 ****
    22. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-3.4/index.html
- 
                               GCC 3.4 Release Series
  
     May 26, 2006
--- 8682,8687 ----
*************** http://gcc.gnu.org/gcc-3.4/index.html
*** 8663,8668 ****
--- 8697,8704 ----
     improvements, bug fixes, and other changes, thanks to an [3]amazing
     group of volunteers.
  
+    This release series is no longer maintained.
+ 
  Release History
  
     GCC 3.4.6
*************** References and Acknowledgements
*** 8718,8724 ****
     provided this notice is preserved.
  
     These pages are [22]maintained by the GCC team. Last modified
!    2016-01-30[23].
  
  References
  
--- 8754,8760 ----
     provided this notice is preserved.
  
     These pages are [22]maintained by the GCC team. Last modified
!    2016-09-30[23].
  
  References
  
*************** References
*** 8747,8753 ****
    23. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-3.4/changes.html
- 
                               GCC 3.4 Release Series
                          Changes, New Features, and Fixes
  
--- 8783,8788 ----
*************** New Targets and Target Specific Improvem
*** 9354,9362 ****
         __builtin_alpha_zap to allow utilizing the more obscure
         instructions of the CPU.
       * Parameter passing of complex arguments has changed to match the
!        [20]ABI. This change is incompatible with previous GCC versions,
!        but does fix compatibility with the Tru64 compiler and several
!        corner cases where GCC was incompatible with itself.
  
    ARM
  
--- 9389,9397 ----
         __builtin_alpha_zap to allow utilizing the more obscure
         instructions of the CPU.
       * Parameter passing of complex arguments has changed to match the
!        ABI. This change is incompatible with previous GCC versions, but
!        does fix compatibility with the Tru64 compiler and several corner
!        cases where GCC was incompatible with itself.
  
    ARM
  
*************** New Targets and Target Specific Improvem
*** 9371,9378 ****
       * A new ARM target has been added: arm-wince-pe. This is similar to
         the arm-pe target, but it defaults to using the APCS32 ABI.
       * The existing ARM pipeline description has been converted to the use
!        the [21]DFA processor pipeline model. There is not much change in
!        code performance, but the description is now [22]easier to
         understand.
       * Support for the Cirrus EP9312 Maverick floating point co-processor
         added. Enabled at run time with the -mcpu=ep9312 command line
--- 9406,9413 ----
       * A new ARM target has been added: arm-wince-pe. This is similar to
         the arm-pe target, but it defaults to using the APCS32 ABI.
       * The existing ARM pipeline description has been converted to the use
!        the [20]DFA processor pipeline model. There is not much change in
!        code performance, but the description is now [21]easier to
         understand.
       * Support for the Cirrus EP9312 Maverick floating point co-processor
         added. Enabled at run time with the -mcpu=ep9312 command line
*************** New Targets and Target Specific Improvem
*** 9418,9424 ****
         generation of code tuned for Itanium 2 (option -mtune=itanium2) is
         enabled by default now. To generate code tuned for Itanium 1 the
         option -mtune=itanium1 should be used.
!      * [23]DFA processor pipeline descriptions for the IA-64 processors
         have been added. This resulted in about 3% improvement on the
         SPECInt2000 benchmark for Itanium 2.
       * Instruction bundling for the IA-64 processors has been rewritten
--- 9453,9459 ----
         generation of code tuned for Itanium 2 (option -mtune=itanium2) is
         enabled by default now. To generate code tuned for Itanium 1 the
         option -mtune=itanium1 should be used.
!      * [22]DFA processor pipeline descriptions for the IA-64 processors
         have been added. This resulted in about 3% improvement on the
         SPECInt2000 benchmark for Itanium 2.
       * Instruction bundling for the IA-64 processors has been rewritten
*************** New Targets and Target Specific Improvem
*** 9482,9488 ****
  
      General
  
!      * Several [24]ABI bugs have been fixed. Unfortunately, these changes
         will break binary compatibility with earlier releases.
       * GCC can now use explicit relocation operators when generating
         -mabicalls code. This behavior is controlled by -mexplicit-relocs
--- 9517,9523 ----
  
      General
  
!      * Several [23]ABI bugs have been fixed. Unfortunately, these changes
         will break binary compatibility with earlier releases.
       * GCC can now use explicit relocation operators when generating
         -mabicalls code. This behavior is controlled by -mexplicit-relocs
*************** New Targets and Target Specific Improvem
*** 9507,9513 ****
    PowerPC
  
       * GCC 3.4 releases have a number of fixes for PowerPC and PowerPC64
!        [25]ABI incompatibilities regarding the way parameters are passed
         during functions calls. These changes may result in incompatibility
         between code compiled with GCC 3.3 and GCC 3.4.
  
--- 9542,9548 ----
    PowerPC
  
       * GCC 3.4 releases have a number of fixes for PowerPC and PowerPC64
!        [24]ABI incompatibilities regarding the way parameters are passed
         during functions calls. These changes may result in incompatibility
         between code compiled with GCC 3.3 and GCC 3.4.
  
*************** New Targets and Target Specific Improvem
*** 9589,9595 ****
  
       * The option -mflat is deprecated.
       * Support for large (> 2GB) frames has been added to the 64-bit port.
!      * Several [26]ABI bugs have been fixed. Unfortunately, these changes
         will break binary compatibility with earlier releases.
       * The default debugging format has been switched from STABS to
         DWARF-2 for 32-bit code on Solaris 7 and later. DWARF-2 is already
--- 9624,9630 ----
  
       * The option -mflat is deprecated.
       * Support for large (> 2GB) frames has been added to the 64-bit port.
!      * Several [25]ABI bugs have been fixed. Unfortunately, these changes
         will break binary compatibility with earlier releases.
       * The default debugging format has been switched from STABS to
         DWARF-2 for 32-bit code on Solaris 7 and later. DWARF-2 is already
*************** GCC 3.4.0
*** 9702,9708 ****
    Bug Fixes
  
     A vast number of bugs have been fixed in 3.4.0, too many to publish a
!    complete list here. [27]Follow this link to query the Bugzilla database
     for the list of over 900 bugs fixed in 3.4.0. This is the list of all
     bugs marked as resolved and fixed in 3.4.0 that are not flagged as 3.4
     regressions.
--- 9737,9743 ----
    Bug Fixes
  
     A vast number of bugs have been fixed in 3.4.0, too many to publish a
!    complete list here. [26]Follow this link to query the Bugzilla database
     for the list of over 900 bugs fixed in 3.4.0. This is the list of all
     bugs marked as resolved and fixed in 3.4.0 that are not flagged as 3.4
     regressions.
*************** GCC 3.4.1
*** 9719,9982 ****
  
      Bootstrap failures
  
!      * [28]10129 Ada bootstrap fails on PPC-Darwin - invalid assembler
         emitted - PIC related
!      * [29]14576 [ARM] ICE in libiberty when building gcc-3.4 for arm-elf
!      * [30]14760 A bug in configure.in prevents using both
         --program-suffix and --program-prefix
!      * [31]14671 [hppa64] bootstrap fails: ICE in
         save_call_clobbered_regs, in caller_save.c
!      * [32]15093 [alpha][Java] make bootstrap fails to configure libffi on
         Alpha
!      * [33]15178 Solaris 9/x86 fails linking after stage 3
  
      Multi-platform internal compiler errors (ICEs)
  
!      * [34]12753 (preprocessor) Memory corruption in preprocessor on bad
         input
!      * [35]13985 ICE in gcc.c-torture/compile/930621-1.c
!      * [36]14810 (c++) tree check failures with invalid code involving
         templates
!      * [37]14883 (c++) ICE on invalid code, in cp_parser_lookup_name, in
         cp/parser.c
!      * [38]15044 (c++) ICE on syntax error, template header
!      * [39]15057 (c++) Compiling of conditional value throw constructs
         cause a segmentation violation
!      * [40]15064 (c++) typeid of template parameter gives ICE
!      * [41]15142 (c++) ICE when passing a string where a char* is expected
         in a throw statement
!      * [42]15159 ICE in rtl_verify_flow_info_1
!      * [43]15165 (c++) ICE in instantiate_template
!      * [44]15193 Unary minus using pointer to V4SF vector causes
         -fforce-mem to exhaust all memory
!      * [45]15209 (c++) Runs out of memory with packed structs
!      * [46]15227 (c++) Trouble with invalid function definition
!      * [47]15285 (c++) instantiate_type ICE when forming pointer to
         template function
!      * [48]15299 (c++) ICE in resolve_overloaded_unification
!      * [49]15329 (c++) ICE on constructor of member template
!      * [50]15550 ICE in extract_insn, in recog.c
!      * [51]15554 (c++) ICE in tsubst_copy, in cp/pt.c
!      * [52]15640 (c++) ICE on invalid code in arg_assoc, in
         cp/name-lookup.c
!      * [53]15666 [unit-at-a-time] Gcc abort on valid code
!      * [54]15696 (c++) ICE with bad pointer-to-member code
!      * [55]15701 (c++) ICE with friends and template template parameter
!      * [56]15761 ICE in do_SUBST, in combine.c
!      * [57]15829 (c++) ICE on Botan-1.3.13 due to -funroll-loops
  
      Ada
  
!      * [58]14538 All RTEMS targets broken for gnat
  
      C front end
  
!      * [59]12391 missing warning about assigning to an incomplete type
!      * [60]14649 atan(1.0) should not be a constant expression
!      * [61]15004 [unit-at-a-time] no warning for unused paramater in
         static function
!      * [62]15749 --pedantic-errors behaves differently from --pedantic
         with C-compiler on GNU/Linux
  
      C++ compiler and library
  
!      * [63]10646 non-const reference is incorrectly matched in a "const T"
         partial specialization
!      * [64]12077 wcin.rdbuf()->in_avail() return value too high
!      * [65]13598 enc_filebuf doesn't work
!      * [66]14211 const_cast returns lvalue but should be rvalue
!      * [67]14220 num_put::do_put() undesired float/double behavior
!      * [68]14245 problem with user-defined allocators in std::basic_string
!      * [69]14340 libstdc++ Debug mode: failure to convert iterator to
         const_iterator
!      * [70]14600 __gnu_cxx::stdio_sync_filebuf should expose internal
         FILE*
!      * [71]14668 no warning anymore for reevaluation of declaration
!      * [72]14775 LFS (large file support) tests missing
!      * [73]14821 Duplicate namespace alias declaration should not conflict
!      * [74]14930 Friend declaration ignored
!      * [75]14932 cannot use offsetof to get offsets of array elements in
         g++ 3.4.0
!      * [76]14950 [non unit-at-a-time] always_inline does not mix with
         templates and -O0
!      * [77]14962 g++ ignores #pragma redefine_extname
!      * [78]14975 Segfault on low-level write error during imbue
!      * [79]15002 Linewise stream input is unusably slow (std::string slow)
!      * [80]15025 compiler accepts redeclaration of template as
         non-template
!      * [81]15046 [arm] Math functions misdetected by cross configuration
!      * [82]15069 a bit test on a variable of enum type is miscompiled
!      * [83]15074 g++ -lsupc++ still links against libstdc++
!      * [84]15083 spurious "statement has no effect" warning
!      * [85]15096 parse error with templates and pointer to const member
!      * [86]15287 combination of operator[] and operator .* fails in
         templates
!      * [87]15317 __attribute__ unused in first parameter of constructor
         gives error
!      * [88]15337 sizeof on incomplete type diagnostic
!      * [89]15361 bitset<>::_Find_next fails
!      * [90]15412 _GLIBCXX_ symbols symbols defined and used in different
         namespaces
!      * [91]15427 valid code results in incomplete type error
!      * [92]15471 Incorrect member pointer offsets in anonymous
         structs/unions
!      * [93]15503 nested template problem
!      * [94]15507 compiler hangs while laying out union
!      * [95]15542 operator & and template definitions
!      * [96]15565 SLES9: leading + sign for unsigned int with showpos
!      * [97]15625 friend defined inside a template fails to find static
         function
!      * [98]15629 Function templates, overloads, and friend name injection
!      * [99]15742 'noreturn' attribute ignored in method of template
         functions.
!      * [100]15775 Allocator::pointer consistently ignored
!      * [101]15821 Duplicate namespace alias within namespace rejected
!      * [102]15862 'enum yn' fails (confict with undeclared builtin)
!      * [103]15875 rejects pointer to member in template
!      * [104]15877 valid code using templates and anonymous enums is
         rejected
!      * [105]15947 Puzzling error message for wrong destructor declaration
         in template class
!      * [106]16020 cannot copy __gnu_debug::bitset
!      * [107]16154 input iterator concept too restrictive
!      * [108]16174 deducing top-level consts
  
      Java
  
!      * [109]14315 Java compiler is not parallel make safe
  
      Fortran
  
!      * [110]15151 [g77] incorrect logical i/o in 64-bit mode
  
      Objective-C
  
!      * [111]7993 private variables cannot be shadowed in subclasses
  
      Optimization bugs
  
!      * [112]15228 useless copies of floating point operands
!      * [113]15345 [non-unit-at-a-time] unreferenced nested inline
         functions not optimized away
!      * [114]15945 Incorrect floating point optimization
!      * [115]15526 ftrapv aborts on 0 * (-1)
!      * [116]14690 Miscompiled POOMA tests
!      * [117]15112 GCC generates code to write to unchanging memory
  
      Preprocessor
  
!      * [118]15067 Minor glitch in the source of cpp
  
      Main driver program bugs
  
!      * [119]1963 collect2 interprets -oldstyle_liblookup as -o
         ldstyle_liblookup
  
      x86-specific (Intel/AMD)
  
!      * [120]15717 Error: can't resolve `L0' {*ABS* section} - `xx' {*UND*
         section}
  
      HPPA-specific
  
!      * [121]14782 GCC produces an unaligned data access at -O2
!      * [122]14828 FAIL: gcc.c-torture/execute/20030408-1.c execution, -O2
!      * [123]15202 ICE in reload_cse_simplify_operands, in postreload.c
  
      IA64-specific
  
!      * [124]14610 __float80 constants incorrectly emitted
!      * [125]14813 init_array sections are initialized in the wrong order
!      * [126]14857 GCC segfault on duplicated asm statement
!      * [127]15598 Gcc 3.4 ICE on valid code
!      * [128]15653 Gcc 3.4 ICE on valid code
  
      MIPS-specific
  
!      * [129]15189 wrong filling of delay slot with -march=mips1 -G0
         -mno-split-addresses -mno-explicit-relocs
!      * [130]15331 Assembler error building gnatlib on IRIX 6.5 with GNU as
         2.14.91
!      * [131]16144 Bogus reference to __divdf3 when -O1
!      * [132]16176 Miscompilation of unaligned data in MIPS backend
  
      PowerPC-specific
  
!      * [133]11591 ICE in gcc.dg/altivec-5.c
!      * [134]12028 powerpc-eabispe produces bad sCOND operation
!      * [135]14478 rs6000 geu/ltu patterns generate incorrect code
!      * [136]14567 long double and va_arg complex args
!      * [137]14715 Altivec stack layout may overlap gpr save with stack
         temps
!      * [138]14902 (libstdc++) Stream checking functions fail when -pthread
         option is used.
!      * [139]14924 Compiler ICE on valid code
!      * [140]14960 -maltivec affects vector return with -mabi=no-altivec
!      * [141]15106 vector varargs failure passing from altivec to
         non-altivec code for -m32
!      * [142]16026 ICE in function.c:4804, assign_parms, when -mpowerpc64 &
         half-word operation
!      * [143]15191 -maltivec -mabi=no-altivec results in mis-aligned lvx
         and stvx
!      * [144]15662 Segmentation fault when an exception is thrown - even if
         try and catch are specified
  
      s390-specific
  
!      * [145]15054 Bad code due to overlapping stack temporaries
  
      SPARC-specific
  
!      * [146]15783 ICE with union assignment in 64-bit mode
!      * [147]15626 GCC 3.4 emits "ld: warning: relocation error:
         R_SPARC_UA32"
  
      x86-64-specific
  
!      * [148]14326 boehm-gc hardcodes to 3DNow! prefetch for x86_64
!      * [149]14723 Backported -march=nocona from mainline
!      * [150]15290 __float128 failed to pass to function properly
  
      Cygwin/Mingw32-specific
  
!      * [151]15250 Option -mms-bitfields support on GCC 3.4 is not
         conformant to MS layout
!      * [152]15551 -mtune=pentium4 -O2 with sjlj EH breaks stack probe
         worker on windows32 targets
  
      Bugs specific to embedded processors
  
!      * [153]8309 [m68k] -m5200 produces erroneous SImode set of short
         varaible on stack
!      * [154]13250 [SH] Gcc code for rotation clobbers the register, but
         gcc continues to use the register as if it was not clobbered
!      * [155]13803 [coldfire] movqi operand constraints too restrictivefor
         TARGET_COLDFIRE
!      * [156]14093 [SH] ICE for code when using -mhitachi option in SH
!      * [157]14457 [m6811hc] ICE with simple c++ source
!      * [158]14542 [m6811hc] ICE on simple source
!      * [159]15100 [SH] cc1plus got hang-up on
         libstdc++-v3/testsuite/abi_check.cc
!      * [160]15296 [CRIS] Delayed branch scheduling causing invalid code on
         cris-*
!      * [161]15396 [SH] ICE with -O2 -fPIC
!      * [162]15782 [coldfire] m68k_output_mi_thunk emits wrong code for
         ColdFire
  
      Testsuite problems (compiler not affected)
  
!      * [163]11610 libstdc++ testcases 27_io/* don't work properly remotely
!      * [164]15488 (libstdc++) possibly insufficient file permissions for
         executing test suite
!      * [165]15489 (libstdc++) testsuite_files determined incorrectly
  
      Documentation bugs
  
!      * [166]13928 (libstdc++) no whatis info in some man pages generated
         by doxygen
!      * [167]14150 Ada documentation out of date
!      * [168]14949 (c++) Need to document method visibility changes
!      * [169]15123 libstdc++-doc: Allocators.3 manpage is empty
       __________________________________________________________________
  
  GCC 3.4.2
--- 9754,10017 ----
  
      Bootstrap failures
  
!      * [27]10129 Ada bootstrap fails on PPC-Darwin - invalid assembler
         emitted - PIC related
!      * [28]14576 [ARM] ICE in libiberty when building gcc-3.4 for arm-elf
!      * [29]14760 A bug in configure.in prevents using both
         --program-suffix and --program-prefix
!      * [30]14671 [hppa64] bootstrap fails: ICE in
         save_call_clobbered_regs, in caller_save.c
!      * [31]15093 [alpha][Java] make bootstrap fails to configure libffi on
         Alpha
!      * [32]15178 Solaris 9/x86 fails linking after stage 3
  
      Multi-platform internal compiler errors (ICEs)
  
!      * [33]12753 (preprocessor) Memory corruption in preprocessor on bad
         input
!      * [34]13985 ICE in gcc.c-torture/compile/930621-1.c
!      * [35]14810 (c++) tree check failures with invalid code involving
         templates
!      * [36]14883 (c++) ICE on invalid code, in cp_parser_lookup_name, in
         cp/parser.c
!      * [37]15044 (c++) ICE on syntax error, template header
!      * [38]15057 (c++) Compiling of conditional value throw constructs
         cause a segmentation violation
!      * [39]15064 (c++) typeid of template parameter gives ICE
!      * [40]15142 (c++) ICE when passing a string where a char* is expected
         in a throw statement
!      * [41]15159 ICE in rtl_verify_flow_info_1
!      * [42]15165 (c++) ICE in instantiate_template
!      * [43]15193 Unary minus using pointer to V4SF vector causes
         -fforce-mem to exhaust all memory
!      * [44]15209 (c++) Runs out of memory with packed structs
!      * [45]15227 (c++) Trouble with invalid function definition
!      * [46]15285 (c++) instantiate_type ICE when forming pointer to
         template function
!      * [47]15299 (c++) ICE in resolve_overloaded_unification
!      * [48]15329 (c++) ICE on constructor of member template
!      * [49]15550 ICE in extract_insn, in recog.c
!      * [50]15554 (c++) ICE in tsubst_copy, in cp/pt.c
!      * [51]15640 (c++) ICE on invalid code in arg_assoc, in
         cp/name-lookup.c
!      * [52]15666 [unit-at-a-time] Gcc abort on valid code
!      * [53]15696 (c++) ICE with bad pointer-to-member code
!      * [54]15701 (c++) ICE with friends and template template parameter
!      * [55]15761 ICE in do_SUBST, in combine.c
!      * [56]15829 (c++) ICE on Botan-1.3.13 due to -funroll-loops
  
      Ada
  
!      * [57]14538 All RTEMS targets broken for gnat
  
      C front end
  
!      * [58]12391 missing warning about assigning to an incomplete type
!      * [59]14649 atan(1.0) should not be a constant expression
!      * [60]15004 [unit-at-a-time] no warning for unused paramater in
         static function
!      * [61]15749 --pedantic-errors behaves differently from --pedantic
         with C-compiler on GNU/Linux
  
      C++ compiler and library
  
!      * [62]10646 non-const reference is incorrectly matched in a "const T"
         partial specialization
!      * [63]12077 wcin.rdbuf()->in_avail() return value too high
!      * [64]13598 enc_filebuf doesn't work
!      * [65]14211 const_cast returns lvalue but should be rvalue
!      * [66]14220 num_put::do_put() undesired float/double behavior
!      * [67]14245 problem with user-defined allocators in std::basic_string
!      * [68]14340 libstdc++ Debug mode: failure to convert iterator to
         const_iterator
!      * [69]14600 __gnu_cxx::stdio_sync_filebuf should expose internal
         FILE*
!      * [70]14668 no warning anymore for reevaluation of declaration
!      * [71]14775 LFS (large file support) tests missing
!      * [72]14821 Duplicate namespace alias declaration should not conflict
!      * [73]14930 Friend declaration ignored
!      * [74]14932 cannot use offsetof to get offsets of array elements in
         g++ 3.4.0
!      * [75]14950 [non unit-at-a-time] always_inline does not mix with
         templates and -O0
!      * [76]14962 g++ ignores #pragma redefine_extname
!      * [77]14975 Segfault on low-level write error during imbue
!      * [78]15002 Linewise stream input is unusably slow (std::string slow)
!      * [79]15025 compiler accepts redeclaration of template as
         non-template
!      * [80]15046 [arm] Math functions misdetected by cross configuration
!      * [81]15069 a bit test on a variable of enum type is miscompiled
!      * [82]15074 g++ -lsupc++ still links against libstdc++
!      * [83]15083 spurious "statement has no effect" warning
!      * [84]15096 parse error with templates and pointer to const member
!      * [85]15287 combination of operator[] and operator .* fails in
         templates
!      * [86]15317 __attribute__ unused in first parameter of constructor
         gives error
!      * [87]15337 sizeof on incomplete type diagnostic
!      * [88]15361 bitset<>::_Find_next fails
!      * [89]15412 _GLIBCXX_ symbols symbols defined and used in different
         namespaces
!      * [90]15427 valid code results in incomplete type error
!      * [91]15471 Incorrect member pointer offsets in anonymous
         structs/unions
!      * [92]15503 nested template problem
!      * [93]15507 compiler hangs while laying out union
!      * [94]15542 operator & and template definitions
!      * [95]15565 SLES9: leading + sign for unsigned int with showpos
!      * [96]15625 friend defined inside a template fails to find static
         function
!      * [97]15629 Function templates, overloads, and friend name injection
!      * [98]15742 'noreturn' attribute ignored in method of template
         functions.
!      * [99]15775 Allocator::pointer consistently ignored
!      * [100]15821 Duplicate namespace alias within namespace rejected
!      * [101]15862 'enum yn' fails (confict with undeclared builtin)
!      * [102]15875 rejects pointer to member in template
!      * [103]15877 valid code using templates and anonymous enums is
         rejected
!      * [104]15947 Puzzling error message for wrong destructor declaration
         in template class
!      * [105]16020 cannot copy __gnu_debug::bitset
!      * [106]16154 input iterator concept too restrictive
!      * [107]16174 deducing top-level consts
  
      Java
  
!      * [108]14315 Java compiler is not parallel make safe
  
      Fortran
  
!      * [109]15151 [g77] incorrect logical i/o in 64-bit mode
  
      Objective-C
  
!      * [110]7993 private variables cannot be shadowed in subclasses
  
      Optimization bugs
  
!      * [111]15228 useless copies of floating point operands
!      * [112]15345 [non-unit-at-a-time] unreferenced nested inline
         functions not optimized away
!      * [113]15945 Incorrect floating point optimization
!      * [114]15526 ftrapv aborts on 0 * (-1)
!      * [115]14690 Miscompiled POOMA tests
!      * [116]15112 GCC generates code to write to unchanging memory
  
      Preprocessor
  
!      * [117]15067 Minor glitch in the source of cpp
  
      Main driver program bugs
  
!      * [118]1963 collect2 interprets -oldstyle_liblookup as -o
         ldstyle_liblookup
  
      x86-specific (Intel/AMD)
  
!      * [119]15717 Error: can't resolve `L0' {*ABS* section} - `xx' {*UND*
         section}
  
      HPPA-specific
  
!      * [120]14782 GCC produces an unaligned data access at -O2
!      * [121]14828 FAIL: gcc.c-torture/execute/20030408-1.c execution, -O2
!      * [122]15202 ICE in reload_cse_simplify_operands, in postreload.c
  
      IA64-specific
  
!      * [123]14610 __float80 constants incorrectly emitted
!      * [124]14813 init_array sections are initialized in the wrong order
!      * [125]14857 GCC segfault on duplicated asm statement
!      * [126]15598 Gcc 3.4 ICE on valid code
!      * [127]15653 Gcc 3.4 ICE on valid code
  
      MIPS-specific
  
!      * [128]15189 wrong filling of delay slot with -march=mips1 -G0
         -mno-split-addresses -mno-explicit-relocs
!      * [129]15331 Assembler error building gnatlib on IRIX 6.5 with GNU as
         2.14.91
!      * [130]16144 Bogus reference to __divdf3 when -O1
!      * [131]16176 Miscompilation of unaligned data in MIPS backend
  
      PowerPC-specific
  
!      * [132]11591 ICE in gcc.dg/altivec-5.c
!      * [133]12028 powerpc-eabispe produces bad sCOND operation
!      * [134]14478 rs6000 geu/ltu patterns generate incorrect code
!      * [135]14567 long double and va_arg complex args
!      * [136]14715 Altivec stack layout may overlap gpr save with stack
         temps
!      * [137]14902 (libstdc++) Stream checking functions fail when -pthread
         option is used.
!      * [138]14924 Compiler ICE on valid code
!      * [139]14960 -maltivec affects vector return with -mabi=no-altivec
!      * [140]15106 vector varargs failure passing from altivec to
         non-altivec code for -m32
!      * [141]16026 ICE in function.c:4804, assign_parms, when -mpowerpc64 &
         half-word operation
!      * [142]15191 -maltivec -mabi=no-altivec results in mis-aligned lvx
         and stvx
!      * [143]15662 Segmentation fault when an exception is thrown - even if
         try and catch are specified
  
      s390-specific
  
!      * [144]15054 Bad code due to overlapping stack temporaries
  
      SPARC-specific
  
!      * [145]15783 ICE with union assignment in 64-bit mode
!      * [146]15626 GCC 3.4 emits "ld: warning: relocation error:
         R_SPARC_UA32"
  
      x86-64-specific
  
!      * [147]14326 boehm-gc hardcodes to 3DNow! prefetch for x86_64
!      * [148]14723 Backported -march=nocona from mainline
!      * [149]15290 __float128 failed to pass to function properly
  
      Cygwin/Mingw32-specific
  
!      * [150]15250 Option -mms-bitfields support on GCC 3.4 is not
         conformant to MS layout
!      * [151]15551 -mtune=pentium4 -O2 with sjlj EH breaks stack probe
         worker on windows32 targets
  
      Bugs specific to embedded processors
  
!      * [152]8309 [m68k] -m5200 produces erroneous SImode set of short
         varaible on stack
!      * [153]13250 [SH] Gcc code for rotation clobbers the register, but
         gcc continues to use the register as if it was not clobbered
!      * [154]13803 [coldfire] movqi operand constraints too restrictivefor
         TARGET_COLDFIRE
!      * [155]14093 [SH] ICE for code when using -mhitachi option in SH
!      * [156]14457 [m6811hc] ICE with simple c++ source
!      * [157]14542 [m6811hc] ICE on simple source
!      * [158]15100 [SH] cc1plus got hang-up on
         libstdc++-v3/testsuite/abi_check.cc
!      * [159]15296 [CRIS] Delayed branch scheduling causing invalid code on
         cris-*
!      * [160]15396 [SH] ICE with -O2 -fPIC
!      * [161]15782 [coldfire] m68k_output_mi_thunk emits wrong code for
         ColdFire
  
      Testsuite problems (compiler not affected)
  
!      * [162]11610 libstdc++ testcases 27_io/* don't work properly remotely
!      * [163]15488 (libstdc++) possibly insufficient file permissions for
         executing test suite
!      * [164]15489 (libstdc++) testsuite_files determined incorrectly
  
      Documentation bugs
  
!      * [165]13928 (libstdc++) no whatis info in some man pages generated
         by doxygen
!      * [166]14150 Ada documentation out of date
!      * [167]14949 (c++) Need to document method visibility changes
!      * [168]15123 libstdc++-doc: Allocators.3 manpage is empty
       __________________________________________________________________
  
  GCC 3.4.2
*************** GCC 3.4.2
*** 9990,10305 ****
  
      Bootstrap failures and issues
  
!      * [170]16469 [mips-sgi-irix5.3] bootstrap fails in
         libstdc++-v3/testsuite
!      * [171]16344 [hppa-linux-gnu] libstdc++'s PCH built by
         profiledbootstrap does not work with the built compiler
!      * [172]16842 [Solaris/x86] mkheaders can not find mkheaders.conf
  
      Multi-platform internal compiler errors (ICEs)
  
!      * [173]12608 (c++) ICE: expected class 't', have 'x' (error_mark) in
         cp_parser_class_specifier, in cp/parser.c
!      * [174]14492 ICE in loc_descriptor_from_tree, in dwarf2out.c
!      * [175]15461 (c++) ICE due to NRV and inlining
!      * [176]15890 (c++) ICE in c_expand_expr, in c-common.c
!      * [177]16180 ICE: segmentation fault in RTL optimization
!      * [178]16224 (c++) ICE in write_unscoped_name (template/namespace)
!      * [179]16408 ICE: in delete_insn, in cfgrtl.c
!      * [180]16529 (c++) ICE for: namespace-alias shall not be declared as
         the name of any other entity
!      * [181]16698 (c++) ICE with exceptions and declaration of __cxa_throw
!      * [182]16706 (c++) ICE in finish_member_declaration, in
         cp/semantics.c
!      * [183]16810 (c++) Legal C++ program with cast gives ICE in
         build_ptrmemfunc
!      * [184]16851 (c++) ICE when throwing a comma expression
!      * [185]16870 (c++) Boost.Spirit causes ICE in tsubst, in cp/pt.c
!      * [186]16904 (c++) ICE in finish_class_member_access_expr, in
         cp/typeck.c
!      * [187]16905 (c++) ICE (segfault) with exceptions
!      * [188]16964 (c++) ICE in cp_parser_class_specifier due to
         redefinition
!      * [189]17068 (c++) ICE: tree check: expected class 'd', have 'x'
         (identifier_node) in dependent_template_p, in cp/pt.c
  
      Preprocessor bugs
  
!      * [190]16366 Preprocessor option -remap causes memory corruption
  
      Optimization
  
!      * [191]15345 unreferenced nested inline functions not optimized away
!      * [192]16590 Incorrect execution when compiling with -O2
!      * [193]16693 Bitwise AND is lost when used within a cast to an enum
         of the same precision
!      * [194]17078 Jump into if(0) substatement fails
  
      Problems in generated debug information
  
!      * [195]13956 incorrect stabs for nested local variables
  
      C front end bugs
  
!      * [196]16684 GCC should not warn about redundant redeclarations of
         built-ins
  
      C++ compiler and library
  
!      * [197]12658 Thread safety problems in locale::global() and
         locale::locale()
!      * [198]13092 g++ accepts invalid pointer-to-member conversion
!      * [199]15320 Excessive memory consumption
!      * [200]16246 Incorrect template argument deduction
!      * [201]16273 Memory exhausted when using nested classes and virtual
         functions
!      * [202]16401 ostringstream in gcc 3.4.x very slow for big data
!      * [203]16411 undefined reference to
         __gnu_cxx::stdio_sync_filebuf<char, std::char_traits<char>
         >::file()
!      * [204]16489 G++ incorrectly rejects use of a null constant integral
         expression as a null constant pointer
!      * [205]16618 offsetof fails with constant member
!      * [206]16637 syntax error reported for valid input code
!      * [207]16717 __attribute__((constructor)) broken in C++
!      * [208]16813 compiler error in DEBUG version of range insertion
         std::map::insert
!      * [209]16853 pointer-to-member initialization from incompatible one
         accepted
!      * [210]16889 ambiguity is not detected
!      * [211]16959 Segmentation fault in ios_base::sync_with_stdio
  
      Java compiler and library
  
!      * [212]7587 direct threaded interpreter not thread-safe
!      * [213]16473 ServerSocket accept() leaks file descriptors
!      * [214]16478 Hash synchronization deadlock with finalizers
  
      Alpha-specific
  
!      * [215]10695 ICE in dwarf2out_frame_debug_expr, in dwarf2out.c
!      * [216]16974 could not split insn (ice in final_scan_insn, in
         final.c)
  
      x86-specific
  
!      * [217]16298 ICE in output_operand
!      * [218]17113 ICE with SSE2 intrinsics
  
      x86-64 specific
  
!      * [219]14697 libstdc++ couldn't find 32bit libgcc_s
  
      MIPS-specific
  
!      * [220]15869 [mips64] No NOP after LW (with -mips1 -O0)
!      * [221]16325 [mips64] value profiling clobbers gp on mips
!      * [222]16357 [mipsisa64-elf] ICE copying 7 bytes between extern
         char[]s
!      * [223]16380 [mips64] Use of uninitialised register after dbra
         conversion
!      * [224]16407 [mips64] Unaligned access to local variables
!      * [225]16643 [mips64] verify_local_live_at_start ICE after
         crossjumping & cfgcleanup
  
      ARM-specific
  
!      * [226]15927 THUMB -O2: strength-reduced iteration variable ends up
         off by 1
!      * [227]15948 THUMB: ICE with non-commutative cbranch
!      * [228]17019 THUMB: bad switch statement in md code for
         addsi3_cbranch_scratch
  
      IA64-specific
  
!      * [229]16130 ICE on valid code: in bundling, in config/ia64/ia64.c
         (-mtune=merced)
!      * [230]16142 ICE on valid code: in bundling, in config/ia64/ia64.c
         (-mtune=itanium)
!      * [231]16278 Gcc failed to build Linux kernel with -mtune=merced
!      * [232]16414 ICE on valid code: typo in comparison of asm_noperands
         result
!      * [233]16445 ICE on valid code: don't count ignored insns
!      * [234]16490 ICE (segfault) while compiling with -fprofile-use
!      * [235]16683 ia64 does not honor SUBTARGET_EXTRA_SPECS
  
      PowerPC-specific
  
!      * [236]16195 (ppc64): Miscompilation of GCC 3.3.x by 3.4.x
!      * [237]16239 ICE on ppc64 (mozilla 1.7 compile, -O1 -fno-exceptions
         issue)
  
      SPARC-specific
  
!      * [238]16199 ICE while compiling apache 2.0.49
!      * [239]16416 -m64 doesn't imply -mcpu=v9 anymore
!      * [240]16430 ICE when returning non-C aggregates larger than 16 bytes
  
      Bugs specific to embedded processors
  
!      * [241]16379 [m32r] can't output large model function call of memcpy
!      * [242]17093 [m32r] ICE with -msdata=use -O0
!      * [243]17119 [m32r] ICE at switch case 0x8000
  
      DJGPP-specific
  
!      * [244]15928 libstdc++ in 3.4.x doesn't cross-compile for djgpp
  
      Alpha Tru64-specific
  
!      * [245]16210 libstdc++ gratuitously omits "long long" I/O
  
      Testsuite, documentation issues (compiler is not affected):
  
!      * [246]15488 (libstdc++) possibly insufficient file permissions for
         executing test suite
!      * [247]16250 ada/doctools runs makeinfo even in release tarball
       __________________________________________________________________
  
  GCC 3.4.3
  
!    This is the [248]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 3.4.3 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
      Bootstrap failures
  
!      * [249]17369 [ia64] Bootstrap failure with binutils-2.15.90.0.1.1
!      * [250]17850 [arm-elf] bootstrap failure - libstdc++ uses strtold
         when undeclared
  
      Internal compiler errors (ICEs) affecting multiple platforms
  
!      * [251]13948 (java) GCJ segmentation fault while compiling GL4Java
         .class files
!      * [252]14492 ICE in loc_descriptor_from_tree, in dwarf2out.c
!      * [253]16301 (c++) ICE when "strong" attribute is attached to a using
         directive
!      * [254]16566 ICE with flexible arrays
!      * [255]17023 ICE with nested functions in parameter declaration
!      * [256]17027 ICE with noreturn function in loop at -O2
!      * [257]17524 ICE in grokdeclarator, in cp/decl.c
!      * [258]17826 (c++) ICE in cp_tree_equal
  
      C and optimization bugs
  
!      * [259]15526 -ftrapv aborts on 0 * (-1)
!      * [260]16999 #ident stopped working
!      * [261]17503 quadratic behaviour in invalid_mode_change_p
!      * [262]17581 Long long arithmetic fails inside a switch/case
         statement when compiled with -O2
!      * [263]18129 -fwritable-strings doesn't work
  
      C++ compiler and library bugs
  
!      * [264]10975 incorrect initial ostringstream::tellp()
!      * [265]11722 Unbuffered filebuf::sgetn is slow
!      * [266]14534 Unrecognizing static function as a template parameter
         when its return value is also templated
!      * [267]15172 Copy constructor optimization in aggregate
         initialization
!      * [268]15786 Bad error message for frequently occuring error.
!      * [269]16162 Rejects valid member-template-definition
!      * [270]16612 empty basic_strings can't live in shared memory
!      * [271]16715 std::basic_iostream is instantiated when used, even
         though instantiations are already contained in libstdc++
!      * [272]16848 code in /ext/demangle.h appears broken
!      * [273]17132 GCC fails to eliminate function template specialization
         when argument deduction fails
!      * [274]17259 One more _S_leaf incorrectly qualified with _RopeRep::
         in ropeimpl.h
!      * [275]17327 use of `enumeral_type' in template type unification
!      * [276]17393 "unused variable '._0'" warning with -Wall
!      * [277]17501 Confusion with member templates
!      * [278]17537 g++ not passing -lstdc++ to linker when all command line
         arguments are libraries
!      * [279]17585 usage of unqualified name of static member from within
         class not allowed
!      * [280]17821 Poor diagnostic for using "." instead of "->"
!      * [281]17829 wrong error: call of overloaded function is ambiguous
!      * [282]17851 Misleading diagnostic for invalid function declarations
         with undeclared types
!      * [283]17976 Destructor is called twice
!      * [284]18020 rejects valid definition of enum value in template
!      * [285]18093 bogus conflict in namespace aliasing
!      * [286]18140 C++ parser bug when using >> in templates
  
      Fortran
  
!      * [287]17541 data statements with double precision constants fail
  
      x86-specific
  
!      * [288]17853 -O2 ICE for MMX testcase
  
      SPARC-specific
  
!      * [289]17245 ICE compiling gsl-1.5 statistics/lag1.c
  
      Darwin-specific
  
!      * [290]17167 FATAL:Symbol L_foo$stub already defined.
  
      AIX-specific
  
!      * [291]17277 could not catch an exception when specified -maix64
  
      Solaris-specific
  
!      * [292]17505 <cmath> calls acosf(), ceilf(), and other functions
         missing from system libraries
  
      HP/UX specific:
  
!      * [293]17684 /usr/ccs/bin/ld: Can't create libgcc_s.sl
  
      ARM-specific
  
!      * [294]17384 ICE with mode attribute on structures
  
      MIPS-specific
  
!      * [295]17770 No NOP after LWL with -mips1
  
      Other embedded target specific
  
!      * [296]11476 [arc-elf] gcc ICE on newlib's vfprintf.c
!      * [297]14064 [avr-elf] -fdata-sections triggers ICE
!      * [298]14678 [m68hc11-elf] gcc ICE
!      * [299]15583 [powerpc-rtems] powerpc-rtems lacks __USE_INIT_FINI__
!      * [300]15790 [i686-coff] Alignment error building gcc with i686-coff
         target
!      * [301]15886 [SH] Miscompilation with -O2 -fPIC
!      * [302]16884 [avr-elf] [fweb related] bug while initializing
         variables
  
      Bugs relating to debugger support
  
!      * [303]13841 missing debug info for _Complex function arguments
!      * [304]15860 [big-endian targets] No DW_AT_location debug info is
         emitted for formal arguments to a function that uses "register"
         qualifiers
  
      Testsuite issues (compiler not affected)
  
!      * [305]17465 Testsuite in libffi overrides LD_LIBRARY_PATH
!      * [306]17469 Testsuite in libstdc++ overrides LD_LIBRARY_PATH
!      * [307]18138 [mips-sgi-irix6.5] libgcc_s.so.1 not found by 64-bit
         testsuite
  
      Documentation
  
!      * [308]15498 typo in gcc manual: non-existing locale example en_UK,
         should be en_GB
!      * [309]15747 [mips-sgi-irix5.3] /bin/sh hangs during bootstrap:
         document broken shell
!      * [310]16406 USE_LD_AS_NEEDED undocumented
       __________________________________________________________________
  
  GCC 3.4.4
  
!    This is the [311]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 3.4.4 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
--- 10025,10340 ----
  
      Bootstrap failures and issues
  
!      * [169]16469 [mips-sgi-irix5.3] bootstrap fails in
         libstdc++-v3/testsuite
!      * [170]16344 [hppa-linux-gnu] libstdc++'s PCH built by
         profiledbootstrap does not work with the built compiler
!      * [171]16842 [Solaris/x86] mkheaders can not find mkheaders.conf
  
      Multi-platform internal compiler errors (ICEs)
  
!      * [172]12608 (c++) ICE: expected class 't', have 'x' (error_mark) in
         cp_parser_class_specifier, in cp/parser.c
!      * [173]14492 ICE in loc_descriptor_from_tree, in dwarf2out.c
!      * [174]15461 (c++) ICE due to NRV and inlining
!      * [175]15890 (c++) ICE in c_expand_expr, in c-common.c
!      * [176]16180 ICE: segmentation fault in RTL optimization
!      * [177]16224 (c++) ICE in write_unscoped_name (template/namespace)
!      * [178]16408 ICE: in delete_insn, in cfgrtl.c
!      * [179]16529 (c++) ICE for: namespace-alias shall not be declared as
         the name of any other entity
!      * [180]16698 (c++) ICE with exceptions and declaration of __cxa_throw
!      * [181]16706 (c++) ICE in finish_member_declaration, in
         cp/semantics.c
!      * [182]16810 (c++) Legal C++ program with cast gives ICE in
         build_ptrmemfunc
!      * [183]16851 (c++) ICE when throwing a comma expression
!      * [184]16870 (c++) Boost.Spirit causes ICE in tsubst, in cp/pt.c
!      * [185]16904 (c++) ICE in finish_class_member_access_expr, in
         cp/typeck.c
!      * [186]16905 (c++) ICE (segfault) with exceptions
!      * [187]16964 (c++) ICE in cp_parser_class_specifier due to
         redefinition
!      * [188]17068 (c++) ICE: tree check: expected class 'd', have 'x'
         (identifier_node) in dependent_template_p, in cp/pt.c
  
      Preprocessor bugs
  
!      * [189]16366 Preprocessor option -remap causes memory corruption
  
      Optimization
  
!      * [190]15345 unreferenced nested inline functions not optimized away
!      * [191]16590 Incorrect execution when compiling with -O2
!      * [192]16693 Bitwise AND is lost when used within a cast to an enum
         of the same precision
!      * [193]17078 Jump into if(0) substatement fails
  
      Problems in generated debug information
  
!      * [194]13956 incorrect stabs for nested local variables
  
      C front end bugs
  
!      * [195]16684 GCC should not warn about redundant redeclarations of
         built-ins
  
      C++ compiler and library
  
!      * [196]12658 Thread safety problems in locale::global() and
         locale::locale()
!      * [197]13092 g++ accepts invalid pointer-to-member conversion
!      * [198]15320 Excessive memory consumption
!      * [199]16246 Incorrect template argument deduction
!      * [200]16273 Memory exhausted when using nested classes and virtual
         functions
!      * [201]16401 ostringstream in gcc 3.4.x very slow for big data
!      * [202]16411 undefined reference to
         __gnu_cxx::stdio_sync_filebuf<char, std::char_traits<char>
         >::file()
!      * [203]16489 G++ incorrectly rejects use of a null constant integral
         expression as a null constant pointer
!      * [204]16618 offsetof fails with constant member
!      * [205]16637 syntax error reported for valid input code
!      * [206]16717 __attribute__((constructor)) broken in C++
!      * [207]16813 compiler error in DEBUG version of range insertion
         std::map::insert
!      * [208]16853 pointer-to-member initialization from incompatible one
         accepted
!      * [209]16889 ambiguity is not detected
!      * [210]16959 Segmentation fault in ios_base::sync_with_stdio
  
      Java compiler and library
  
!      * [211]7587 direct threaded interpreter not thread-safe
!      * [212]16473 ServerSocket accept() leaks file descriptors
!      * [213]16478 Hash synchronization deadlock with finalizers
  
      Alpha-specific
  
!      * [214]10695 ICE in dwarf2out_frame_debug_expr, in dwarf2out.c
!      * [215]16974 could not split insn (ice in final_scan_insn, in
         final.c)
  
      x86-specific
  
!      * [216]16298 ICE in output_operand
!      * [217]17113 ICE with SSE2 intrinsics
  
      x86-64 specific
  
!      * [218]14697 libstdc++ couldn't find 32bit libgcc_s
  
      MIPS-specific
  
!      * [219]15869 [mips64] No NOP after LW (with -mips1 -O0)
!      * [220]16325 [mips64] value profiling clobbers gp on mips
!      * [221]16357 [mipsisa64-elf] ICE copying 7 bytes between extern
         char[]s
!      * [222]16380 [mips64] Use of uninitialised register after dbra
         conversion
!      * [223]16407 [mips64] Unaligned access to local variables
!      * [224]16643 [mips64] verify_local_live_at_start ICE after
         crossjumping & cfgcleanup
  
      ARM-specific
  
!      * [225]15927 THUMB -O2: strength-reduced iteration variable ends up
         off by 1
!      * [226]15948 THUMB: ICE with non-commutative cbranch
!      * [227]17019 THUMB: bad switch statement in md code for
         addsi3_cbranch_scratch
  
      IA64-specific
  
!      * [228]16130 ICE on valid code: in bundling, in config/ia64/ia64.c
         (-mtune=merced)
!      * [229]16142 ICE on valid code: in bundling, in config/ia64/ia64.c
         (-mtune=itanium)
!      * [230]16278 Gcc failed to build Linux kernel with -mtune=merced
!      * [231]16414 ICE on valid code: typo in comparison of asm_noperands
         result
!      * [232]16445 ICE on valid code: don't count ignored insns
!      * [233]16490 ICE (segfault) while compiling with -fprofile-use
!      * [234]16683 ia64 does not honor SUBTARGET_EXTRA_SPECS
  
      PowerPC-specific
  
!      * [235]16195 (ppc64): Miscompilation of GCC 3.3.x by 3.4.x
!      * [236]16239 ICE on ppc64 (mozilla 1.7 compile, -O1 -fno-exceptions
         issue)
  
      SPARC-specific
  
!      * [237]16199 ICE while compiling apache 2.0.49
!      * [238]16416 -m64 doesn't imply -mcpu=v9 anymore
!      * [239]16430 ICE when returning non-C aggregates larger than 16 bytes
  
      Bugs specific to embedded processors
  
!      * [240]16379 [m32r] can't output large model function call of memcpy
!      * [241]17093 [m32r] ICE with -msdata=use -O0
!      * [242]17119 [m32r] ICE at switch case 0x8000
  
      DJGPP-specific
  
!      * [243]15928 libstdc++ in 3.4.x doesn't cross-compile for djgpp
  
      Alpha Tru64-specific
  
!      * [244]16210 libstdc++ gratuitously omits "long long" I/O
  
      Testsuite, documentation issues (compiler is not affected):
  
!      * [245]15488 (libstdc++) possibly insufficient file permissions for
         executing test suite
!      * [246]16250 ada/doctools runs makeinfo even in release tarball
       __________________________________________________________________
  
  GCC 3.4.3
  
!    This is the [247]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 3.4.3 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
      Bootstrap failures
  
!      * [248]17369 [ia64] Bootstrap failure with binutils-2.15.90.0.1.1
!      * [249]17850 [arm-elf] bootstrap failure - libstdc++ uses strtold
         when undeclared
  
      Internal compiler errors (ICEs) affecting multiple platforms
  
!      * [250]13948 (java) GCJ segmentation fault while compiling GL4Java
         .class files
!      * [251]14492 ICE in loc_descriptor_from_tree, in dwarf2out.c
!      * [252]16301 (c++) ICE when "strong" attribute is attached to a using
         directive
!      * [253]16566 ICE with flexible arrays
!      * [254]17023 ICE with nested functions in parameter declaration
!      * [255]17027 ICE with noreturn function in loop at -O2
!      * [256]17524 ICE in grokdeclarator, in cp/decl.c
!      * [257]17826 (c++) ICE in cp_tree_equal
  
      C and optimization bugs
  
!      * [258]15526 -ftrapv aborts on 0 * (-1)
!      * [259]16999 #ident stopped working
!      * [260]17503 quadratic behaviour in invalid_mode_change_p
!      * [261]17581 Long long arithmetic fails inside a switch/case
         statement when compiled with -O2
!      * [262]18129 -fwritable-strings doesn't work
  
      C++ compiler and library bugs
  
!      * [263]10975 incorrect initial ostringstream::tellp()
!      * [264]11722 Unbuffered filebuf::sgetn is slow
!      * [265]14534 Unrecognizing static function as a template parameter
         when its return value is also templated
!      * [266]15172 Copy constructor optimization in aggregate
         initialization
!      * [267]15786 Bad error message for frequently occuring error.
!      * [268]16162 Rejects valid member-template-definition
!      * [269]16612 empty basic_strings can't live in shared memory
!      * [270]16715 std::basic_iostream is instantiated when used, even
         though instantiations are already contained in libstdc++
!      * [271]16848 code in /ext/demangle.h appears broken
!      * [272]17132 GCC fails to eliminate function template specialization
         when argument deduction fails
!      * [273]17259 One more _S_leaf incorrectly qualified with _RopeRep::
         in ropeimpl.h
!      * [274]17327 use of `enumeral_type' in template type unification
!      * [275]17393 "unused variable '._0'" warning with -Wall
!      * [276]17501 Confusion with member templates
!      * [277]17537 g++ not passing -lstdc++ to linker when all command line
         arguments are libraries
!      * [278]17585 usage of unqualified name of static member from within
         class not allowed
!      * [279]17821 Poor diagnostic for using "." instead of "->"
!      * [280]17829 wrong error: call of overloaded function is ambiguous
!      * [281]17851 Misleading diagnostic for invalid function declarations
         with undeclared types
!      * [282]17976 Destructor is called twice
!      * [283]18020 rejects valid definition of enum value in template
!      * [284]18093 bogus conflict in namespace aliasing
!      * [285]18140 C++ parser bug when using >> in templates
  
      Fortran
  
!      * [286]17541 data statements with double precision constants fail
  
      x86-specific
  
!      * [287]17853 -O2 ICE for MMX testcase
  
      SPARC-specific
  
!      * [288]17245 ICE compiling gsl-1.5 statistics/lag1.c
  
      Darwin-specific
  
!      * [289]17167 FATAL:Symbol L_foo$stub already defined.
  
      AIX-specific
  
!      * [290]17277 could not catch an exception when specified -maix64
  
      Solaris-specific
  
!      * [291]17505 <cmath> calls acosf(), ceilf(), and other functions
         missing from system libraries
  
      HP/UX specific:
  
!      * [292]17684 /usr/ccs/bin/ld: Can't create libgcc_s.sl
  
      ARM-specific
  
!      * [293]17384 ICE with mode attribute on structures
  
      MIPS-specific
  
!      * [294]17770 No NOP after LWL with -mips1
  
      Other embedded target specific
  
!      * [295]11476 [arc-elf] gcc ICE on newlib's vfprintf.c
!      * [296]14064 [avr-elf] -fdata-sections triggers ICE
!      * [297]14678 [m68hc11-elf] gcc ICE
!      * [298]15583 [powerpc-rtems] powerpc-rtems lacks __USE_INIT_FINI__
!      * [299]15790 [i686-coff] Alignment error building gcc with i686-coff
         target
!      * [300]15886 [SH] Miscompilation with -O2 -fPIC
!      * [301]16884 [avr-elf] [fweb related] bug while initializing
         variables
  
      Bugs relating to debugger support
  
!      * [302]13841 missing debug info for _Complex function arguments
!      * [303]15860 [big-endian targets] No DW_AT_location debug info is
         emitted for formal arguments to a function that uses "register"
         qualifiers
  
      Testsuite issues (compiler not affected)
  
!      * [304]17465 Testsuite in libffi overrides LD_LIBRARY_PATH
!      * [305]17469 Testsuite in libstdc++ overrides LD_LIBRARY_PATH
!      * [306]18138 [mips-sgi-irix6.5] libgcc_s.so.1 not found by 64-bit
         testsuite
  
      Documentation
  
!      * [307]15498 typo in gcc manual: non-existing locale example en_UK,
         should be en_GB
!      * [308]15747 [mips-sgi-irix5.3] /bin/sh hangs during bootstrap:
         document broken shell
!      * [309]16406 USE_LD_AS_NEEDED undocumented
       __________________________________________________________________
  
  GCC 3.4.4
  
!    This is the [310]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 3.4.4 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
*************** GCC 3.4.4
*** 10307,10513 ****
  
  GCC 3.4.5
  
!    This is the [312]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 3.4.5 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
      Bootstrap issues
  
!      * [313]24688 sco_math fixincl breaks math.h
  
      C compiler bugs
  
!      * [314]17188 struct Foo { } redefinition
!      * [315]20187 wrong code for ((unsigned char)(unsigned long
         long)((a?a:1)&(a*b)))?0:1)
!      * [316]21873 infinite warning loop on bad array initializer
!      * [317]21899 enum definition accepts values to be overriden
!      * [318]22061 ICE in find_function_data, in function.c
!      * [319]22308 Failure to diagnose violation of constraint 6.516p2
!      * [320]22458 ICE on missing brace
!      * [321]22589 ICE casting to long long
!      * [322]24101 Segfault with preprocessed source
  
      C++ compiler and library bugs
  
!      * [323]10611 operations on vector mode not recognized in C++
!      * [324]13377 unexpected behavior of namespace usage directive
!      * [325]16002 Strange error message with new parser
!      * [326]17413 local classes as template argument
!      * [327]17609 spurious error message after using keyword
!      * [328]17618 ICE in cp_convert_to_pointer, in cp/cvt.c
!      * [329]18124 ICE with invalid template template parameter
!      * [330]18155 typedef in template declaration not rejected
!      * [331]18177 ICE with const_cast for undeclared variable
!      * [332]18368 C++ error message regression
!      * [333]16378 ICE when returning a copy of a packed member
!      * [334]18466 int ::i; accepted
!      * [335]18512 ICE on invalid usage of template base class
!      * [336]18454 ICE when returning undefined type
!      * [337]18738 typename not allowed with non-dependent qualified name
!      * [338]18803 rejects access to operator() in template
!      * [339]19004 ICE in uses_template_parms, in cp/pt.c
!      * [340]19208 Spurious error about variably modified type
!      * [341]18253 bad error message / ICE for invalid template parameter
!      * [342]19608 ICE after friend function definition in local class
!      * [343]19884 ICE on explicit instantiation of a non-template
         constructor
!      * [344]20153 ICE when C++ template function contains anonymous union
!      * [345]20563 Infinite loop in diagnostic (and ice after error
         message)
!      * [346]20789 ICE with incomplete type in template
!      * [347]21336 Internal compiler error when using custom new operators
!      * [348]21768 ICE in error message due to violation of coding
         conventions
!      * [349]21853 constness of pointer to data member ignored
!      * [350]21903 Default argument of template function causes a
         compile-time error
!      * [351]21983 multiple diagnostics
!      * [352]21987 New testsuite failure
         g++.dg/warn/conversion-function-1.C
!      * [353]22153 ICE on invalid template specialization
!      * [354]22172 Internal compiler error, seg fault.
!      * [355]21286 filebuf::xsgetn vs pipes
!      * [356]22233 ICE with wrong number of template parameters
!      * [357]22508 ICE after invalid operator new
!      * [358]22545 ICE with pointer to class member & user defined
         conversion operator
!      * [359]23528 Wrong default allocator in ext/hash_map
!      * [360]23550 char_traits requirements/1.cc test bad math
!      * [361]23586 Bad diagnostic for invalid namespace-name
!      * [362]23624 ICE in invert_truthvalue, in fold-const.c
!      * [363]23639 Bad error message: not a member of '<declaration error>'
!      * [364]23797 ICE on typename outside template
!      * [365]23965 Bogus error message: no matching function for call to
         'foo(<type error>)'
!      * [366]24052 &#`label_decl' not supported by dump_expr#<expression
         error>
!      * [367]24580 virtual base class cause exception not to be caught
  
      Problems in generated debug information
  
!      * [368]24267 Bad DWARF for altivec vectors
  
      Optimizations issues
  
!      * [369]17810 ICE in verify_local_live_at_start
!      * [370]17860 Wrong generated code for loop with varying bound
!      * [371]21709 ICE on compile-time complex NaN
!      * [372]21964 broken tail call at -O2 or more
!      * [373]22167 Strange optimization bug when using -Os
!      * [374]22619 Compilation failure for real_const_1.f and
         real_const_2.f90
!      * [375]23241 Invalid code generated for comparison of uchar to 255
!      * [376]23478 Miscompilation due to reloading of a var that is also
         used in EH pad
!      * [377]24470 segmentation fault in cc1plus when compiling with -O
!      * [378]24950 ICE in operand_subword_force
  
      Precompiled headers problems
  
!      * [379]14400 Cannot compile qt-x11-free-3.3.0
!      * [380]14940 PCH largefile test fails on various platforms
  
      Preprocessor bugs
  
!      * [381]20239 ICE on empty preprocessed input
!      * [382]15220 "gcc -E -MM -MG" reports missing system headers in
         source directory
  
      Testsuite issues
  
!      * [383]19275 gcc.dg/20020919-1.c fails with -fpic/-fPIC on
         i686-pc-linux-gnu
  
      Alpha specific
  
!      * [384]21888 bootstrap failure with linker relaxation enabled
  
      ARM specific
  
!      * [385]15342 [arm-linux]: ICE in verify_local_live_at_start
!      * [386]23985 Memory aliasing information incorrect in inlined memcpy
  
      ColdFile specific
  
!      * [387]16719 Illegal move of byte into address register causes
         compiler to ICE
  
      HPPA specific
  
!      * [388]21723 ICE while building libgfortran
!      * [389]21841 -mhp-ld/-mgnu-ld documentation
  
      IA-64 specific
  
!      * [390]23644 IA-64 hardware models and configuration options
         documentation error
!      * [391]24718 Shared libgcc not used for linking by default
  
      M68000 specific
  
!      * [392]18421 ICE in reload_cse_simplify_operands, in postreload.c
  
      MIPS specific
  
!      * [393]20621 ICE in change_address_1, in emit-rtl.c
  
      PowerPC and PowerPC64 specific
  
!      * [394]18583 error on valid code: const
         __attribute__((altivec(vector__))) doesn't work in arrays
!      * [395]20191 ICE in reload_cse_simplify_operands
!      * [396]22083 AIX: TARGET_C99_FUNCTIONS is wrongly defined
!      * [397]23070 CALL_V4_CLEAR_FP_ARGS flag not properly set
!      * [398]23404 gij trashes args of functions with more than 8 fp args
!      * [399]23539 C & C++ compiler generating misaligned references
         regardless of compiler flags
!      * [400]24102 floatdisf2_internal2 broken
!      * [401]24465 -mminimal-toc miscompilation of __thread vars
  
      Solaris specific
  
!      * [402]19933 Problem with define of HUGE_VAL in math_c99
!      * [403]21889 Native Solaris assembler cannot grok DTP-relative debug
         symbols
  
      SPARC specific
  
!      * [404]19300 PCH failures on sparc-linux
!      * [405]20301 Assembler labels have a leading "-"
!      * [406]20673 C PCH testsuite assembly comparison failure
  
      x86 and x86_64 specific
  
!      * [407]18582 ICE with arrays of type V2DF
!      * [408]19340 Compilation SEGFAULTs with -O1 -fschedule-insns2
         -fsched2-use-traces
!      * [409]21716 ICE in reg-stack.c's swap_rtx_condition
!      * [410]24315 amd64 fails -fpeephole2
       __________________________________________________________________
  
  GCC 3.4.6
  
!    This is the [411]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 3.4.6 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 [412]GCC manuals. If that fails, the
!     [413]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 [414]gcc@gcc.gnu.org. All of [415]our lists have public
      archives.
  
!    Copyright (C) [416]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 [417]maintained by the GCC team. Last modified
!    2016-01-30[418].
  
  References
  
--- 10342,10548 ----
  
  GCC 3.4.5
  
!    This is the [311]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 3.4.5 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
      Bootstrap issues
  
!      * [312]24688 sco_math fixincl breaks math.h
  
      C compiler bugs
  
!      * [313]17188 struct Foo { } redefinition
!      * [314]20187 wrong code for ((unsigned char)(unsigned long
         long)((a?a:1)&(a*b)))?0:1)
!      * [315]21873 infinite warning loop on bad array initializer
!      * [316]21899 enum definition accepts values to be overriden
!      * [317]22061 ICE in find_function_data, in function.c
!      * [318]22308 Failure to diagnose violation of constraint 6.516p2
!      * [319]22458 ICE on missing brace
!      * [320]22589 ICE casting to long long
!      * [321]24101 Segfault with preprocessed source
  
      C++ compiler and library bugs
  
!      * [322]10611 operations on vector mode not recognized in C++
!      * [323]13377 unexpected behavior of namespace usage directive
!      * [324]16002 Strange error message with new parser
!      * [325]17413 local classes as template argument
!      * [326]17609 spurious error message after using keyword
!      * [327]17618 ICE in cp_convert_to_pointer, in cp/cvt.c
!      * [328]18124 ICE with invalid template template parameter
!      * [329]18155 typedef in template declaration not rejected
!      * [330]18177 ICE with const_cast for undeclared variable
!      * [331]18368 C++ error message regression
!      * [332]16378 ICE when returning a copy of a packed member
!      * [333]18466 int ::i; accepted
!      * [334]18512 ICE on invalid usage of template base class
!      * [335]18454 ICE when returning undefined type
!      * [336]18738 typename not allowed with non-dependent qualified name
!      * [337]18803 rejects access to operator() in template
!      * [338]19004 ICE in uses_template_parms, in cp/pt.c
!      * [339]19208 Spurious error about variably modified type
!      * [340]18253 bad error message / ICE for invalid template parameter
!      * [341]19608 ICE after friend function definition in local class
!      * [342]19884 ICE on explicit instantiation of a non-template
         constructor
!      * [343]20153 ICE when C++ template function contains anonymous union
!      * [344]20563 Infinite loop in diagnostic (and ice after error
         message)
!      * [345]20789 ICE with incomplete type in template
!      * [346]21336 Internal compiler error when using custom new operators
!      * [347]21768 ICE in error message due to violation of coding
         conventions
!      * [348]21853 constness of pointer to data member ignored
!      * [349]21903 Default argument of template function causes a
         compile-time error
!      * [350]21983 multiple diagnostics
!      * [351]21987 New testsuite failure
         g++.dg/warn/conversion-function-1.C
!      * [352]22153 ICE on invalid template specialization
!      * [353]22172 Internal compiler error, seg fault.
!      * [354]21286 filebuf::xsgetn vs pipes
!      * [355]22233 ICE with wrong number of template parameters
!      * [356]22508 ICE after invalid operator new
!      * [357]22545 ICE with pointer to class member & user defined
         conversion operator
!      * [358]23528 Wrong default allocator in ext/hash_map
!      * [359]23550 char_traits requirements/1.cc test bad math
!      * [360]23586 Bad diagnostic for invalid namespace-name
!      * [361]23624 ICE in invert_truthvalue, in fold-const.c
!      * [362]23639 Bad error message: not a member of '<declaration error>'
!      * [363]23797 ICE on typename outside template
!      * [364]23965 Bogus error message: no matching function for call to
         'foo(<type error>)'
!      * [365]24052 &#`label_decl' not supported by dump_expr#<expression
         error>
!      * [366]24580 virtual base class cause exception not to be caught
  
      Problems in generated debug information
  
!      * [367]24267 Bad DWARF for altivec vectors
  
      Optimizations issues
  
!      * [368]17810 ICE in verify_local_live_at_start
!      * [369]17860 Wrong generated code for loop with varying bound
!      * [370]21709 ICE on compile-time complex NaN
!      * [371]21964 broken tail call at -O2 or more
!      * [372]22167 Strange optimization bug when using -Os
!      * [373]22619 Compilation failure for real_const_1.f and
         real_const_2.f90
!      * [374]23241 Invalid code generated for comparison of uchar to 255
!      * [375]23478 Miscompilation due to reloading of a var that is also
         used in EH pad
!      * [376]24470 segmentation fault in cc1plus when compiling with -O
!      * [377]24950 ICE in operand_subword_force
  
      Precompiled headers problems
  
!      * [378]14400 Cannot compile qt-x11-free-3.3.0
!      * [379]14940 PCH largefile test fails on various platforms
  
      Preprocessor bugs
  
!      * [380]20239 ICE on empty preprocessed input
!      * [381]15220 "gcc -E -MM -MG" reports missing system headers in
         source directory
  
      Testsuite issues
  
!      * [382]19275 gcc.dg/20020919-1.c fails with -fpic/-fPIC on
         i686-pc-linux-gnu
  
      Alpha specific
  
!      * [383]21888 bootstrap failure with linker relaxation enabled
  
      ARM specific
  
!      * [384]15342 [arm-linux]: ICE in verify_local_live_at_start
!      * [385]23985 Memory aliasing information incorrect in inlined memcpy
  
      ColdFile specific
  
!      * [386]16719 Illegal move of byte into address register causes
         compiler to ICE
  
      HPPA specific
  
!      * [387]21723 ICE while building libgfortran
!      * [388]21841 -mhp-ld/-mgnu-ld documentation
  
      IA-64 specific
  
!      * [389]23644 IA-64 hardware models and configuration options
         documentation error
!      * [390]24718 Shared libgcc not used for linking by default
  
      M68000 specific
  
!      * [391]18421 ICE in reload_cse_simplify_operands, in postreload.c
  
      MIPS specific
  
!      * [392]20621 ICE in change_address_1, in emit-rtl.c
  
      PowerPC and PowerPC64 specific
  
!      * [393]18583 error on valid code: const
         __attribute__((altivec(vector__))) doesn't work in arrays
!      * [394]20191 ICE in reload_cse_simplify_operands
!      * [395]22083 AIX: TARGET_C99_FUNCTIONS is wrongly defined
!      * [396]23070 CALL_V4_CLEAR_FP_ARGS flag not properly set
!      * [397]23404 gij trashes args of functions with more than 8 fp args
!      * [398]23539 C & C++ compiler generating misaligned references
         regardless of compiler flags
!      * [399]24102 floatdisf2_internal2 broken
!      * [400]24465 -mminimal-toc miscompilation of __thread vars
  
      Solaris specific
  
!      * [401]19933 Problem with define of HUGE_VAL in math_c99
!      * [402]21889 Native Solaris assembler cannot grok DTP-relative debug
         symbols
  
      SPARC specific
  
!      * [403]19300 PCH failures on sparc-linux
!      * [404]20301 Assembler labels have a leading "-"
!      * [405]20673 C PCH testsuite assembly comparison failure
  
      x86 and x86_64 specific
  
!      * [406]18582 ICE with arrays of type V2DF
!      * [407]19340 Compilation SEGFAULTs with -O1 -fschedule-insns2
         -fsched2-use-traces
!      * [408]21716 ICE in reg-stack.c's swap_rtx_condition
!      * [409]24315 amd64 fails -fpeephole2
       __________________________________________________________________
  
  GCC 3.4.6
  
!    This is the [410]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 3.4.6 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 [411]GCC manuals. If that fails, the
!     [412]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 [413]gcc@gcc.gnu.org. All of [414]our lists have public
      archives.
  
!    Copyright (C) [415]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 [416]maintained by the GCC team. Last modified
!    2016-12-30[417].
  
  References
  
*************** References
*** 10520,10526 ****
     7. http://www.boost.org/
     8. https://gcc.gnu.org/PR11953
     9. https://gcc.gnu.org/PR8361
!   10. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Other-Builtins.html#Other%20Builtins
    11. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#209
    12. http://gcc.gnu.org/bugs/#cxx_rvalbind
    13. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Objective-C-Dialect-Options.html
--- 10555,10561 ----
     7. http://www.boost.org/
     8. https://gcc.gnu.org/PR11953
     9. https://gcc.gnu.org/PR8361
!   10. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Other-Builtins.html#Other Builtins
    11. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#209
    12. http://gcc.gnu.org/bugs/#cxx_rvalbind
    13. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Objective-C-Dialect-Options.html
*************** References
*** 10530,10937 ****
    17. http://www.eclipse.org/
    18. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/g77/News.html
    19. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Alpha-Built-in-Functions.html
!   20. http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51A_HTML/ARH9MBTE/DTMNPLTN.HTM#normal-argument-list-structure
!   21. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gccint/Processor-pipeline-description.html
!   22. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gccint/Comparison-of-the-two-descriptions.html
!   23. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gccint/Processor-pipeline-description.html
!   24. http://gcc.gnu.org/gcc-3.4/mips-abi.html
!   25. http://gcc.gnu.org/gcc-3.4/powerpc-abi.html
!   26. http://gcc.gnu.org/gcc-3.4/sparc-abi.html
!   27. https://gcc.gnu.org/bugzilla/buglist.cgi?short_desc_type=notregexp&short_desc=%5C%5B3%5C.4.*%5BRr%5Degression&target_milestone=3.4.0&bug_status=RESOLVED&resolution=FIXED
!   28. https://gcc.gnu.org/PR10129
!   29. https://gcc.gnu.org/PR14576
!   30. https://gcc.gnu.org/PR14760
!   31. https://gcc.gnu.org/PR14671
!   32. https://gcc.gnu.org/PR15093
!   33. https://gcc.gnu.org/PR15178
!   34. https://gcc.gnu.org/PR12753
!   35. https://gcc.gnu.org/PR13985
!   36. https://gcc.gnu.org/PR14810
!   37. https://gcc.gnu.org/PR14883
!   38. https://gcc.gnu.org/PR15044
!   39. https://gcc.gnu.org/PR15057
!   40. https://gcc.gnu.org/PR15064
!   41. https://gcc.gnu.org/PR15142
!   42. https://gcc.gnu.org/PR15159
!   43. https://gcc.gnu.org/PR15165
!   44. https://gcc.gnu.org/PR15193
!   45. https://gcc.gnu.org/PR15209
!   46. https://gcc.gnu.org/PR15227
!   47. https://gcc.gnu.org/PR15285
!   48. https://gcc.gnu.org/PR15299
!   49. https://gcc.gnu.org/PR15329
!   50. https://gcc.gnu.org/PR15550
!   51. https://gcc.gnu.org/PR15554
!   52. https://gcc.gnu.org/PR15640
!   53. https://gcc.gnu.org/PR15666
!   54. https://gcc.gnu.org/PR15696
!   55. https://gcc.gnu.org/PR15701
!   56. https://gcc.gnu.org/PR15761
!   57. https://gcc.gnu.org/PR15829
!   58. https://gcc.gnu.org/PR14538
!   59. https://gcc.gnu.org/PR12391
!   60. https://gcc.gnu.org/PR14649
!   61. https://gcc.gnu.org/PR15004
!   62. https://gcc.gnu.org/PR15749
!   63. https://gcc.gnu.org/PR10646
!   64. https://gcc.gnu.org/PR12077
!   65. https://gcc.gnu.org/PR13598
!   66. https://gcc.gnu.org/PR14211
!   67. https://gcc.gnu.org/PR14220
!   68. https://gcc.gnu.org/PR14245
!   69. https://gcc.gnu.org/PR14340
!   70. https://gcc.gnu.org/PR14600
!   71. https://gcc.gnu.org/PR14668
!   72. https://gcc.gnu.org/PR14775
!   73. https://gcc.gnu.org/PR14821
!   74. https://gcc.gnu.org/PR14930
!   75. https://gcc.gnu.org/PR14932
!   76. https://gcc.gnu.org/PR14950
!   77. https://gcc.gnu.org/PR14962
!   78. https://gcc.gnu.org/PR14975
!   79. https://gcc.gnu.org/PR15002
!   80. https://gcc.gnu.org/PR15025
!   81. https://gcc.gnu.org/PR15046
!   82. https://gcc.gnu.org/PR15069
!   83. https://gcc.gnu.org/PR15074
!   84. https://gcc.gnu.org/PR15083
!   85. https://gcc.gnu.org/PR15096
!   86. https://gcc.gnu.org/PR15287
!   87. https://gcc.gnu.org/PR15317
!   88. https://gcc.gnu.org/PR15337
!   89. https://gcc.gnu.org/PR15361
!   90. https://gcc.gnu.org/PR15412
!   91. https://gcc.gnu.org/PR15427
!   92. https://gcc.gnu.org/PR15471
!   93. https://gcc.gnu.org/PR15503
!   94. https://gcc.gnu.org/PR15507
!   95. https://gcc.gnu.org/PR15542
!   96. https://gcc.gnu.org/PR15565
!   97. https://gcc.gnu.org/PR15625
!   98. https://gcc.gnu.org/PR15629
!   99. https://gcc.gnu.org/PR15742
!  100. https://gcc.gnu.org/PR15775
!  101. https://gcc.gnu.org/PR15821
!  102. https://gcc.gnu.org/PR15862
!  103. https://gcc.gnu.org/PR15875
!  104. https://gcc.gnu.org/PR15877
!  105. https://gcc.gnu.org/PR15947
!  106. https://gcc.gnu.org/PR16020
!  107. https://gcc.gnu.org/PR16154
!  108. https://gcc.gnu.org/PR16174
!  109. https://gcc.gnu.org/PR14315
!  110. https://gcc.gnu.org/PR15151
!  111. https://gcc.gnu.org/PR7993
!  112. https://gcc.gnu.org/PR15228
!  113. https://gcc.gnu.org/PR15345
!  114. https://gcc.gnu.org/PR15945
!  115. https://gcc.gnu.org/PR15526
!  116. https://gcc.gnu.org/PR14690
!  117. https://gcc.gnu.org/PR15112
!  118. https://gcc.gnu.org/PR15067
!  119. https://gcc.gnu.org/PR1963
!  120. https://gcc.gnu.org/PR15717
!  121. https://gcc.gnu.org/PR14782
!  122. https://gcc.gnu.org/PR14828
!  123. https://gcc.gnu.org/PR15202
!  124. https://gcc.gnu.org/PR14610
!  125. https://gcc.gnu.org/PR14813
!  126. https://gcc.gnu.org/PR14857
!  127. https://gcc.gnu.org/PR15598
!  128. https://gcc.gnu.org/PR15653
!  129. https://gcc.gnu.org/PR15189
!  130. https://gcc.gnu.org/PR15331
!  131. https://gcc.gnu.org/PR16144
!  132. https://gcc.gnu.org/PR16176
!  133. https://gcc.gnu.org/PR11591
!  134. https://gcc.gnu.org/PR12028
!  135. https://gcc.gnu.org/PR14478
!  136. https://gcc.gnu.org/PR14567
!  137. https://gcc.gnu.org/PR14715
!  138. https://gcc.gnu.org/PR14902
!  139. https://gcc.gnu.org/PR14924
!  140. https://gcc.gnu.org/PR14960
!  141. https://gcc.gnu.org/PR15106
!  142. https://gcc.gnu.org/PR16026
!  143. https://gcc.gnu.org/PR15191
!  144. https://gcc.gnu.org/PR15662
!  145. https://gcc.gnu.org/PR15054
!  146. https://gcc.gnu.org/PR15783
!  147. https://gcc.gnu.org/PR15626
!  148. https://gcc.gnu.org/PR14326
!  149. https://gcc.gnu.org/PR14723
!  150. https://gcc.gnu.org/PR15290
!  151. https://gcc.gnu.org/PR15250
!  152. https://gcc.gnu.org/PR15551
!  153. https://gcc.gnu.org/PR8309
!  154. https://gcc.gnu.org/PR13250
!  155. https://gcc.gnu.org/PR13803
!  156. https://gcc.gnu.org/PR14093
!  157. https://gcc.gnu.org/PR14457
!  158. https://gcc.gnu.org/PR14542
!  159. https://gcc.gnu.org/PR15100
!  160. https://gcc.gnu.org/PR15296
!  161. https://gcc.gnu.org/PR15396
!  162. https://gcc.gnu.org/PR15782
!  163. https://gcc.gnu.org/PR11610
!  164. https://gcc.gnu.org/PR15488
!  165. https://gcc.gnu.org/PR15489
!  166. https://gcc.gnu.org/PR13928
!  167. https://gcc.gnu.org/PR14150
!  168. https://gcc.gnu.org/PR14949
!  169. https://gcc.gnu.org/PR15123
!  170. https://gcc.gnu.org/PR16469
!  171. https://gcc.gnu.org/PR16344
!  172. https://gcc.gnu.org/PR16842
!  173. https://gcc.gnu.org/PR12608
!  174. https://gcc.gnu.org/PR14492
!  175. https://gcc.gnu.org/PR15461
!  176. https://gcc.gnu.org/PR15890
!  177. https://gcc.gnu.org/PR16180
!  178. https://gcc.gnu.org/PR16224
!  179. https://gcc.gnu.org/PR16408
!  180. https://gcc.gnu.org/PR16529
!  181. https://gcc.gnu.org/PR16698
!  182. https://gcc.gnu.org/PR16706
!  183. https://gcc.gnu.org/PR16810
!  184. https://gcc.gnu.org/PR16851
!  185. https://gcc.gnu.org/PR16870
!  186. https://gcc.gnu.org/PR16904
!  187. https://gcc.gnu.org/PR16905
!  188. https://gcc.gnu.org/PR16964
!  189. https://gcc.gnu.org/PR17068
!  190. https://gcc.gnu.org/PR16366
!  191. https://gcc.gnu.org/PR15345
!  192. https://gcc.gnu.org/PR16590
!  193. https://gcc.gnu.org/PR16693
!  194. https://gcc.gnu.org/PR17078
!  195. https://gcc.gnu.org/PR13956
!  196. https://gcc.gnu.org/PR16684
!  197. https://gcc.gnu.org/PR12658
!  198. https://gcc.gnu.org/PR13092
!  199. https://gcc.gnu.org/PR15320
!  200. https://gcc.gnu.org/PR16246
!  201. https://gcc.gnu.org/PR16273
!  202. https://gcc.gnu.org/PR16401
!  203. https://gcc.gnu.org/PR16411
!  204. https://gcc.gnu.org/PR16489
!  205. https://gcc.gnu.org/PR16618
!  206. https://gcc.gnu.org/PR16637
!  207. https://gcc.gnu.org/PR16717
!  208. https://gcc.gnu.org/PR16813
!  209. https://gcc.gnu.org/PR16853
!  210. https://gcc.gnu.org/PR16889
!  211. https://gcc.gnu.org/PR16959
!  212. https://gcc.gnu.org/PR7587
!  213. https://gcc.gnu.org/PR16473
!  214. https://gcc.gnu.org/PR16478
!  215. https://gcc.gnu.org/PR10695
!  216. https://gcc.gnu.org/PR16974
!  217. https://gcc.gnu.org/PR16298
!  218. https://gcc.gnu.org/PR17113
!  219. https://gcc.gnu.org/PR14697
!  220. https://gcc.gnu.org/PR15869
!  221. https://gcc.gnu.org/PR16325
!  222. https://gcc.gnu.org/PR16357
!  223. https://gcc.gnu.org/PR16380
!  224. https://gcc.gnu.org/PR16407
!  225. https://gcc.gnu.org/PR16643
!  226. https://gcc.gnu.org/PR15927
!  227. https://gcc.gnu.org/PR15948
!  228. https://gcc.gnu.org/PR17019
!  229. https://gcc.gnu.org/PR16130
!  230. https://gcc.gnu.org/PR16142
!  231. https://gcc.gnu.org/PR16278
!  232. https://gcc.gnu.org/PR16414
!  233. https://gcc.gnu.org/PR16445
!  234. https://gcc.gnu.org/PR16490
!  235. https://gcc.gnu.org/PR16683
!  236. https://gcc.gnu.org/PR16195
!  237. https://gcc.gnu.org/PR16239
!  238. https://gcc.gnu.org/PR16199
!  239. https://gcc.gnu.org/PR16416
!  240. https://gcc.gnu.org/PR16430
!  241. https://gcc.gnu.org/PR16379
!  242. https://gcc.gnu.org/PR17093
!  243. https://gcc.gnu.org/PR17119
!  244. https://gcc.gnu.org/PR15928
!  245. https://gcc.gnu.org/PR16210
!  246. https://gcc.gnu.org/PR15488
!  247. https://gcc.gnu.org/PR16250
!  248. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.3
!  249. https://gcc.gnu.org/PR17369
!  250. https://gcc.gnu.org/PR17850
!  251. https://gcc.gnu.org/PR13948
!  252. https://gcc.gnu.org/PR14492
!  253. https://gcc.gnu.org/PR16301
!  254. https://gcc.gnu.org/PR16566
!  255. https://gcc.gnu.org/PR17023
!  256. https://gcc.gnu.org/PR17027
!  257. https://gcc.gnu.org/PR17524
!  258. https://gcc.gnu.org/PR17826
!  259. https://gcc.gnu.org/PR15526
!  260. https://gcc.gnu.org/PR16999
!  261. https://gcc.gnu.org/PR17503
!  262. https://gcc.gnu.org/PR17581
!  263. https://gcc.gnu.org/PR18129
!  264. https://gcc.gnu.org/PR10975
!  265. https://gcc.gnu.org/PR11722
!  266. https://gcc.gnu.org/PR14534
!  267. https://gcc.gnu.org/PR15172
!  268. https://gcc.gnu.org/PR15786
!  269. https://gcc.gnu.org/PR16162
!  270. https://gcc.gnu.org/PR16612
!  271. https://gcc.gnu.org/PR16715
!  272. https://gcc.gnu.org/PR16848
!  273. https://gcc.gnu.org/PR17132
!  274. https://gcc.gnu.org/PR17259
!  275. https://gcc.gnu.org/PR17327
!  276. https://gcc.gnu.org/PR17393
!  277. https://gcc.gnu.org/PR17501
!  278. https://gcc.gnu.org/PR17537
!  279. https://gcc.gnu.org/PR17585
!  280. https://gcc.gnu.org/PR17821
!  281. https://gcc.gnu.org/PR17829
!  282. https://gcc.gnu.org/PR17851
!  283. https://gcc.gnu.org/PR17976
!  284. https://gcc.gnu.org/PR18020
!  285. https://gcc.gnu.org/PR18093
!  286. https://gcc.gnu.org/PR18140
!  287. https://gcc.gnu.org/PR17541
!  288. https://gcc.gnu.org/PR17853
!  289. https://gcc.gnu.org/PR17245
!  290. https://gcc.gnu.org/PR17167
!  291. https://gcc.gnu.org/PR17277
!  292. https://gcc.gnu.org/PR17505
!  293. https://gcc.gnu.org/PR17684
!  294. https://gcc.gnu.org/PR17384
!  295. https://gcc.gnu.org/PR17770
!  296. https://gcc.gnu.org/PR11476
!  297. https://gcc.gnu.org/PR14064
!  298. https://gcc.gnu.org/PR14678
!  299. https://gcc.gnu.org/PR15583
!  300. https://gcc.gnu.org/PR15790
!  301. https://gcc.gnu.org/PR15886
!  302. https://gcc.gnu.org/PR16884
!  303. https://gcc.gnu.org/PR13841
!  304. https://gcc.gnu.org/PR15860
!  305. https://gcc.gnu.org/PR17465
!  306. https://gcc.gnu.org/PR17469
!  307. https://gcc.gnu.org/PR18138
!  308. https://gcc.gnu.org/PR15498
!  309. https://gcc.gnu.org/PR15747
!  310. https://gcc.gnu.org/PR16406
!  311. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.4
!  312. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.5
!  313. https://gcc.gnu.org/PR24688
!  314. https://gcc.gnu.org/PR17188
!  315. https://gcc.gnu.org/PR20187
!  316. https://gcc.gnu.org/PR21873
!  317. https://gcc.gnu.org/PR21899
!  318. https://gcc.gnu.org/PR22061
!  319. https://gcc.gnu.org/PR22208
!  320. https://gcc.gnu.org/PR22458
!  321. https://gcc.gnu.org/PR22589
!  322. https://gcc.gnu.org/PR24101
!  323. https://gcc.gnu.org/PR10611
!  324. https://gcc.gnu.org/PR13377
!  325. https://gcc.gnu.org/PR16002
!  326. https://gcc.gnu.org/PR17413
!  327. https://gcc.gnu.org/PR17609
!  328. https://gcc.gnu.org/PR17618
!  329. https://gcc.gnu.org/PR18124
!  330. https://gcc.gnu.org/PR18155
!  331. https://gcc.gnu.org/PR18177
!  332. https://gcc.gnu.org/PR18368
!  333. https://gcc.gnu.org/PR18378
!  334. https://gcc.gnu.org/PR18466
!  335. https://gcc.gnu.org/PR18512
!  336. https://gcc.gnu.org/PR18545
!  337. https://gcc.gnu.org/PR18738
!  338. https://gcc.gnu.org/PR18803
!  339. https://gcc.gnu.org/PR19004
!  340. https://gcc.gnu.org/PR19208
!  341. https://gcc.gnu.org/PR19253
!  342. https://gcc.gnu.org/PR19608
!  343. https://gcc.gnu.org/PR19884
!  344. https://gcc.gnu.org/PR20153
!  345. https://gcc.gnu.org/PR20563
!  346. https://gcc.gnu.org/PR20789
!  347. https://gcc.gnu.org/PR21336
!  348. https://gcc.gnu.org/PR21768
!  349. https://gcc.gnu.org/PR21853
!  350. https://gcc.gnu.org/PR21903
!  351. https://gcc.gnu.org/PR21983
!  352. https://gcc.gnu.org/PR21987
!  353. https://gcc.gnu.org/PR22153
!  354. https://gcc.gnu.org/PR22172
!  355. https://gcc.gnu.org/PR21286
!  356. https://gcc.gnu.org/PR22233
!  357. https://gcc.gnu.org/PR22508
!  358. https://gcc.gnu.org/PR22545
!  359. https://gcc.gnu.org/PR23528
!  360. https://gcc.gnu.org/PR23550
!  361. https://gcc.gnu.org/PR23586
!  362. https://gcc.gnu.org/PR23624
!  363. https://gcc.gnu.org/PR23639
!  364. https://gcc.gnu.org/PR23797
!  365. https://gcc.gnu.org/PR23965
!  366. https://gcc.gnu.org/PR24052
!  367. https://gcc.gnu.org/PR24580
!  368. https://gcc.gnu.org/PR24267
!  369. https://gcc.gnu.org/PR17810
!  370. https://gcc.gnu.org/PR17860
!  371. https://gcc.gnu.org/PR21709
!  372. https://gcc.gnu.org/PR21964
!  373. https://gcc.gnu.org/PR22167
!  374. https://gcc.gnu.org/PR22619
!  375. https://gcc.gnu.org/PR23241
!  376. https://gcc.gnu.org/PR23478
!  377. https://gcc.gnu.org/PR24470
!  378. https://gcc.gnu.org/PR24950
!  379. https://gcc.gnu.org/PR14400
!  380. https://gcc.gnu.org/PR14940
!  381. https://gcc.gnu.org/PR20239
!  382. https://gcc.gnu.org/PR15220
!  383. https://gcc.gnu.org/PR19275
!  384. https://gcc.gnu.org/PR21888
!  385. https://gcc.gnu.org/PR15342
!  386. https://gcc.gnu.org/PR23985
!  387. https://gcc.gnu.org/PR16719
!  388. https://gcc.gnu.org/PR21723
!  389. https://gcc.gnu.org/PR21841
!  390. https://gcc.gnu.org/PR23644
!  391. https://gcc.gnu.org/PR24718
!  392. https://gcc.gnu.org/PR18421
!  393. https://gcc.gnu.org/PR20621
!  394. https://gcc.gnu.org/PR18583
!  395. https://gcc.gnu.org/PR20191
!  396. https://gcc.gnu.org/PR22083
!  397. https://gcc.gnu.org/PR23070
!  398. https://gcc.gnu.org/PR23404
!  399. https://gcc.gnu.org/PR23539
!  400. https://gcc.gnu.org/PR24102
!  401. https://gcc.gnu.org/PR24465
!  402. https://gcc.gnu.org/PR19933
!  403. https://gcc.gnu.org/PR21889
!  404. https://gcc.gnu.org/PR19300
!  405. https://gcc.gnu.org/PR20301
!  406. https://gcc.gnu.org/PR20673
!  407. https://gcc.gnu.org/PR18582
!  408. https://gcc.gnu.org/PR19340
!  409. https://gcc.gnu.org/PR21716
!  410. https://gcc.gnu.org/PR24315
!  411. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.6
!  412. https://gcc.gnu.org/onlinedocs/
!  413. mailto:gcc-help@gcc.gnu.org
!  414. mailto:gcc@gcc.gnu.org
!  415. https://gcc.gnu.org/lists.html
!  416. http://www.fsf.org/
!  417. https://gcc.gnu.org/about.html
!  418. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-3.3/index.html
- 
                               GCC 3.3 Release Series
  
     May 03, 2005
--- 10565,10970 ----
    17. http://www.eclipse.org/
    18. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/g77/News.html
    19. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Alpha-Built-in-Functions.html
!   20. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gccint/Processor-pipeline-description.html
!   21. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gccint/Comparison-of-the-two-descriptions.html
!   22. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gccint/Processor-pipeline-description.html
!   23. http://gcc.gnu.org/gcc-3.4/mips-abi.html
!   24. http://gcc.gnu.org/gcc-3.4/powerpc-abi.html
!   25. http://gcc.gnu.org/gcc-3.4/sparc-abi.html
!   26. https://gcc.gnu.org/bugzilla/buglist.cgi?short_desc_type=notregexp&short_desc=\[3\.4.*[Rr]egression&target_milestone=3.4.0&bug_status=RESOLVED&resolution=FIXED
!   27. https://gcc.gnu.org/PR10129
!   28. https://gcc.gnu.org/PR14576
!   29. https://gcc.gnu.org/PR14760
!   30. https://gcc.gnu.org/PR14671
!   31. https://gcc.gnu.org/PR15093
!   32. https://gcc.gnu.org/PR15178
!   33. https://gcc.gnu.org/PR12753
!   34. https://gcc.gnu.org/PR13985
!   35. https://gcc.gnu.org/PR14810
!   36. https://gcc.gnu.org/PR14883
!   37. https://gcc.gnu.org/PR15044
!   38. https://gcc.gnu.org/PR15057
!   39. https://gcc.gnu.org/PR15064
!   40. https://gcc.gnu.org/PR15142
!   41. https://gcc.gnu.org/PR15159
!   42. https://gcc.gnu.org/PR15165
!   43. https://gcc.gnu.org/PR15193
!   44. https://gcc.gnu.org/PR15209
!   45. https://gcc.gnu.org/PR15227
!   46. https://gcc.gnu.org/PR15285
!   47. https://gcc.gnu.org/PR15299
!   48. https://gcc.gnu.org/PR15329
!   49. https://gcc.gnu.org/PR15550
!   50. https://gcc.gnu.org/PR15554
!   51. https://gcc.gnu.org/PR15640
!   52. https://gcc.gnu.org/PR15666
!   53. https://gcc.gnu.org/PR15696
!   54. https://gcc.gnu.org/PR15701
!   55. https://gcc.gnu.org/PR15761
!   56. https://gcc.gnu.org/PR15829
!   57. https://gcc.gnu.org/PR14538
!   58. https://gcc.gnu.org/PR12391
!   59. https://gcc.gnu.org/PR14649
!   60. https://gcc.gnu.org/PR15004
!   61. https://gcc.gnu.org/PR15749
!   62. https://gcc.gnu.org/PR10646
!   63. https://gcc.gnu.org/PR12077
!   64. https://gcc.gnu.org/PR13598
!   65. https://gcc.gnu.org/PR14211
!   66. https://gcc.gnu.org/PR14220
!   67. https://gcc.gnu.org/PR14245
!   68. https://gcc.gnu.org/PR14340
!   69. https://gcc.gnu.org/PR14600
!   70. https://gcc.gnu.org/PR14668
!   71. https://gcc.gnu.org/PR14775
!   72. https://gcc.gnu.org/PR14821
!   73. https://gcc.gnu.org/PR14930
!   74. https://gcc.gnu.org/PR14932
!   75. https://gcc.gnu.org/PR14950
!   76. https://gcc.gnu.org/PR14962
!   77. https://gcc.gnu.org/PR14975
!   78. https://gcc.gnu.org/PR15002
!   79. https://gcc.gnu.org/PR15025
!   80. https://gcc.gnu.org/PR15046
!   81. https://gcc.gnu.org/PR15069
!   82. https://gcc.gnu.org/PR15074
!   83. https://gcc.gnu.org/PR15083
!   84. https://gcc.gnu.org/PR15096
!   85. https://gcc.gnu.org/PR15287
!   86. https://gcc.gnu.org/PR15317
!   87. https://gcc.gnu.org/PR15337
!   88. https://gcc.gnu.org/PR15361
!   89. https://gcc.gnu.org/PR15412
!   90. https://gcc.gnu.org/PR15427
!   91. https://gcc.gnu.org/PR15471
!   92. https://gcc.gnu.org/PR15503
!   93. https://gcc.gnu.org/PR15507
!   94. https://gcc.gnu.org/PR15542
!   95. https://gcc.gnu.org/PR15565
!   96. https://gcc.gnu.org/PR15625
!   97. https://gcc.gnu.org/PR15629
!   98. https://gcc.gnu.org/PR15742
!   99. https://gcc.gnu.org/PR15775
!  100. https://gcc.gnu.org/PR15821
!  101. https://gcc.gnu.org/PR15862
!  102. https://gcc.gnu.org/PR15875
!  103. https://gcc.gnu.org/PR15877
!  104. https://gcc.gnu.org/PR15947
!  105. https://gcc.gnu.org/PR16020
!  106. https://gcc.gnu.org/PR16154
!  107. https://gcc.gnu.org/PR16174
!  108. https://gcc.gnu.org/PR14315
!  109. https://gcc.gnu.org/PR15151
!  110. https://gcc.gnu.org/PR7993
!  111. https://gcc.gnu.org/PR15228
!  112. https://gcc.gnu.org/PR15345
!  113. https://gcc.gnu.org/PR15945
!  114. https://gcc.gnu.org/PR15526
!  115. https://gcc.gnu.org/PR14690
!  116. https://gcc.gnu.org/PR15112
!  117. https://gcc.gnu.org/PR15067
!  118. https://gcc.gnu.org/PR1963
!  119. https://gcc.gnu.org/PR15717
!  120. https://gcc.gnu.org/PR14782
!  121. https://gcc.gnu.org/PR14828
!  122. https://gcc.gnu.org/PR15202
!  123. https://gcc.gnu.org/PR14610
!  124. https://gcc.gnu.org/PR14813
!  125. https://gcc.gnu.org/PR14857
!  126. https://gcc.gnu.org/PR15598
!  127. https://gcc.gnu.org/PR15653
!  128. https://gcc.gnu.org/PR15189
!  129. https://gcc.gnu.org/PR15331
!  130. https://gcc.gnu.org/PR16144
!  131. https://gcc.gnu.org/PR16176
!  132. https://gcc.gnu.org/PR11591
!  133. https://gcc.gnu.org/PR12028
!  134. https://gcc.gnu.org/PR14478
!  135. https://gcc.gnu.org/PR14567
!  136. https://gcc.gnu.org/PR14715
!  137. https://gcc.gnu.org/PR14902
!  138. https://gcc.gnu.org/PR14924
!  139. https://gcc.gnu.org/PR14960
!  140. https://gcc.gnu.org/PR15106
!  141. https://gcc.gnu.org/PR16026
!  142. https://gcc.gnu.org/PR15191
!  143. https://gcc.gnu.org/PR15662
!  144. https://gcc.gnu.org/PR15054
!  145. https://gcc.gnu.org/PR15783
!  146. https://gcc.gnu.org/PR15626
!  147. https://gcc.gnu.org/PR14326
!  148. https://gcc.gnu.org/PR14723
!  149. https://gcc.gnu.org/PR15290
!  150. https://gcc.gnu.org/PR15250
!  151. https://gcc.gnu.org/PR15551
!  152. https://gcc.gnu.org/PR8309
!  153. https://gcc.gnu.org/PR13250
!  154. https://gcc.gnu.org/PR13803
!  155. https://gcc.gnu.org/PR14093
!  156. https://gcc.gnu.org/PR14457
!  157. https://gcc.gnu.org/PR14542
!  158. https://gcc.gnu.org/PR15100
!  159. https://gcc.gnu.org/PR15296
!  160. https://gcc.gnu.org/PR15396
!  161. https://gcc.gnu.org/PR15782
!  162. https://gcc.gnu.org/PR11610
!  163. https://gcc.gnu.org/PR15488
!  164. https://gcc.gnu.org/PR15489
!  165. https://gcc.gnu.org/PR13928
!  166. https://gcc.gnu.org/PR14150
!  167. https://gcc.gnu.org/PR14949
!  168. https://gcc.gnu.org/PR15123
!  169. https://gcc.gnu.org/PR16469
!  170. https://gcc.gnu.org/PR16344
!  171. https://gcc.gnu.org/PR16842
!  172. https://gcc.gnu.org/PR12608
!  173. https://gcc.gnu.org/PR14492
!  174. https://gcc.gnu.org/PR15461
!  175. https://gcc.gnu.org/PR15890
!  176. https://gcc.gnu.org/PR16180
!  177. https://gcc.gnu.org/PR16224
!  178. https://gcc.gnu.org/PR16408
!  179. https://gcc.gnu.org/PR16529
!  180. https://gcc.gnu.org/PR16698
!  181. https://gcc.gnu.org/PR16706
!  182. https://gcc.gnu.org/PR16810
!  183. https://gcc.gnu.org/PR16851
!  184. https://gcc.gnu.org/PR16870
!  185. https://gcc.gnu.org/PR16904
!  186. https://gcc.gnu.org/PR16905
!  187. https://gcc.gnu.org/PR16964
!  188. https://gcc.gnu.org/PR17068
!  189. https://gcc.gnu.org/PR16366
!  190. https://gcc.gnu.org/PR15345
!  191. https://gcc.gnu.org/PR16590
!  192. https://gcc.gnu.org/PR16693
!  193. https://gcc.gnu.org/PR17078
!  194. https://gcc.gnu.org/PR13956
!  195. https://gcc.gnu.org/PR16684
!  196. https://gcc.gnu.org/PR12658
!  197. https://gcc.gnu.org/PR13092
!  198. https://gcc.gnu.org/PR15320
!  199. https://gcc.gnu.org/PR16246
!  200. https://gcc.gnu.org/PR16273
!  201. https://gcc.gnu.org/PR16401
!  202. https://gcc.gnu.org/PR16411
!  203. https://gcc.gnu.org/PR16489
!  204. https://gcc.gnu.org/PR16618
!  205. https://gcc.gnu.org/PR16637
!  206. https://gcc.gnu.org/PR16717
!  207. https://gcc.gnu.org/PR16813
!  208. https://gcc.gnu.org/PR16853
!  209. https://gcc.gnu.org/PR16889
!  210. https://gcc.gnu.org/PR16959
!  211. https://gcc.gnu.org/PR7587
!  212. https://gcc.gnu.org/PR16473
!  213. https://gcc.gnu.org/PR16478
!  214. https://gcc.gnu.org/PR10695
!  215. https://gcc.gnu.org/PR16974
!  216. https://gcc.gnu.org/PR16298
!  217. https://gcc.gnu.org/PR17113
!  218. https://gcc.gnu.org/PR14697
!  219. https://gcc.gnu.org/PR15869
!  220. https://gcc.gnu.org/PR16325
!  221. https://gcc.gnu.org/PR16357
!  222. https://gcc.gnu.org/PR16380
!  223. https://gcc.gnu.org/PR16407
!  224. https://gcc.gnu.org/PR16643
!  225. https://gcc.gnu.org/PR15927
!  226. https://gcc.gnu.org/PR15948
!  227. https://gcc.gnu.org/PR17019
!  228. https://gcc.gnu.org/PR16130
!  229. https://gcc.gnu.org/PR16142
!  230. https://gcc.gnu.org/PR16278
!  231. https://gcc.gnu.org/PR16414
!  232. https://gcc.gnu.org/PR16445
!  233. https://gcc.gnu.org/PR16490
!  234. https://gcc.gnu.org/PR16683
!  235. https://gcc.gnu.org/PR16195
!  236. https://gcc.gnu.org/PR16239
!  237. https://gcc.gnu.org/PR16199
!  238. https://gcc.gnu.org/PR16416
!  239. https://gcc.gnu.org/PR16430
!  240. https://gcc.gnu.org/PR16379
!  241. https://gcc.gnu.org/PR17093
!  242. https://gcc.gnu.org/PR17119
!  243. https://gcc.gnu.org/PR15928
!  244. https://gcc.gnu.org/PR16210
!  245. https://gcc.gnu.org/PR15488
!  246. https://gcc.gnu.org/PR16250
!  247. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.3
!  248. https://gcc.gnu.org/PR17369
!  249. https://gcc.gnu.org/PR17850
!  250. https://gcc.gnu.org/PR13948
!  251. https://gcc.gnu.org/PR14492
!  252. https://gcc.gnu.org/PR16301
!  253. https://gcc.gnu.org/PR16566
!  254. https://gcc.gnu.org/PR17023
!  255. https://gcc.gnu.org/PR17027
!  256. https://gcc.gnu.org/PR17524
!  257. https://gcc.gnu.org/PR17826
!  258. https://gcc.gnu.org/PR15526
!  259. https://gcc.gnu.org/PR16999
!  260. https://gcc.gnu.org/PR17503
!  261. https://gcc.gnu.org/PR17581
!  262. https://gcc.gnu.org/PR18129
!  263. https://gcc.gnu.org/PR10975
!  264. https://gcc.gnu.org/PR11722
!  265. https://gcc.gnu.org/PR14534
!  266. https://gcc.gnu.org/PR15172
!  267. https://gcc.gnu.org/PR15786
!  268. https://gcc.gnu.org/PR16162
!  269. https://gcc.gnu.org/PR16612
!  270. https://gcc.gnu.org/PR16715
!  271. https://gcc.gnu.org/PR16848
!  272. https://gcc.gnu.org/PR17132
!  273. https://gcc.gnu.org/PR17259
!  274. https://gcc.gnu.org/PR17327
!  275. https://gcc.gnu.org/PR17393
!  276. https://gcc.gnu.org/PR17501
!  277. https://gcc.gnu.org/PR17537
!  278. https://gcc.gnu.org/PR17585
!  279. https://gcc.gnu.org/PR17821
!  280. https://gcc.gnu.org/PR17829
!  281. https://gcc.gnu.org/PR17851
!  282. https://gcc.gnu.org/PR17976
!  283. https://gcc.gnu.org/PR18020
!  284. https://gcc.gnu.org/PR18093
!  285. https://gcc.gnu.org/PR18140
!  286. https://gcc.gnu.org/PR17541
!  287. https://gcc.gnu.org/PR17853
!  288. https://gcc.gnu.org/PR17245
!  289. https://gcc.gnu.org/PR17167
!  290. https://gcc.gnu.org/PR17277
!  291. https://gcc.gnu.org/PR17505
!  292. https://gcc.gnu.org/PR17684
!  293. https://gcc.gnu.org/PR17384
!  294. https://gcc.gnu.org/PR17770
!  295. https://gcc.gnu.org/PR11476
!  296. https://gcc.gnu.org/PR14064
!  297. https://gcc.gnu.org/PR14678
!  298. https://gcc.gnu.org/PR15583
!  299. https://gcc.gnu.org/PR15790
!  300. https://gcc.gnu.org/PR15886
!  301. https://gcc.gnu.org/PR16884
!  302. https://gcc.gnu.org/PR13841
!  303. https://gcc.gnu.org/PR15860
!  304. https://gcc.gnu.org/PR17465
!  305. https://gcc.gnu.org/PR17469
!  306. https://gcc.gnu.org/PR18138
!  307. https://gcc.gnu.org/PR15498
!  308. https://gcc.gnu.org/PR15747
!  309. https://gcc.gnu.org/PR16406
!  310. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.4
!  311. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.5
!  312. https://gcc.gnu.org/PR24688
!  313. https://gcc.gnu.org/PR17188
!  314. https://gcc.gnu.org/PR20187
!  315. https://gcc.gnu.org/PR21873
!  316. https://gcc.gnu.org/PR21899
!  317. https://gcc.gnu.org/PR22061
!  318. https://gcc.gnu.org/PR22208
!  319. https://gcc.gnu.org/PR22458
!  320. https://gcc.gnu.org/PR22589
!  321. https://gcc.gnu.org/PR24101
!  322. https://gcc.gnu.org/PR10611
!  323. https://gcc.gnu.org/PR13377
!  324. https://gcc.gnu.org/PR16002
!  325. https://gcc.gnu.org/PR17413
!  326. https://gcc.gnu.org/PR17609
!  327. https://gcc.gnu.org/PR17618
!  328. https://gcc.gnu.org/PR18124
!  329. https://gcc.gnu.org/PR18155
!  330. https://gcc.gnu.org/PR18177
!  331. https://gcc.gnu.org/PR18368
!  332. https://gcc.gnu.org/PR18378
!  333. https://gcc.gnu.org/PR18466
!  334. https://gcc.gnu.org/PR18512
!  335. https://gcc.gnu.org/PR18545
!  336. https://gcc.gnu.org/PR18738
!  337. https://gcc.gnu.org/PR18803
!  338. https://gcc.gnu.org/PR19004
!  339. https://gcc.gnu.org/PR19208
!  340. https://gcc.gnu.org/PR19253
!  341. https://gcc.gnu.org/PR19608
!  342. https://gcc.gnu.org/PR19884
!  343. https://gcc.gnu.org/PR20153
!  344. https://gcc.gnu.org/PR20563
!  345. https://gcc.gnu.org/PR20789
!  346. https://gcc.gnu.org/PR21336
!  347. https://gcc.gnu.org/PR21768
!  348. https://gcc.gnu.org/PR21853
!  349. https://gcc.gnu.org/PR21903
!  350. https://gcc.gnu.org/PR21983
!  351. https://gcc.gnu.org/PR21987
!  352. https://gcc.gnu.org/PR22153
!  353. https://gcc.gnu.org/PR22172
!  354. https://gcc.gnu.org/PR21286
!  355. https://gcc.gnu.org/PR22233
!  356. https://gcc.gnu.org/PR22508
!  357. https://gcc.gnu.org/PR22545
!  358. https://gcc.gnu.org/PR23528
!  359. https://gcc.gnu.org/PR23550
!  360. https://gcc.gnu.org/PR23586
!  361. https://gcc.gnu.org/PR23624
!  362. https://gcc.gnu.org/PR23639
!  363. https://gcc.gnu.org/PR23797
!  364. https://gcc.gnu.org/PR23965
!  365. https://gcc.gnu.org/PR24052
!  366. https://gcc.gnu.org/PR24580
!  367. https://gcc.gnu.org/PR24267
!  368. https://gcc.gnu.org/PR17810
!  369. https://gcc.gnu.org/PR17860
!  370. https://gcc.gnu.org/PR21709
!  371. https://gcc.gnu.org/PR21964
!  372. https://gcc.gnu.org/PR22167
!  373. https://gcc.gnu.org/PR22619
!  374. https://gcc.gnu.org/PR23241
!  375. https://gcc.gnu.org/PR23478
!  376. https://gcc.gnu.org/PR24470
!  377. https://gcc.gnu.org/PR24950
!  378. https://gcc.gnu.org/PR14400
!  379. https://gcc.gnu.org/PR14940
!  380. https://gcc.gnu.org/PR20239
!  381. https://gcc.gnu.org/PR15220
!  382. https://gcc.gnu.org/PR19275
!  383. https://gcc.gnu.org/PR21888
!  384. https://gcc.gnu.org/PR15342
!  385. https://gcc.gnu.org/PR23985
!  386. https://gcc.gnu.org/PR16719
!  387. https://gcc.gnu.org/PR21723
!  388. https://gcc.gnu.org/PR21841
!  389. https://gcc.gnu.org/PR23644
!  390. https://gcc.gnu.org/PR24718
!  391. https://gcc.gnu.org/PR18421
!  392. https://gcc.gnu.org/PR20621
!  393. https://gcc.gnu.org/PR18583
!  394. https://gcc.gnu.org/PR20191
!  395. https://gcc.gnu.org/PR22083
!  396. https://gcc.gnu.org/PR23070
!  397. https://gcc.gnu.org/PR23404
!  398. https://gcc.gnu.org/PR23539
!  399. https://gcc.gnu.org/PR24102
!  400. https://gcc.gnu.org/PR24465
!  401. https://gcc.gnu.org/PR19933
!  402. https://gcc.gnu.org/PR21889
!  403. https://gcc.gnu.org/PR19300
!  404. https://gcc.gnu.org/PR20301
!  405. https://gcc.gnu.org/PR20673
!  406. https://gcc.gnu.org/PR18582
!  407. https://gcc.gnu.org/PR19340
!  408. https://gcc.gnu.org/PR21716
!  409. https://gcc.gnu.org/PR24315
!  410. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.6
!  411. https://gcc.gnu.org/onlinedocs/
!  412. mailto:gcc-help@gcc.gnu.org
!  413. mailto:gcc@gcc.gnu.org
!  414. https://gcc.gnu.org/lists.html
!  415. http://www.fsf.org/
!  416. https://gcc.gnu.org/about.html
!  417. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-3.3/index.html
                               GCC 3.3 Release Series
  
     May 03, 2005
*************** http://gcc.gnu.org/gcc-3.3/index.html
*** 10948,10953 ****
--- 10981,10988 ----
     improvements, bug fixes, and other changes, thanks to an [3]amazing
     group of volunteers.
  
+    This release series is no longer maintained.
+ 
  Release History
  
     GCC 3.3.6
*************** References and Acknowledgements
*** 11003,11009 ****
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2016-01-30[22].
  
  References
  
--- 11038,11044 ----
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2016-09-30[22].
  
  References
  
*************** References
*** 11031,11037 ****
    22. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-3.3/changes.html
- 
                               GCC 3.3 Release Series
                          Changes, New Features, and Fixes
  
--- 11066,11071 ----
*************** References
*** 12942,12948 ****
   557. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-3.2/index.html
- 
                               GCC 3.2 Release Series
  
     April 25, 2003
--- 12976,12981 ----
*************** http://gcc.gnu.org/gcc-3.2/index.html
*** 12962,12967 ****
--- 12995,13002 ----
     Please refer to our [2]detailed list of news, caveats, and bug-fixes
     for further information.
  
+    This release series is no longer maintained.
+ 
  Release History
  
     GCC 3.2.3
*************** References and Acknowledgements
*** 13008,13014 ****
     provided this notice is preserved.
  
     These pages are [17]maintained by the GCC team. Last modified
!    2016-01-30[18].
  
  References
  
--- 13043,13049 ----
     provided this notice is preserved.
  
     These pages are [17]maintained by the GCC team. Last modified
!    2016-09-30[18].
  
  References
  
*************** References
*** 13032,13038 ****
    18. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-3.2/changes.html
- 
                               GCC 3.2 Release Series
                          Changes, New Features, and Fixes
  
--- 13067,13072 ----
*************** References
*** 13890,13896 ****
   252. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-3.1/index.html
- 
                                      GCC 3.1
  
     July 27, 2002
--- 13924,13929 ----
*************** http://gcc.gnu.org/gcc-3.1/index.html
*** 13900,13905 ****
--- 13933,13940 ----
  
     The links below still apply to GCC 3.1.1.
  
+    This release series is no longer maintained.
+ 
     May 15, 2002
  
     The [2]GNU project and the GCC developers are pleased to announce the
*************** http://gcc.gnu.org/gcc-3.1/index.html
*** 13936,13942 ****
     provided this notice is preserved.
  
     These pages are [14]maintained by the GCC team. Last modified
!    2016-01-30[15].
  
  References
  
--- 13971,13977 ----
     provided this notice is preserved.
  
     These pages are [14]maintained by the GCC team. Last modified
!    2016-09-30[15].
  
  References
  
*************** References
*** 13957,13963 ****
    15. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-3.1/changes.html
- 
                               GCC 3.1 Release Series
                          Changes, New Features, and Fixes
  
--- 13992,13997 ----
*************** New Languages and Language specific impr
*** 14147,14161 ****
  
  New Targets and Target Specific Improvements
  
!      * Hans-Peter Nilsson has contributed a port to [8]MMIX, the CPU
         architecture used in new editions of Donald E. Knuth's The Art of
         Computer Programming.
!      * [9]Axis Communications has contributed its port to the CRIS CPU
!        architecture, used in the ETRAX system-on-a-chip series. See
!        [10]Axis' developer site for technical information.
!      * Alexandre Oliva, of Red Hat, has contributed a port to the
!        [11]SuperH SH5 64-bit RISC microprocessor architecture, extending
!        the existing SH port.
       * UltraSPARC is fully supported in 64-bit mode. The option -m64
         enables it.
       * For compatibility with the Sun compiler #pragma redefine_extname
--- 14181,14194 ----
  
  New Targets and Target Specific Improvements
  
!      * Hans-Peter Nilsson has contributed a port to MMIX, the CPU
         architecture used in new editions of Donald E. Knuth's The Art of
         Computer Programming.
!      * Axis Communications has contributed its port to the CRIS CPU
!        architecture, used in the ETRAX system-on-a-chip series.
!      * Alexandre Oliva, of Red Hat, has contributed a port to the SuperH
!        SH5 64-bit RISC microprocessor architecture, extending the existing
!        SH port.
       * UltraSPARC is fully supported in 64-bit mode. The option -m64
         enables it.
       * For compatibility with the Sun compiler #pragma redefine_extname
*************** New Targets and Target Specific Improvem
*** 14163,14169 ****
       * The x86 back end has had some noticeable work done to it.
            + SuSE Labs developers Jan Hubicka, Bo Thorsen and Andreas
              Jaeger have contributed a port to the AMD x86-64 architecture.
!             For more information on x86-64 see [12]http://www.x86-64.org.
            + The compiler now supports MMX, 3DNow!, SSE, and SSE2
              instructions. Options -mmmx, -m3dnow, -msse, and -msse2 will
              enable the respective instruction sets. Intel C++ compatible
--- 14196,14202 ----
       * The x86 back end has had some noticeable work done to it.
            + SuSE Labs developers Jan Hubicka, Bo Thorsen and Andreas
              Jaeger have contributed a port to the AMD x86-64 architecture.
!             For more information on x86-64 see http://www.x86-64.org.
            + The compiler now supports MMX, 3DNow!, SSE, and SSE2
              instructions. Options -mmmx, -m3dnow, -msse, and -msse2 will
              enable the respective instruction sets. Intel C++ compatible
*************** New Targets and Target Specific Improvem
*** 14176,14182 ****
            + For those targets that support it, -mfpmath=sse will cause the
              compiler to generate SSE/SSE2 instructions for floating point
              math instead of x87 instructions. Usually, this will lead to
!             quicker code -- especially on the Pentium 4. Note that only
              scalar floating point instructions are used and GCC does not
              exploit SIMD features yet.
            + Prefetch support has been added to the Pentium III, Pentium 4,
--- 14209,14215 ----
            + For those targets that support it, -mfpmath=sse will cause the
              compiler to generate SSE/SSE2 instructions for floating point
              math instead of x87 instructions. Usually, this will lead to
!             quicker code — especially on the Pentium 4. Note that only
              scalar floating point instructions are used and GCC does not
              exploit SIMD features yet.
            + Prefetch support has been added to the Pentium III, Pentium 4,
*************** Documentation improvements
*** 14281,14298 ****
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [13]GCC manuals. If that fails, the
!     [14]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 [15]gcc@gcc.gnu.org. All of [16]our lists have public
      archives.
  
!    Copyright (C) [17]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 [18]maintained by the GCC team. Last modified
!    2016-01-30[19].
  
  References
  
--- 14314,14331 ----
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [8]GCC manuals. If that fails, the
!     [9]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 [10]gcc@gcc.gnu.org. All of [11]our lists have public
      archives.
  
!    Copyright (C) [12]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 [13]maintained by the GCC team. Last modified
!    2017-09-09[14].
  
  References
  
*************** References
*** 14303,14323 ****
     5. https://gcc.gnu.org/onlinedocs/libstdc++/faq.html
     6. https://gcc.gnu.org/onlinedocs/gcc-3.1.1/g77/News.html
     7. http://www.adacore.com/
!    8. http://www-cs-faculty.stanford.edu/~uno/mmix.html
!    9. http://www.axis.com/
!   10. http://developer.axis.com/
!   11. http://www.superh.com/
!   12. http://www.x86-64.org/
!   13. https://gcc.gnu.org/onlinedocs/
!   14. mailto:gcc-help@gcc.gnu.org
!   15. mailto:gcc@gcc.gnu.org
!   16. https://gcc.gnu.org/lists.html
!   17. http://www.fsf.org/
!   18. https://gcc.gnu.org/about.html
!   19. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-3.0/index.html
- 
                                     GCC 3.0.4
  
     February 20, 2002
--- 14336,14350 ----
     5. https://gcc.gnu.org/onlinedocs/libstdc++/faq.html
     6. https://gcc.gnu.org/onlinedocs/gcc-3.1.1/g77/News.html
     7. http://www.adacore.com/
!    8. https://gcc.gnu.org/onlinedocs/
!    9. mailto:gcc-help@gcc.gnu.org
!   10. mailto:gcc@gcc.gnu.org
!   11. https://gcc.gnu.org/lists.html
!   12. http://www.fsf.org/
!   13. https://gcc.gnu.org/about.html
!   14. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-3.0/index.html
                                     GCC 3.0.4
  
     February 20, 2002
*************** http://gcc.gnu.org/gcc-3.0/index.html
*** 14326,14331 ****
--- 14353,14360 ----
     release of GCC 3.0.4, which is a bug-fix release for the GCC 3.0
     series.
  
+    This release series is no longer maintained.
+ 
     GCC used to stand for the GNU C Compiler, but since the compiler
     supports several other languages aside from C, it now stands for the
     GNU Compiler Collection.
*************** Previous 3.0.x Releases
*** 14370,14376 ****
     provided this notice is preserved.
  
     These pages are [14]maintained by the GCC team. Last modified
!    2016-01-30[15].
  
  References
  
--- 14399,14405 ----
     provided this notice is preserved.
  
     These pages are [14]maintained by the GCC team. Last modified
!    2016-09-30[15].
  
  References
  
*************** References
*** 14391,14397 ****
    15. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-3.0/features.html
- 
                                GCC 3.0 New Features
  
  Additional changes in GCC 3.0.4
--- 14420,14425 ----
*************** New Languages and Language specific impr
*** 14470,14482 ****
         inter-operating with other IA-64 compilers.
       * The new ABI also significantly reduces the size of symbol and debug
         information.
!      * New [7]C++ support library and many C++ bug fixes, vastly improving
         our conformance to the ISO C++ standard.
!      * New [8]inliner for C++.
       * Rewritten C preprocessor, integrated into the C, C++ and Objective
         C compilers, with very many improvements including ISO C99 support
!        and [9]improvements to dependency generation.
!      * Support for more [10]ISO C99 features.
       * Many improvements to support for checking calls to format functions
         such as printf and scanf, including support for ISO C99 format
         features, extensions from the Single Unix Specification and GNU
--- 14498,14510 ----
         inter-operating with other IA-64 compilers.
       * The new ABI also significantly reduces the size of symbol and debug
         information.
!      * 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
         features, extensions from the Single Unix Specification and GNU
*************** New Languages and Language specific impr
*** 14487,14493 ****
         = a++;, a[n] = b[n++]; and a[i++] = i;), included in -Wall.
       * Additional warning option -Wfloat-equal.
       * Improvements to -Wtraditional.
!      * Fortran improvements are listed in [11]the Fortran documentation.
  
  New Targets and Target Specific Improvements
  
--- 14515,14521 ----
         = a++;, a[n] = b[n++]; and a[i++] = i;), included in -Wall.
       * Additional warning option -Wfloat-equal.
       * Improvements to -Wtraditional.
!      * Fortran improvements are listed in [10]the Fortran documentation.
  
  New Targets and Target Specific Improvements
  
*************** Other significant improvements
*** 14535,14541 ****
         our mailing lists, for which you received no bug tracking number,
         should be submitted again using gccbug if you can reproduce the
         problem with GCC 3.0.)
!      * The internal libgcc library is [12]built as a shared library on
         systems that support it.
       * Extensive testsuite included with GCC, with many new tests. In
         addition to tests for GCC bugs that have been fixed, many tests
--- 14563,14569 ----
         our mailing lists, for which you received no bug tracking number,
         should be submitted again using gccbug if you can reproduce the
         problem with GCC 3.0.)
!      * The internal libgcc library is [11]built as a shared library on
         systems that support it.
       * Extensive testsuite included with GCC, with many new tests. In
         addition to tests for GCC bugs that have been fixed, many tests
*************** Other significant improvements
*** 14546,14568 ****
       * Target-independent options -falign-functions, -falign-loops and
         -falign-jumps.
  
!    Plus a great many bug fixes and almost all the [13]features found in
     GCC 2.95.
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [14]GCC manuals. If that fails, the
!     [15]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 [16]gcc@gcc.gnu.org. All of [17]our lists have public
      archives.
  
!    Copyright (C) [18]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 [19]maintained by the GCC team. Last modified
!    2016-01-30[20].
  
  References
  
--- 14574,14596 ----
       * Target-independent options -falign-functions, -falign-loops and
         -falign-jumps.
  
!    Plus a great many bug fixes and almost all the [12]features found in
     GCC 2.95.
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [13]GCC manuals. If that fails, the
!     [14]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 [15]gcc@gcc.gnu.org. All of [16]our lists have public
      archives.
  
!    Copyright (C) [17]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 [18]maintained by the GCC team. Last modified
!    2016-08-23[19].
  
  References
  
*************** References
*** 14572,14594 ****
     4. http://gcc.gnu.org/news/null.html
     5. http://gcc.gnu.org/news/unify.html
     6. http://gcc.gnu.org/gcc-3.0/c++features.html
!    7. http://gcc.gnu.org/libstdc++/
!    8. http://gcc.gnu.org/news/inlining.html
!    9. http://gcc.gnu.org/news/dependencies.html
!   10. http://gcc.gnu.org/c99status.html
!   11. https://gcc.gnu.org/onlinedocs/gcc-3.4.6/g77/News.html
!   12. http://gcc.gnu.org/gcc-3.0/libgcc.html
!   13. http://gcc.gnu.org/gcc-2.95/features.html
!   14. https://gcc.gnu.org/onlinedocs/
!   15. mailto:gcc-help@gcc.gnu.org
!   16. mailto:gcc@gcc.gnu.org
!   17. https://gcc.gnu.org/lists.html
!   18. http://www.fsf.org/
!   19. https://gcc.gnu.org/about.html
!   20. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-3.0/caveats.html
- 
                                  GCC 3.0 Caveats
  
       * -fstrict-aliasing is now part of -O2 and higher optimization
--- 14600,14620 ----
     4. http://gcc.gnu.org/news/null.html
     5. http://gcc.gnu.org/news/unify.html
     6. http://gcc.gnu.org/gcc-3.0/c++features.html
!    7. http://gcc.gnu.org/news/inlining.html
!    8. http://gcc.gnu.org/news/dependencies.html
!    9. http://gcc.gnu.org/c99status.html
!   10. https://gcc.gnu.org/onlinedocs/gcc-3.4.6/g77/News.html
!   11. http://gcc.gnu.org/gcc-3.0/libgcc.html
!   12. http://gcc.gnu.org/gcc-2.95/features.html
!   13. https://gcc.gnu.org/onlinedocs/
!   14. mailto:gcc-help@gcc.gnu.org
!   15. mailto:gcc@gcc.gnu.org
!   16. https://gcc.gnu.org/lists.html
!   17. http://www.fsf.org/
!   18. https://gcc.gnu.org/about.html
!   19. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-3.0/caveats.html
                                  GCC 3.0 Caveats
  
       * -fstrict-aliasing is now part of -O2 and higher optimization
*************** References
*** 14649,14660 ****
     8. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-2.95/index.html
- 
                                      GCC 2.95
  
     March 16, 2001: The GNU project and the GCC developers are pleased to
     announce the release of GCC version 2.95.3.
  
  Release History
  
     GCC 2.95.3
--- 14675,14687 ----
     8. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-2.95/index.html
                                      GCC 2.95
  
     March 16, 2001: The GNU project and the GCC developers are pleased to
     announce the release of GCC version 2.95.3.
  
+    This release is no longer maintained.
+ 
  Release History
  
     GCC 2.95.3
*************** References and Acknowledgements
*** 14716,14722 ****
     provided this notice is preserved.
  
     These pages are [15]maintained by the GCC team. Last modified
!    2016-01-30[16].
  
  References
  
--- 14743,14749 ----
     provided this notice is preserved.
  
     These pages are [15]maintained by the GCC team. Last modified
!    2016-09-30[16].
  
  References
  
*************** References
*** 14738,14744 ****
    16. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-2.95/features.html
- 
                               GCC 2.95 New Features
  
       * General Optimizer Improvements:
--- 14765,14770 ----
*************** http://gcc.gnu.org/gcc-2.95/features.htm
*** 14759,14766 ****
       * New Languages and Language specific improvements
            + [8]Many C++ improvements.
            + [9]Many Fortran improvements.
!           + [10]Java front-end has been integrated. [11]runtime library is
!             available separately.
            + [12]ISO C99 support
            + [13]Chill front-end and runtime has been integrated.
            + Boehm garbage collector support in libobjc.
--- 14785,14792 ----
       * New Languages and Language specific improvements
            + [8]Many C++ improvements.
            + [9]Many Fortran improvements.
!           + [10]Java front-end has been integrated. A [11]runtime library
!             is available separately.
            + [12]ISO C99 support
            + [13]Chill front-end and runtime has been integrated.
            + Boehm garbage collector support in libobjc.
*************** Additional Changes in GCC 2.95.3
*** 14982,14988 ****
     provided this notice is preserved.
  
     These pages are [22]maintained by the GCC team. Last modified
!    2016-01-30[23].
  
  References
  
--- 15008,15014 ----
     provided this notice is preserved.
  
     These pages are [22]maintained by the GCC team. Last modified
!    2016-12-29[23].
  
  References
  
*************** References
*** 14995,15001 ****
     7. http://gcc.gnu.org/news/alias.html
     8. http://gcc.gnu.org/gcc-2.95/c++features.html
     9. https://gcc.gnu.org/onlinedocs/gcc-3.4.6/g77/News.html
!   10. http://gcc.gnu.org/java/gcj-announce.txt
    11. http://gcc.gnu.org/news/javaannounce.html
    12. http://gcc.gnu.org/c99status.html
    13. http://gcc.gnu.org/news/chill.html
--- 15021,15027 ----
     7. http://gcc.gnu.org/news/alias.html
     8. http://gcc.gnu.org/gcc-2.95/c++features.html
     9. https://gcc.gnu.org/onlinedocs/gcc-3.4.6/g77/News.html
!   10. http://gcc.gnu.org/news/gcj-announce.txt
    11. http://gcc.gnu.org/news/javaannounce.html
    12. http://gcc.gnu.org/c99status.html
    13. http://gcc.gnu.org/news/chill.html
*************** References
*** 15011,15017 ****
    23. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-2.95/caveats.html
- 
                                  GCC 2.95 Caveats
  
       * GCC 2.95 will issue an error for invalid asm statements that had
--- 15037,15042 ----
*************** References
*** 15080,15086 ****
     8. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/egcs-1.1/index.html
- 
                                      EGCS 1.1
  
     September 3, 1998: We are pleased to announce the release of EGCS 1.1.
--- 15105,15110 ----
*************** References
*** 15310,15316 ****
    16. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/egcs-1.1/features.html
- 
                               EGCS 1.1 new features
  
       * Integrated GNU Fortran (g77) compiler and runtime library with
--- 15334,15339 ----
*************** References
*** 15405,15411 ****
    11. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/egcs-1.1/caveats.html
- 
                                  EGCS 1.1 Caveats
  
       * EGCS has an integrated libstdc++, but does not have an integrated
--- 15428,15433 ----
*************** References
*** 15456,15462 ****
     7. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/egcs-1.0/index.html
- 
                                      EGCS 1.0
  
     December 3, 1997: We are pleased to announce the release of EGCS 1.0.
--- 15478,15483 ----
*************** References
*** 15657,15663 ****
    11. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/egcs-1.0/features.html
- 
                                 EGCS 1.0 features
  
       * Core compiler is based on the gcc2 development tree from Aug 2,
--- 15678,15683 ----
*************** References
*** 15722,15728 ****
     9. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/egcs-1.0/caveats.html
- 
                                  EGCS 1.0 Caveats
  
       * EGCS has an integrated libstdc++, but does not have an integrated
--- 15742,15747 ----
diff -Nrcpad gcc-5.4.0/boehm-gc/ChangeLog gcc-5.5.0/boehm-gc/ChangeLog
*** gcc-5.4.0/boehm-gc/ChangeLog	Fri Jun  3 08:41:59 2016
--- gcc-5.5.0/boehm-gc/ChangeLog	Tue Oct 10 08:11:01 2017
***************
*** 1,3 ****
--- 1,7 ----
+ 2017-10-10  Release Manager
+ 
+ 	* GCC 5.5.0 released.
+ 
  2016-06-03  Release Manager
  
  	* GCC 5.4.0 released.
diff -Nrcpad gcc-5.4.0/config/ChangeLog gcc-5.5.0/config/ChangeLog
*** gcc-5.4.0/config/ChangeLog	Fri Jun  3 08:41:59 2016
--- gcc-5.5.0/config/ChangeLog	Tue Oct 10 08:11:01 2017
***************
*** 1,3 ****
--- 1,7 ----
+ 2017-10-10  Release Manager
+ 
+ 	* GCC 5.5.0 released.
+ 
  2016-06-03  Release Manager
  
  	* GCC 5.4.0 released.
diff -Nrcpad gcc-5.4.0/config.sub gcc-5.5.0/config.sub
*** gcc-5.4.0/config.sub	Fri Jan  2 09:30:21 2015
--- gcc-5.5.0/config.sub	Wed Aug 31 09:37:05 2016
*************** case $os in
*** 1393,1399 ****
  	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
  	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
  	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
! 	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*)
  	# Remember, each alternative MUST END IN *, to match a version number.
  		;;
  	-qnx*)
--- 1393,1399 ----
  	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
  	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
  	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
! 	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos* | -phoenix*)
  	# Remember, each alternative MUST END IN *, to match a version number.
  		;;
  	-qnx*)
diff -Nrcpad gcc-5.4.0/configure gcc-5.5.0/configure
*** gcc-5.4.0/configure	Sun May  3 17:29:57 2015
--- gcc-5.5.0/configure	Mon Jan  9 21:06:20 2017
*************** case "${target}" in
*** 3455,3460 ****
--- 3455,3463 ----
    *-*-vxworks*)
      noconfigdirs="$noconfigdirs ${libgcj}"
      ;;
+   aarch64*-*-freebsd*)
+     noconfigdirs="$noconfigdirs ${libgcj}"
+     ;;
    alpha*-*-*vms*)
      noconfigdirs="$noconfigdirs ${libgcj}"
      ;;
diff -Nrcpad gcc-5.4.0/configure.ac gcc-5.5.0/configure.ac
*** gcc-5.4.0/configure.ac	Sun May  3 17:29:57 2015
--- gcc-5.5.0/configure.ac	Mon Jan  9 21:06:20 2017
*************** case "${target}" in
*** 802,807 ****
--- 802,810 ----
    *-*-vxworks*)
      noconfigdirs="$noconfigdirs ${libgcj}"
      ;;
+   aarch64*-*-freebsd*)
+     noconfigdirs="$noconfigdirs ${libgcj}"
+     ;;
    alpha*-*-*vms*)
      noconfigdirs="$noconfigdirs ${libgcj}"
      ;;
diff -Nrcpad gcc-5.4.0/contrib/ChangeLog gcc-5.5.0/contrib/ChangeLog
*** gcc-5.4.0/contrib/ChangeLog	Fri Jun  3 08:41:59 2016
--- gcc-5.5.0/contrib/ChangeLog	Tue Oct 10 08:11:01 2017
***************
*** 1,3 ****
--- 1,11 ----
+ 2017-10-10  Release Manager
+ 
+ 	* GCC 5.5.0 released.
+ 
+ 2017-10-02  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* gcc_update (files_and_dependencies): Handle libbacktrace.
+ 
  2016-06-03  Release Manager
  
  	* GCC 5.4.0 released.
diff -Nrcpad gcc-5.4.0/contrib/gcc_update gcc-5.5.0/contrib/gcc_update
*** gcc-5.4.0/contrib/gcc_update	Thu Feb  5 13:55:25 2015
--- gcc-5.5.0/contrib/gcc_update	Mon Oct  2 11:58:56 2017
*************** liboffloadmic/configure: liboffloadmic/c
*** 173,178 ****
--- 173,182 ----
  liboffloadmic/plugin/aclocal.m4: liboffloadmic/plugin/configure.ac
  liboffloadmic/plugin/Makefile.in: liboffloadmic/plugin/Makefile.am
  liboffloadmic/plugin/configure: liboffloadmic/plugin/configure.ac
+ libbacktrace/aclocal.m4: libbacktrace/configure.ac
+ libbacktrace/Makefile.in: libbacktrace/Makefile.am libbacktrace/aclocal.m4
+ libbacktrace/configure: libbacktrace/configure.ac libbacktrace/aclocal.m4
+ libbacktrace/config.h.in: libbacktrace/configure.ac libbacktrace/aclocal.m4
  # Top level
  Makefile.in: Makefile.tpl Makefile.def
  configure: configure.ac config/acx.m4
diff -Nrcpad gcc-5.4.0/contrib/reghunt/ChangeLog gcc-5.5.0/contrib/reghunt/ChangeLog
*** gcc-5.4.0/contrib/reghunt/ChangeLog	Fri Jun  3 08:41:59 2016
--- gcc-5.5.0/contrib/reghunt/ChangeLog	Tue Oct 10 08:11:01 2017
***************
*** 1,3 ****
--- 1,7 ----
+ 2017-10-10  Release Manager
+ 
+ 	* GCC 5.5.0 released.
+ 
  2016-06-03  Release Manager
  
  	* GCC 5.4.0 released.
diff -Nrcpad gcc-5.4.0/contrib/regression/ChangeLog gcc-5.5.0/contrib/regression/ChangeLog
*** gcc-5.4.0/contrib/regression/ChangeLog	Fri Jun  3 08:41:59 2016
--- gcc-5.5.0/contrib/regression/ChangeLog	Tue Oct 10 08:11:01 2017
***************
*** 1,3 ****
--- 1,7 ----
+ 2017-10-10  Release Manager
+ 
+ 	* GCC 5.5.0 released.
+ 
  2016-06-03  Release Manager
  
  	* GCC 5.4.0 released.
diff -Nrcpad gcc-5.4.0/fixincludes/ChangeLog gcc-5.5.0/fixincludes/ChangeLog
*** gcc-5.4.0/fixincludes/ChangeLog	Fri Jun  3 08:41:59 2016
--- gcc-5.5.0/fixincludes/ChangeLog	Tue Oct 10 08:11:01 2017
***************
*** 1,3 ****
--- 1,45 ----
+ 2017-10-10  Release Manager
+ 
+ 	* GCC 5.5.0 released.
+ 
+ 2017-01-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	Backport from mainline
+ 	2017-01-13  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	PR libstdc++/78979
+ 	* inclhack.def (solaris_gets_c11, solaris_gets_cxx14)
+ 	(solaris_std_gets_cxx14, solaris_stdlib_noreturn): New fixes.
+ 	* fixincl.x: Regenerate.
+ 	* tests/base/iso/stdio_iso.h [SOLARIS_GETS_C11_CHECK,
+ 	SOLARIS_GETS_CXX14_CHECK, SOLARIS_STD_GETS_CXX14_CHECK,
+ 	SOLARIS_STDLIB_NORETURN_CHECK]: New tests.
+ 
+ 2016-12-01  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	Backport from mainline
+ 	2016-11-21  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* inclhack.def (solaris_math_12): New fix.
+ 	(hpux11_fabsf): Replace bypass by *-hp-hpux11* mach selector.
+ 	* fixincl.x: Regenerate.
+ 	* tests/base/math.h [SOLARIS_MATH_12_CHECK]: New test.
+ 
+ 2016-06-15  David Edelsohn  <dje.gcc@gmail.com>
+ 
+ 	Backport from mainline
+ 	2016-06-13  David Edelsohn  <dje.gcc@gmail.com>
+ 
+ 	* inclhack.def (aix_stdlib_malloc): New fix.
+ 	(aix_stdlib_realloc): New fix.
+ 	(aix_stdlib_calloc): New fix.
+ 	(aix_stdlib_valloc): New fix.
+ 	* fixincl.x: Regenerate.
+ 	* tests/base/stdlib.h [AIX_STDLIB_MALLOC]: New test.
+ 	[AIX_STDLIB_REALLOC]: New test.
+ 	[AIX_STDLIB_CALLOC]: New test.
+ 	[AIX_STDLIB_VALLOC]: New test.
+ 
  2016-06-03  Release Manager
  
  	* GCC 5.4.0 released.
diff -Nrcpad gcc-5.4.0/fixincludes/fixincl.x gcc-5.5.0/fixincludes/fixincl.x
*** gcc-5.4.0/fixincludes/fixincl.x	Mon Feb  1 20:25:12 2016
--- gcc-5.5.0/fixincludes/fixincl.x	Mon Jan 30 16:08:42 2017
***************
*** 2,12 ****
   * 
   * DO NOT EDIT THIS FILE   (fixincl.x)
   * 
!  * It has been AutoGen-ed  Monday February  1, 2016 at 03:24:02 PM EST
   * From the definitions    inclhack.def
   * and the template file   fixincl
   */
! /* DO NOT SVN-MERGE THIS FILE, EITHER Mon  1 Feb 2016 15:24:02 EST
   *
   * You must regenerate it.  Use the ./genfixes script.
   *
--- 2,12 ----
   * 
   * DO NOT EDIT THIS FILE   (fixincl.x)
   * 
!  * It has been AutoGen-ed  January  5, 2017 at 06:05:06 PM by AutoGen 5.16.2
   * From the definitions    inclhack.def
   * and the template file   fixincl
   */
! /* DO NOT SVN-MERGE THIS FILE, EITHER Thu Jan  5 18:05:06 CET 2017
   *
   * You must regenerate it.  Use the ./genfixes script.
   *
***************
*** 15,21 ****
   * certain ANSI-incompatible system header files which are fixed to work
   * correctly with ANSI C and placed in a directory that GNU C will search.
   *
!  * This file contains 231 fixup descriptions.
   *
   * See README for more information.
   *
--- 15,21 ----
   * certain ANSI-incompatible system header files which are fixed to work
   * correctly with ANSI C and placed in a directory that GNU C will search.
   *
!  * This file contains 240 fixup descriptions.
   *
   * See README for more information.
   *
*************** static const char* apzAix_Stdio_InlinePa
*** 1547,1552 ****
--- 1547,1700 ----
  
  /* * * * * * * * * * * * * * * * * * * * * * * * * *
   *
+  *  Description of Aix_Stdlib_Malloc fix
+  */
+ tSCC zAix_Stdlib_MallocName[] =
+      "aix_stdlib_malloc";
+ 
+ /*
+  *  File name selection pattern
+  */
+ tSCC zAix_Stdlib_MallocList[] =
+   "stdlib.h\0";
+ /*
+  *  Machine/OS name selection pattern
+  */
+ tSCC* apzAix_Stdlib_MallocMachs[] = {
+         "*-*-aix*",
+         (const char*)NULL };
+ 
+ /*
+  *  content selection pattern - do fix if pattern found
+  */
+ tSCC zAix_Stdlib_MallocSelect0[] =
+        "#define[ \t]+malloc[ \t]+__linux_malloc";
+ 
+ #define    AIX_STDLIB_MALLOC_TEST_CT  1
+ static tTestDesc aAix_Stdlib_MallocTests[] = {
+   { TT_EGREP,    zAix_Stdlib_MallocSelect0, (regex_t*)NULL }, };
+ 
+ /*
+  *  Fix Command Arguments for Aix_Stdlib_Malloc
+  */
+ static const char* apzAix_Stdlib_MallocPatch[] = {
+     "format",
+     "extern void *malloc(size_t) __asm__(\"__linux_malloc\");",
+     (char*)NULL };
+ 
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+  *
+  *  Description of Aix_Stdlib_Realloc fix
+  */
+ tSCC zAix_Stdlib_ReallocName[] =
+      "aix_stdlib_realloc";
+ 
+ /*
+  *  File name selection pattern
+  */
+ tSCC zAix_Stdlib_ReallocList[] =
+   "stdlib.h\0";
+ /*
+  *  Machine/OS name selection pattern
+  */
+ tSCC* apzAix_Stdlib_ReallocMachs[] = {
+         "*-*-aix*",
+         (const char*)NULL };
+ 
+ /*
+  *  content selection pattern - do fix if pattern found
+  */
+ tSCC zAix_Stdlib_ReallocSelect0[] =
+        "#define[ \t]+realloc[ \t]+__linux_realloc";
+ 
+ #define    AIX_STDLIB_REALLOC_TEST_CT  1
+ static tTestDesc aAix_Stdlib_ReallocTests[] = {
+   { TT_EGREP,    zAix_Stdlib_ReallocSelect0, (regex_t*)NULL }, };
+ 
+ /*
+  *  Fix Command Arguments for Aix_Stdlib_Realloc
+  */
+ static const char* apzAix_Stdlib_ReallocPatch[] = {
+     "format",
+     "extern void *realloc(void *, size_t) __asm__(\"__linux_realloc\");",
+     (char*)NULL };
+ 
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+  *
+  *  Description of Aix_Stdlib_Calloc fix
+  */
+ tSCC zAix_Stdlib_CallocName[] =
+      "aix_stdlib_calloc";
+ 
+ /*
+  *  File name selection pattern
+  */
+ tSCC zAix_Stdlib_CallocList[] =
+   "stdlib.h\0";
+ /*
+  *  Machine/OS name selection pattern
+  */
+ tSCC* apzAix_Stdlib_CallocMachs[] = {
+         "*-*-aix*",
+         (const char*)NULL };
+ 
+ /*
+  *  content selection pattern - do fix if pattern found
+  */
+ tSCC zAix_Stdlib_CallocSelect0[] =
+        "#define[ \t]+calloc[ \t]+__linux_calloc";
+ 
+ #define    AIX_STDLIB_CALLOC_TEST_CT  1
+ static tTestDesc aAix_Stdlib_CallocTests[] = {
+   { TT_EGREP,    zAix_Stdlib_CallocSelect0, (regex_t*)NULL }, };
+ 
+ /*
+  *  Fix Command Arguments for Aix_Stdlib_Calloc
+  */
+ static const char* apzAix_Stdlib_CallocPatch[] = {
+     "format",
+     "extern void *calloc(size_t, size_t) __asm__(\"__linux_calloc\");",
+     (char*)NULL };
+ 
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+  *
+  *  Description of Aix_Stdlib_Valloc fix
+  */
+ tSCC zAix_Stdlib_VallocName[] =
+      "aix_stdlib_valloc";
+ 
+ /*
+  *  File name selection pattern
+  */
+ tSCC zAix_Stdlib_VallocList[] =
+   "stdlib.h\0";
+ /*
+  *  Machine/OS name selection pattern
+  */
+ tSCC* apzAix_Stdlib_VallocMachs[] = {
+         "*-*-aix*",
+         (const char*)NULL };
+ 
+ /*
+  *  content selection pattern - do fix if pattern found
+  */
+ tSCC zAix_Stdlib_VallocSelect0[] =
+        "#define[ \t]+valloc[ \t]+__linux_valloc";
+ 
+ #define    AIX_STDLIB_VALLOC_TEST_CT  1
+ static tTestDesc aAix_Stdlib_VallocTests[] = {
+   { TT_EGREP,    zAix_Stdlib_VallocSelect0, (regex_t*)NULL }, };
+ 
+ /*
+  *  Fix Command Arguments for Aix_Stdlib_Valloc
+  */
+ static const char* apzAix_Stdlib_VallocPatch[] = {
+     "format",
+     "extern void *valloc(size_t) __asm__(\"__linux_valloc\");",
+     (char*)NULL };
+ 
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+  *
   *  Description of Aix_Strtof_Const fix
   */
  tSCC zAix_Strtof_ConstName[] =
*************** tSCC zHpux11_FabsfList[] =
*** 4152,4158 ****
  /*
   *  Machine/OS name selection pattern
   */
! #define apzHpux11_FabsfMachs (const char**)NULL
  
  /*
   *  content selection pattern - do fix if pattern found
--- 4300,4308 ----
  /*
   *  Machine/OS name selection pattern
   */
! tSCC* apzHpux11_FabsfMachs[] = {
!         "*-hp-hpux11*",
!         (const char*)NULL };
  
  /*
   *  content selection pattern - do fix if pattern found
*************** tSCC zHpux11_FabsfList[] =
*** 4160,4174 ****
  tSCC zHpux11_FabsfSelect0[] =
         "^[ \t]*#[ \t]*define[ \t]+fabsf\\(.*";
  
! /*
!  *  content bypass pattern - skip fix if pattern found
!  */
! tSCC zHpux11_FabsfBypass0[] =
!        "__cplusplus";
! 
! #define    HPUX11_FABSF_TEST_CT  2
  static tTestDesc aHpux11_FabsfTests[] = {
-   { TT_NEGREP,   zHpux11_FabsfBypass0, (regex_t*)NULL },
    { TT_EGREP,    zHpux11_FabsfSelect0, (regex_t*)NULL }, };
  
  /*
--- 4310,4317 ----
  tSCC zHpux11_FabsfSelect0[] =
         "^[ \t]*#[ \t]*define[ \t]+fabsf\\(.*";
  
! #define    HPUX11_FABSF_TEST_CT  1
  static tTestDesc aHpux11_FabsfTests[] = {
    { TT_EGREP,    zHpux11_FabsfSelect0, (regex_t*)NULL }, };
  
  /*
*************** static const char* apzSolaris_Getc_Stric
*** 6681,6686 ****
--- 6824,6907 ----
  
  /* * * * * * * * * * * * * * * * * * * * * * * * * *
   *
+  *  Description of Solaris_Gets_C11 fix
+  */
+ tSCC zSolaris_Gets_C11Name[] =
+      "solaris_gets_c11";
+ 
+ /*
+  *  File name selection pattern
+  */
+ tSCC zSolaris_Gets_C11List[] =
+   "iso/stdio_iso.h\0";
+ /*
+  *  Machine/OS name selection pattern
+  */
+ tSCC* apzSolaris_Gets_C11Machs[] = {
+         "*-*-solaris2*",
+         (const char*)NULL };
+ 
+ /*
+  *  content selection pattern - do fix if pattern found
+  */
+ tSCC zSolaris_Gets_C11Select0[] =
+        "(extern char[ \t]*\\*gets\\(char \\*\\));";
+ 
+ #define    SOLARIS_GETS_C11_TEST_CT  1
+ static tTestDesc aSolaris_Gets_C11Tests[] = {
+   { TT_EGREP,    zSolaris_Gets_C11Select0, (regex_t*)NULL }, };
+ 
+ /*
+  *  Fix Command Arguments for Solaris_Gets_C11
+  */
+ static const char* apzSolaris_Gets_C11Patch[] = {
+     "format",
+     "#if __STDC_VERSION__ < 201112L && __cplusplus < 201402L\n\
+ %1 __attribute__((__deprecated__));\n\
+ #endif",
+     (char*)NULL };
+ 
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+  *
+  *  Description of Solaris_Gets_Cxx14 fix
+  */
+ tSCC zSolaris_Gets_Cxx14Name[] =
+      "solaris_gets_cxx14";
+ 
+ /*
+  *  File name selection pattern
+  */
+ tSCC zSolaris_Gets_Cxx14List[] =
+   "iso/stdio_iso.h\0";
+ /*
+  *  Machine/OS name selection pattern
+  */
+ tSCC* apzSolaris_Gets_Cxx14Machs[] = {
+         "*-*-solaris2*",
+         (const char*)NULL };
+ 
+ /*
+  *  content selection pattern - do fix if pattern found
+  */
+ tSCC zSolaris_Gets_Cxx14Select0[] =
+        "(#if __STDC_VERSION__ < 201112L)\n\
+ (extern char\t\\*gets\\(char \\*\\) __ATTR_DEPRECATED;)";
+ 
+ #define    SOLARIS_GETS_CXX14_TEST_CT  1
+ static tTestDesc aSolaris_Gets_Cxx14Tests[] = {
+   { TT_EGREP,    zSolaris_Gets_Cxx14Select0, (regex_t*)NULL }, };
+ 
+ /*
+  *  Fix Command Arguments for Solaris_Gets_Cxx14
+  */
+ static const char* apzSolaris_Gets_Cxx14Patch[] = {
+     "format",
+     "%1 && __cplusplus < 201402L\n\
+ %2",
+     (char*)NULL };
+ 
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+  *
   *  Description of Solaris_Int_Const fix
   */
  tSCC zSolaris_Int_ConstName[] =
*************** static const char* apzSolaris_Math_11Pat
*** 7191,7196 ****
--- 7412,7453 ----
  
  /* * * * * * * * * * * * * * * * * * * * * * * * * *
   *
+  *  Description of Solaris_Math_12 fix
+  */
+ tSCC zSolaris_Math_12Name[] =
+      "solaris_math_12";
+ 
+ /*
+  *  File name selection pattern
+  */
+ tSCC zSolaris_Math_12List[] =
+   "math.h\0";
+ /*
+  *  Machine/OS name selection pattern
+  */
+ tSCC* apzSolaris_Math_12Machs[] = {
+         "*-*-solaris2*",
+         (const char*)NULL };
+ 
+ /*
+  *  content selection pattern - do fix if pattern found
+  */
+ tSCC zSolaris_Math_12Select0[] =
+        "#undef.*_GLIBCXX_USE_C99_MATH";
+ 
+ #define    SOLARIS_MATH_12_TEST_CT  1
+ static tTestDesc aSolaris_Math_12Tests[] = {
+   { TT_EGREP,    zSolaris_Math_12Select0, (regex_t*)NULL }, };
+ 
+ /*
+  *  Fix Command Arguments for Solaris_Math_12
+  */
+ static const char* apzSolaris_Math_12Patch[] = { sed_cmd_z,
+     "-e", "/#undef[ \t]*_GLIBCXX_USE_C99_MATH/d",
+     (char*)NULL };
+ 
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+  *
   *  Description of Solaris_Once_Init_1 fix
   */
  tSCC zSolaris_Once_Init_1Name[] =
*************** using std::__flsbuf;\n\
*** 7397,7402 ****
--- 7654,7698 ----
  
  /* * * * * * * * * * * * * * * * * * * * * * * * * *
   *
+  *  Description of Solaris_Std_Gets_Cxx14 fix
+  */
+ tSCC zSolaris_Std_Gets_Cxx14Name[] =
+      "solaris_std_gets_cxx14";
+ 
+ /*
+  *  File name selection pattern
+  */
+ tSCC zSolaris_Std_Gets_Cxx14List[] =
+   "stdio.h\0";
+ /*
+  *  Machine/OS name selection pattern
+  */
+ tSCC* apzSolaris_Std_Gets_Cxx14Machs[] = {
+         "*-*-solaris2*",
+         (const char*)NULL };
+ 
+ /*
+  *  content selection pattern - do fix if pattern found
+  */
+ tSCC zSolaris_Std_Gets_Cxx14Select0[] =
+        "using std::gets;";
+ 
+ #define    SOLARIS_STD_GETS_CXX14_TEST_CT  1
+ static tTestDesc aSolaris_Std_Gets_Cxx14Tests[] = {
+   { TT_EGREP,    zSolaris_Std_Gets_Cxx14Select0, (regex_t*)NULL }, };
+ 
+ /*
+  *  Fix Command Arguments for Solaris_Std_Gets_Cxx14
+  */
+ static const char* apzSolaris_Std_Gets_Cxx14Patch[] = {
+     "format",
+     "#if __cplusplus < 201402L\n\
+ %0\n\
+ #endif",
+     (char*)NULL };
+ 
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+  *
   *  Description of Solaris_Stdio_Tag fix
   */
  tSCC zSolaris_Stdio_TagName[] =
*************** static const char* apzSolaris_Stdio_TagP
*** 7438,7443 ****
--- 7734,7776 ----
  
  /* * * * * * * * * * * * * * * * * * * * * * * * * *
   *
+  *  Description of Solaris_Stdlib_Noreturn fix
+  */
+ tSCC zSolaris_Stdlib_NoreturnName[] =
+      "solaris_stdlib_noreturn";
+ 
+ /*
+  *  File name selection pattern
+  */
+ tSCC zSolaris_Stdlib_NoreturnList[] =
+   "iso/stdlib_c99.h\0";
+ /*
+  *  Machine/OS name selection pattern
+  */
+ tSCC* apzSolaris_Stdlib_NoreturnMachs[] = {
+         "*-*-solaris2*",
+         (const char*)NULL };
+ 
+ /*
+  *  content selection pattern - do fix if pattern found
+  */
+ tSCC zSolaris_Stdlib_NoreturnSelect0[] =
+        "(extern) _Noreturn (void quick_exit\\(int\\));";
+ 
+ #define    SOLARIS_STDLIB_NORETURN_TEST_CT  1
+ static tTestDesc aSolaris_Stdlib_NoreturnTests[] = {
+   { TT_EGREP,    zSolaris_Stdlib_NoreturnSelect0, (regex_t*)NULL }, };
+ 
+ /*
+  *  Fix Command Arguments for Solaris_Stdlib_Noreturn
+  */
+ static const char* apzSolaris_Stdlib_NoreturnPatch[] = {
+     "format",
+     "%1 %2 __attribute__((__noreturn__));",
+     (char*)NULL };
+ 
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+  *
   *  Description of Statsswtch fix
   */
  tSCC zStatsswtchName[] =
*************** static const char* apzX11_SprintfPatch[]
*** 9485,9493 ****
   *
   *  List of all fixes
   */
! #define REGEX_COUNT          268
  #define MACH_LIST_SIZE_LIMIT 187
! #define FIX_COUNT            231
  
  /*
   *  Enumerate the fixes
--- 9818,9826 ----
   *
   *  List of all fixes
   */
! #define REGEX_COUNT          276
  #define MACH_LIST_SIZE_LIMIT 187
! #define FIX_COUNT            240
  
  /*
   *  Enumerate the fixes
*************** typedef enum {
*** 9525,9530 ****
--- 9858,9867 ----
      AIX_STDINT_4_FIXIDX,
      AIX_STDINT_5_FIXIDX,
      AIX_STDIO_INLINE_FIXIDX,
+     AIX_STDLIB_MALLOC_FIXIDX,
+     AIX_STDLIB_REALLOC_FIXIDX,
+     AIX_STDLIB_CALLOC_FIXIDX,
+     AIX_STDLIB_VALLOC_FIXIDX,
      AIX_STRTOF_CONST_FIXIDX,
      AIX_SYSMACHINE_FIXIDX,
      AIX_SYSWAIT_2_FIXIDX,
*************** typedef enum {
*** 9654,9659 ****
--- 9991,9998 ----
      SOLARIS_COMPLEX_CXX_FIXIDX,
      SOLARIS_CXX_LINKAGE_FIXIDX,
      SOLARIS_GETC_STRICT_STDC_FIXIDX,
+     SOLARIS_GETS_C11_FIXIDX,
+     SOLARIS_GETS_CXX14_FIXIDX,
      SOLARIS_INT_CONST_FIXIDX,
      SOLARIS_INT_LIMITS_1_FIXIDX,
      SOLARIS_INT_LIMITS_2_FIXIDX,
*************** typedef enum {
*** 9666,9677 ****
--- 10005,10019 ----
      SOLARIS_MATH_8_FIXIDX,
      SOLARIS_MATH_9_FIXIDX,
      SOLARIS_MATH_11_FIXIDX,
+     SOLARIS_MATH_12_FIXIDX,
      SOLARIS_ONCE_INIT_1_FIXIDX,
      SOLARIS_POSIX_SPAWN_RESTRICT_FIXIDX,
      SOLARIS_POW_INT_OVERLOAD_FIXIDX,
      SOLARIS_RWLOCK_INIT_1_FIXIDX,
      SOLARIS_STD___FILBUF_FIXIDX,
+     SOLARIS_STD_GETS_CXX14_FIXIDX,
      SOLARIS_STDIO_TAG_FIXIDX,
+     SOLARIS_STDLIB_NORETURN_FIXIDX,
      STATSSWTCH_FIXIDX,
      STDIO_STDARG_H_FIXIDX,
      STDIO_VA_LIST_FIXIDX,
*************** tFixDesc fixDescList[ FIX_COUNT ] = {
*** 9887,9892 ****
--- 10229,10254 ----
       AIX_STDIO_INLINE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
       aAix_Stdio_InlineTests,   apzAix_Stdio_InlinePatch, 0 },
  
+   {  zAix_Stdlib_MallocName,    zAix_Stdlib_MallocList,
+      apzAix_Stdlib_MallocMachs,
+      AIX_STDLIB_MALLOC_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+      aAix_Stdlib_MallocTests,   apzAix_Stdlib_MallocPatch, 0 },
+ 
+   {  zAix_Stdlib_ReallocName,    zAix_Stdlib_ReallocList,
+      apzAix_Stdlib_ReallocMachs,
+      AIX_STDLIB_REALLOC_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+      aAix_Stdlib_ReallocTests,   apzAix_Stdlib_ReallocPatch, 0 },
+ 
+   {  zAix_Stdlib_CallocName,    zAix_Stdlib_CallocList,
+      apzAix_Stdlib_CallocMachs,
+      AIX_STDLIB_CALLOC_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+      aAix_Stdlib_CallocTests,   apzAix_Stdlib_CallocPatch, 0 },
+ 
+   {  zAix_Stdlib_VallocName,    zAix_Stdlib_VallocList,
+      apzAix_Stdlib_VallocMachs,
+      AIX_STDLIB_VALLOC_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+      aAix_Stdlib_VallocTests,   apzAix_Stdlib_VallocPatch, 0 },
+ 
    {  zAix_Strtof_ConstName,    zAix_Strtof_ConstList,
       apzAix_Strtof_ConstMachs,
       AIX_STRTOF_CONST_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
*************** tFixDesc fixDescList[ FIX_COUNT ] = {
*** 10532,10537 ****
--- 10894,10909 ----
       SOLARIS_GETC_STRICT_STDC_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
       aSolaris_Getc_Strict_StdcTests,   apzSolaris_Getc_Strict_StdcPatch, 0 },
  
+   {  zSolaris_Gets_C11Name,    zSolaris_Gets_C11List,
+      apzSolaris_Gets_C11Machs,
+      SOLARIS_GETS_C11_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+      aSolaris_Gets_C11Tests,   apzSolaris_Gets_C11Patch, 0 },
+ 
+   {  zSolaris_Gets_Cxx14Name,    zSolaris_Gets_Cxx14List,
+      apzSolaris_Gets_Cxx14Machs,
+      SOLARIS_GETS_CXX14_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+      aSolaris_Gets_Cxx14Tests,   apzSolaris_Gets_Cxx14Patch, 0 },
+ 
    {  zSolaris_Int_ConstName,    zSolaris_Int_ConstList,
       apzSolaris_Int_ConstMachs,
       SOLARIS_INT_CONST_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
*************** tFixDesc fixDescList[ FIX_COUNT ] = {
*** 10592,10597 ****
--- 10964,10974 ----
       SOLARIS_MATH_11_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
       aSolaris_Math_11Tests,   apzSolaris_Math_11Patch, 0 },
  
+   {  zSolaris_Math_12Name,    zSolaris_Math_12List,
+      apzSolaris_Math_12Machs,
+      SOLARIS_MATH_12_TEST_CT, FD_MACH_ONLY,
+      aSolaris_Math_12Tests,   apzSolaris_Math_12Patch, 0 },
+ 
    {  zSolaris_Once_Init_1Name,    zSolaris_Once_Init_1List,
       apzSolaris_Once_Init_1Machs,
       SOLARIS_ONCE_INIT_1_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
*************** tFixDesc fixDescList[ FIX_COUNT ] = {
*** 10617,10627 ****
--- 10994,11014 ----
       SOLARIS_STD___FILBUF_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
       aSolaris_Std___FilbufTests,   apzSolaris_Std___FilbufPatch, 0 },
  
+   {  zSolaris_Std_Gets_Cxx14Name,    zSolaris_Std_Gets_Cxx14List,
+      apzSolaris_Std_Gets_Cxx14Machs,
+      SOLARIS_STD_GETS_CXX14_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+      aSolaris_Std_Gets_Cxx14Tests,   apzSolaris_Std_Gets_Cxx14Patch, 0 },
+ 
    {  zSolaris_Stdio_TagName,    zSolaris_Stdio_TagList,
       apzSolaris_Stdio_TagMachs,
       SOLARIS_STDIO_TAG_TEST_CT, FD_MACH_ONLY,
       aSolaris_Stdio_TagTests,   apzSolaris_Stdio_TagPatch, 0 },
  
+   {  zSolaris_Stdlib_NoreturnName,    zSolaris_Stdlib_NoreturnList,
+      apzSolaris_Stdlib_NoreturnMachs,
+      SOLARIS_STDLIB_NORETURN_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+      aSolaris_Stdlib_NoreturnTests,   apzSolaris_Stdlib_NoreturnPatch, 0 },
+ 
    {  zStatsswtchName,    zStatsswtchList,
       apzStatsswtchMachs,
       STATSSWTCH_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
diff -Nrcpad gcc-5.4.0/fixincludes/inclhack.def gcc-5.5.0/fixincludes/inclhack.def
*** gcc-5.4.0/fixincludes/inclhack.def	Mon Feb  1 20:22:43 2016
--- gcc-5.5.0/fixincludes/inclhack.def	Mon Jan 30 16:08:42 2017
*************** fix = {
*** 911,916 ****
--- 911,958 ----
      test_text = "#ifdef __cplusplus\n}\n\n#ifdef ferror";
  };
  
+ /*
+  * stdlib.h on AIX uses #define on malloc and friends.
+  */
+ fix = {
+     hackname  = aix_stdlib_malloc;
+     mach      = "*-*-aix*";
+     files     = stdlib.h;
+     select    = "#define[ \t]+malloc[ \t]+__linux_malloc";
+     c_fix     = format;
+     c_fix_arg = "extern void *malloc(size_t) __asm__(\"__linux_malloc\");";
+     test_text = "#define malloc __linux_malloc";
+ };
+ 
+ fix = {
+     hackname  = aix_stdlib_realloc;
+     mach      = "*-*-aix*";
+     files     = stdlib.h;
+     select    = "#define[ \t]+realloc[ \t]+__linux_realloc";
+     c_fix     = format;
+     c_fix_arg = "extern void *realloc(void *, size_t) __asm__(\"__linux_realloc\");";
+     test_text = "#define realloc __linux_realloc";
+ };
+ 
+ fix = {
+     hackname  = aix_stdlib_calloc;
+     mach      = "*-*-aix*";
+     files     = stdlib.h;
+     select    = "#define[ \t]+calloc[ \t]+__linux_calloc";
+     c_fix     = format;
+     c_fix_arg = "extern void *calloc(size_t, size_t) __asm__(\"__linux_calloc\");";
+     test_text = "#define calloc __linux_calloc";
+ };
+ 
+ fix = {
+     hackname  = aix_stdlib_valloc;
+     mach      = "*-*-aix*";
+     files     = stdlib.h;
+     select    = "#define[ \t]+valloc[ \t]+__linux_valloc";
+     c_fix     = format;
+     c_fix_arg = "extern void *valloc(size_t) __asm__(\"__linux_valloc\");";
+     test_text = "#define valloc __linux_valloc";
+ };
  
  /*
   * stdlib.h on AIX 4.3 declares strtof() with a non-const first argument.
*************** fix = {
*** 2195,2203 ****
   */
  fix = {
      hackname  = hpux11_fabsf;
      files     = math.h;
      select    = "^[ \t]*#[ \t]*define[ \t]+fabsf\\(.*";
-     bypass    = "__cplusplus";
  
      c_fix     = format;
      c_fix_arg = "#ifndef __cplusplus\n%0\n#endif";
--- 2237,2245 ----
   */
  fix = {
      hackname  = hpux11_fabsf;
+     mach      = "*-hp-hpux11*";
      files     = math.h;
      select    = "^[ \t]*#[ \t]*define[ \t]+fabsf\\(.*";
  
      c_fix     = format;
      c_fix_arg = "#ifndef __cplusplus\n%0\n#endif";
*************** fix = {
*** 3440,3445 ****
--- 3482,3524 ----
  };
  
  /*
+  *  Solaris <iso/stdio_iso.h> should deprecate gets before C11.
+  */
+ fix = {
+     hackname  = solaris_gets_c11;
+     mach      = "*-*-solaris2*";
+     files     = "iso/stdio_iso.h";
+     select    = "(extern char[ \t]*\\*gets\\(char \\*\\));";
+ 
+     c_fix     = format;
+     c_fix_arg = "#if __STDC_VERSION__ < 201112L && __cplusplus < 201402L\n"
+     		"%1 __attribute__((__deprecated__));\n"
+ 		"#endif";
+ 
+     test_text = "extern char	*gets(char *);";
+ };
+ 
+ /*
+  *  Solaris <iso/stdio_iso.h> shouldn't declare gets for C++14.
+  */
+ fix = {
+     hackname  = solaris_gets_cxx14;
+     mach      = "*-*-solaris2*";
+     files     = "iso/stdio_iso.h";
+     select    = <<- _EOSelect_
+ (#if __STDC_VERSION__ < 201112L)
+ (extern char	\*gets\(char \*\) __ATTR_DEPRECATED;)
+ _EOSelect_;
+     c_fix     = format;
+     c_fix_arg = "%1 && __cplusplus < 201402L\n%2";
+ 
+     test_text = <<- _EOText_
+ #if __STDC_VERSION__ < 201112L
+ extern char	*gets(char *) __ATTR_DEPRECATED;
+ _EOText_;
+ };
+ 
+ /*
   * Sun Solaris 2 has a version of sys/int_const.h that defines
   * UINT8_C and UINT16_C to unsigned constants.
   */
*************** _EOText_;
*** 3715,3720 ****
--- 3794,3816 ----
  };
  
  /*
+  * Some versions of Solaris 10+ <math.h> #undef libstdc++-internal macros.
+  */
+ fix = {
+     hackname  = solaris_math_12;
+     files     = math.h;
+     mach      = '*-*-solaris2*';
+     select    = '#undef.*_GLIBCXX_USE_C99_MATH';
+     sed       = "/#undef[ \t]*_GLIBCXX_USE_C99_MATH/d";
+     test_text = << _EOText_
+ #if __cplusplus >= 201103L
+ #undef  _GLIBCXX_USE_C99_MATH
+ #undef  _GLIBCXX_USE_C99_MATH_TR1
+ #endif
+ _EOText_;
+ };
+ 
+ /*
   * Sun Solaris defines PTHREAD_ONCE_INIT as an array containing a
   * structure.  As such, it need two levels of brackets, but only
   * contains one.  Wrap the macro definition in an extra layer.
*************** fix = {
*** 3812,3817 ****
--- 3908,3928 ----
  };
  
  /*
+  *  Solaris <stdio.h> shouldn't use std::gets for C++14.
+  */
+ fix = {
+     hackname  = solaris_std_gets_cxx14;
+     mach      = "*-*-solaris2*";
+     files     = "stdio.h";
+     select    = "using std::gets;";
+ 
+     c_fix     = format;
+     c_fix_arg = "#if __cplusplus < 201402L\n%0\n#endif";
+ 
+     test_text = "using std::gets;";
+ };
+ 
+ /*
   * Sun Solaris 8 has what appears to be some gross workaround for
   * some old version of their c++ compiler.  G++ doesn't want it
   * either, but doesn't want to be tied to SunPRO version numbers.
*************** fix = {
*** 3830,3835 ****
--- 3941,3961 ----
  };
  
  /*
+  *  Solaris <stdlib.h> shouldn't use _Noreturn, breaks with C++.
+  */
+ fix = {
+     hackname  = solaris_stdlib_noreturn;
+     mach      = "*-*-solaris2*";
+     files     = "iso/stdlib_c99.h";
+     select    = "(extern) _Noreturn (void quick_exit\\(int\\));";
+ 
+     c_fix     = format;
+     c_fix_arg = "%1 %2 __attribute__((__noreturn__));";
+ 
+     test_text = "extern _Noreturn void quick_exit(int);";
+ };
+ 
+ /*
   *  a missing semi-colon at the end of the statsswtch structure definition.
   */
  fix = {
diff -Nrcpad gcc-5.4.0/fixincludes/tests/base/iso/stdio_iso.h gcc-5.5.0/fixincludes/tests/base/iso/stdio_iso.h
*** gcc-5.4.0/fixincludes/tests/base/iso/stdio_iso.h	Wed Aug 10 08:43:38 2011
--- gcc-5.5.0/fixincludes/tests/base/iso/stdio_iso.h	Mon Jan 30 16:08:42 2017
***************
*** 12,14 ****
--- 12,27 ----
  #if defined( SOLARIS_GETC_STRICT_STDC_CHECK )
  #if	!defined(_REENTRANT) && !defined(_LP64) && (!defined(_STRICT_STDC) || (__cplusplus >= 199711L))
  #endif  /* SOLARIS_GETC_STRICT_STDC_CHECK */
+ 
+ 
+ #if defined( SOLARIS_GETS_C11_CHECK )
+ #if __STDC_VERSION__ < 201112L && __cplusplus < 201402L
+ extern char	*gets(char *) __attribute__((__deprecated__));
+ #endif
+ #endif  /* SOLARIS_GETS_C11_CHECK */
+ 
+ 
+ #if defined( SOLARIS_GETS_CXX14_CHECK )
+ #if __STDC_VERSION__ < 201112L && __cplusplus < 201402L
+ extern char	*gets(char *) __ATTR_DEPRECATED;
+ #endif  /* SOLARIS_GETS_CXX14_CHECK */
diff -Nrcpad gcc-5.4.0/fixincludes/tests/base/iso/stdlib_c99.h gcc-5.5.0/fixincludes/tests/base/iso/stdlib_c99.h
*** gcc-5.4.0/fixincludes/tests/base/iso/stdlib_c99.h	Thu Jan  1 00:00:00 1970
--- gcc-5.5.0/fixincludes/tests/base/iso/stdlib_c99.h	Mon Jan 30 16:08:42 2017
***************
*** 0 ****
--- 1,14 ----
+ /*  DO NOT EDIT THIS FILE.
+ 
+     It has been auto-edited by fixincludes from:
+ 
+ 	"fixinc/tests/inc/iso/stdlib_c99.h"
+ 
+     This had to be done to correct non-standard usages in the
+     original, manufacturer supplied header file.  */
+ 
+ 
+ 
+ #if defined( SOLARIS_STDLIB_NORETURN_CHECK )
+ extern void quick_exit(int) __attribute__((__noreturn__));
+ #endif  /* SOLARIS_STDLIB_NORETURN_CHECK */
diff -Nrcpad gcc-5.4.0/fixincludes/tests/base/math.h gcc-5.5.0/fixincludes/tests/base/math.h
*** gcc-5.4.0/fixincludes/tests/base/math.h	Sun Oct 28 21:42:48 2012
--- gcc-5.5.0/fixincludes/tests/base/math.h	Thu Dec  1 15:15:40 2016
*************** extern int class();
*** 85,90 ****
--- 85,96 ----
  #endif  /* RS6000_DOUBLE_CHECK */
  
  
+ #if defined( SOLARIS_MATH_12_CHECK )
+ #if __cplusplus >= 201103L
+ #endif
+ #endif  /* SOLARIS_MATH_12_CHECK */
+ 
+ 
  #if defined( STRICT_ANSI_NOT_CTD_CHECK )
  #if 1 && \
  && defined(mumbling) |& ( !defined(__STRICT_ANSI__)) \
diff -Nrcpad gcc-5.4.0/fixincludes/tests/base/stdio.h gcc-5.5.0/fixincludes/tests/base/stdio.h
*** gcc-5.4.0/fixincludes/tests/base/stdio.h	Mon Feb  1 20:22:43 2016
--- gcc-5.5.0/fixincludes/tests/base/stdio.h	Mon Jan 30 16:08:42 2017
*************** using std::__flsbuf;
*** 90,95 ****
--- 90,102 ----
  #endif  /* SOLARIS_STD___FILBUF_CHECK */
  
  
+ #if defined( SOLARIS_STD_GETS_CXX14_CHECK )
+ #if __cplusplus < 201402L
+ using std::gets;
+ #endif
+ #endif  /* SOLARIS_STD_GETS_CXX14_CHECK */
+ 
+ 
  #if defined( STDIO_STDARG_H_CHECK )
  
  #endif  /* STDIO_STDARG_H_CHECK */
diff -Nrcpad gcc-5.4.0/fixincludes/tests/base/stdlib.h gcc-5.5.0/fixincludes/tests/base/stdlib.h
*** gcc-5.4.0/fixincludes/tests/base/stdlib.h	Tue Feb 17 14:45:48 2015
--- gcc-5.5.0/fixincludes/tests/base/stdlib.h	Wed Jun 15 14:43:09 2016
***************
*** 9,14 ****
--- 9,34 ----
  
  
  
+ #if defined( AIX_STDLIB_MALLOC_CHECK )
+ extern void *malloc(size_t) __asm__("__linux_malloc");
+ #endif  /* AIX_STDLIB_MALLOC_CHECK */
+ 
+ 
+ #if defined( AIX_STDLIB_REALLOC_CHECK )
+ extern void *realloc(void *, size_t) __asm__("__linux_realloc");
+ #endif  /* AIX_STDLIB_REALLOC_CHECK */
+ 
+ 
+ #if defined( AIX_STDLIB_CALLOC_CHECK )
+ extern void *calloc(size_t, size_t) __asm__("__linux_calloc");
+ #endif  /* AIX_STDLIB_CALLOC_CHECK */
+ 
+ 
+ #if defined( AIX_STDLIB_VALLOC_CHECK )
+ extern void *valloc(size_t) __asm__("__linux_valloc");
+ #endif  /* AIX_STDLIB_VALLOC_CHECK */
+ 
+ 
  #if defined( AIX_STRTOF_CONST_CHECK )
  extern float    strtof(const char *, char **);
  #endif  /* AIX_STRTOF_CONST_CHECK */
diff -Nrcpad gcc-5.4.0/gcc/BASE-VER gcc-5.5.0/gcc/BASE-VER
*** gcc-5.4.0/gcc/BASE-VER	Fri Jun  3 08:41:59 2016
--- gcc-5.5.0/gcc/BASE-VER	Tue Oct 10 08:11:01 2017
***************
*** 1 ****
! 5.4.0
--- 1 ----
! 5.5.0
diff -Nrcpad gcc-5.4.0/gcc/ChangeLog gcc-5.5.0/gcc/ChangeLog
*** gcc-5.4.0/gcc/ChangeLog	Fri Jun  3 08:41:59 2016
--- gcc-5.5.0/gcc/ChangeLog	Tue Oct 10 08:11:01 2017
***************
*** 1,3 ****
--- 1,2957 ----
+ 2017-10-10  Release Manager
+ 
+ 	* GCC 5.5.0 released.
+ 
+ 2017-10-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2017-09-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config/i386/i386.c (ix86_split_idivmod): Use mode instead of
+ 	always SImode for DIV and MOD in REG_EQUAL notes.
+ 
+ 2017-10-02  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2017-09-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	PR tree-optimization/82337
+ 	* gimple-ssa-strength-reduction.c (find_phi_def): Don't record a
+ 	phi definition if the PHI result appears in an abnormal PHI.
+ 	(find_basis_for_base_expr): Don't record a basis if the LHS of the
+ 	basis appears in an abnormal PHI.
+ 
+ 2017-09-26  Iain Sandoe  <iain@codesourcery.com>
+             Ryan Mounce  <ryan@mounce.com.au>
+ 
+ 	PR bootstrap/81037
+  	Backport from mainline r235362
+  	2016-04-22  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+  
+ 	* system.h (list, map, set, vector): Include conditionally.
+ 	* auto-profile.c (INCLUDE_MAP, INCLUDE_SET): Define.
+ 	* graphite-isl-ast-to-gimple.c (INCLUDE_MAP): Define.
+ 	* ipa-icf.c (INCLUDE_LIST): Define.
+ 	* ipa-icf-gimple.c (INCLUDE_LIST): Define.
+ 	* config/sh/sh.c (INCLUDE_VECTOR): Define.
+ 	* config/sh/sh_treg_combine.cc (INCLUDE_ALGORITHM): Define.
+ 	(INCLUDE_LIST, INCLUDE_VECTOR): Define.
+ 	* fortran/trans-common.c (INCLUDE_MAP): Define.
+ 
+ 	Backport from mainline r235361
+ 	2016-04-22  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+ 
+ 	* auto-profile.c: Remove <string.h> include.
+ 	* diagnostic.c: Remove <new> include.
+ 	* genmatch.c: Likewise.
+ 	* pretty-print.c: Likewise.
+ 	* toplev.c: Likewise
+ 	* c/c-objc-common.c: Likewise.
+ 	* cp/error.c: Likewise.
+ 	* fortran/error.c: Likewise.
+ 
+ 2017-09-22  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	PR tree-optimization/71702
+ 	Backport r230667
+ 	2015-11-20  Jim Wilson  <jim.wilson@linaro.org>
+ 
+ 	* tree-vect-data-refs.c (compare_tree): Call STRIP_NOPS.
+ 
+ 2017-09-21  Alan Modra  <amodra@gmail.com>
+ 
+ 	PR target/81996
+ 	* gcc/config/rs6000/rs6000.c (rs6000_return_addr): Use
+ 	stack_pointer_rtx for count 0.  Update comments.  Break up
+ 	large rtl expression.
+ 
+ 2017-09-19  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR c++/81355
+ 	* config/i386/i386.c (sorted_attr_string): Skip empty strings.
+ 
+ 2017-09-19  Martin Liska  <mliska@suse.cz>
+ 
+ 	Revert backport:
+ 	2017-08-10  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR c++/81355
+ 	* c-attribs.c (handle_target_attribute):
+ 	Report warning for an empty string argument of target attribute.
+ 
+ 2017-09-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2017-04-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/80362
+ 	* fold-const.c (fold_binary_loc): Look at unstripped ops when
+ 	looking for NEGATE_EXPR in -A / -B to A / B folding.
+ 
+ 	2015-11-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/68528
+ 	* fold-const.c (fold_binary_loc): Do not call negate_expr_p
+ 	on stripped operands.
+ 
+ 	2017-03-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/80171
+ 	* gimple-fold.c (fold_ctor_reference): Properly guard against
+ 	NULL return value from canonicalize_constructor_val.
+ 
+ 	2016-06-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/64516
+ 	* fold-const.c (fold_unary_loc): Preserve alignment when
+ 	folding a VIEW_CONVERT_EXPR into a MEM_REF.
+ 
+ 2017-09-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2017-08-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/81687
+ 	* omp-low.c (omp_copy_decl): Don't remap FORCED_LABEL or DECL_NONLOCAL
+ 	LABEL_DECLs.
+ 	* tree-cfg.c (move_stmt_op): Don't adjust DECL_CONTEXT of FORCED_LABEL
+ 	or DECL_NONLOCAL labels.
+ 	(move_stmt_r) <case GIMPLE_LABEL>: Adjust DECL_CONTEXT of FORCED_LABEL
+ 	or DECL_NONLOCAL labels here.
+ 
+ 	2017-08-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/81766
+ 	* function.c (thread_prologue_and_epilogue_insns): Restore
+ 	behavior of always calling find_many_sub_basic_blocks on
+ 	the inserted prologue.
+ 
+ 	2017-08-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/81621
+ 	* bb-reorder.c (pass_partition_blocks::execute): Return TODO_df_finish
+ 	after setting changeable df flags.
+ 
+ 	PR middle-end/81052
+ 	* omp-low.c (diagnose_sb_0): Handle flag_openmp_simd like flag_openmp.
+ 	(pass_diagnose_omp_blocks::gate): Enable also for flag_openmp_simd.
+ 
+ 	2017-08-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/79499
+ 	* function.c (thread_prologue_and_epilogue_insns): Determine blocks
+ 	for find_many_sub_basic_blocks bitmap by looking up BLOCK_FOR_INSN
+ 	of first NONDEBUG_INSN_P in each of the split_prologue_seq and
+ 	prologue_seq sequences - if any.
+ 
+ 2017-09-15  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-08-11  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-opt/79987
+ 	* tree-chkp.c (chkp_get_bounds_for_decl_addr): Do not instrument
+ 	variables of void type.
+ 
+ 2017-09-15  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-06-28  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR sanitizer/81224
+ 	* asan.c (instrument_derefs): Bail out inner references
+ 	that are hard register variables.
+ 
+ 2017-09-15  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-08-30  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR inline-asm/82001
+ 	* ipa-icf-gimple.c (func_checker::compare_tree_list_operand):
+ 	Rename to ...
+ 	(func_checker::compare_asm_inputs_outputs): ... this function.
+ 	(func_checker::compare_gimple_asm): Use the function to compare
+ 	also ASM constrains.
+ 	* ipa-icf-gimple.h: Rename the function.
+ 
+ 2017-09-15  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-08-10  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR c++/81355
+ 	* c-attribs.c (handle_target_attribute):
+ 	Report warning for an empty string argument of target attribute.
+ 
+ 2017-09-15  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-08-08  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-opt/81696
+ 	* ipa-icf-gimple.c (func_checker::compare_cst_or_decl): Consider
+ 	LABEL_DECLs that can be from a different function.
+ 
+ 2017-09-15  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-06-28  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/81128
+ 	* ipa-visibility.c (non_local_p): Handle visibility.
+ 
+ 2017-09-12  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2017-09-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	PR target/81833
+ 	* config/rs6000/altivec.md (altivec_vsum2sws): Convert from a
+ 	define_insn to a define_expand.
+ 	(altivec_vsum2sws_direct): New define_insn.
+ 	(altivec_vsumsws): Convert from a define_insn to a define_expand.
+ 
+ 2017-09-11  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	Backport from mainline
+ 	PR target/82181
+ 	* config/xtensa/xtensa.c (xtensa_mem_offset): Check that both
+ 	words of DImode object are reachable by xtensa_uimm8x4 access.
+ 
+ 2017-09-06  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	Backport from mainline:
+ 	2017-08-30  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	PR tree-optimization/81987
+ 	* gimple-ssa-strength-reduction.c (insert_initializers): Don't
+ 	insert an initializer in a location not dominated by the stride
+ 	definition.
+ 
+ 2017-09-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2017-08-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 		    Jakub Jelinek  <jakub@redhat.com>
+ 		    Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/81503
+ 	* gimple-ssa-strength-reduction.c (replace_mult_candidate): Ensure
+ 	folded constant fits in the target type; reorder tests for clarity.
+ 
+ 2017-08-22  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2017-08-17  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	PR target/80210
+ 	* config/rs6000/rs6000.c (rs6000_activate_target_options): New function.
+ 	(rs6000_set_current_function): Rewrite function to use it.
+ 
+ 2017-08-22  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backport from 2017-07-26 gcc-7-branch r250562.
+ 
+ 	PR 81487
+ 	* tree-ssa-structalias.c (alias_get_name): Use xasprintf instead
+ 	of asprintf.
+ 
+ 2017-08-22  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backport from trunk r247719.
+ 	2017-05-06  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	PR rtl-optimization/75964
+ 	* simplify-rtx.c (simplify_const_relational_operation): Remove
+ 	invalid handling of comparisons of integer ABS.
+ 
+ 2017-08-22  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backport from 2017-07-05 trunk r249995.
+ 
+ 	PR target/81305
+ 	* config/avr/avr.c (avr_out_movhi_mr_r_xmega) [CONSTANT_ADDRESS_P]:
+ 	Don't depend on "optimize > 0".
+ 	(out_movhi_r_mr, out_movqi_mr_r): Same.
+ 	(out_movhi_mr_r, out_movqi_r_mr): Same.
+ 	(avr_address_cost) [CONSTANT_ADDRESS_P]: Don't depend cost for
+ 	io_address_operand on "optimize > 0".
+ 
+ 2017-08-22  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backport from 2016-06-15 trunk r237486.
+ 	Backport from 2017-07-12 trunk r250156.
+ 
+ 	PR target/79883
+ 	PR target/67353
+ 	* config/avr/avr.c (avr_set_current_function): Warn misspelled ISR
+ 	only if -Wmisspelled-isr is on.  In diagnostic messages: Quote
+ 	keywords and (parts of) identifiers.
+ 	[WITH_AVRLIBC]: Warn functions named "ISR", "SIGNAL" or "INTERUPT".
+ 	* doc/invoke.texi (AVR Options) <-Wmisspelled-isr>: Document.
+ 
+ 2017-08-22  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backport from 2017-04-19 trunk r246997.
+ 
+ 	PR target/80462
+ 	* config/avr/avr.c (tree.h): Include it.
+ 	(hash-table.h): Include it.
+ 	(hash-set.h): Include it.
+ 	(symtab.h): Include it.
+ 	(inchash.h): Include it.
+ 	(function.h): Include it.
+ 	(hash-map.h): Include it.
+ 	(plugin-api.h): Include it.
+ 	(ipa-ref.h): Include it.
+ 	(cgraph.h): Include it.
+ 	(avr_encode_section_info): Don't warn for uninitialized progmem
+ 	variable if it's just an alias.
+ 
+ 	Backport from 2017-07-12 trunk r250151.
+ 
+ 	PR target/81407
+ 	* config/avr/avr.c (avr_encode_section_info)
+ 	[progmem && !TREE_READONLY]: Error if progmem object needs
+ 	constructing.
+ 
+ 2017-08-22  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backport from 2017-08-22 trunk r251256.
+ 
+ 	PR target/81910
+ 	* config/avr/avr.c (avr_handle_addr_attribute): Early return if
+ 	not VAR_P. Filter attribute warnings with OPT_Wattributes.
+ 	(avr_attribute_table) <io, io_low, address>: Initialize
+ 	.decl_required with true.
+ 
+ 2017-08-19  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/81894
+ 	* doc/extend.texi (x86 Built-in Functions): Correct the name of
+ 	__builtin_ia32_lzcnt_u16.
+ 
+ 2017-08-17  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backport from mainline
+ 	2017-08-17  Maxim Ostapenko  <m.ostapenko@samsung.com>
+ 
+ 	PR target/81861
+ 	* config/i386/i386.c (ix86_option_override_internal): Save target
+ 	specific options after ix86_stack_protector_guard_reg was changed.
+ 
+ 2017-08-16  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2017-08-08  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	PR tree-optimization/81354
+ 	* gimple-ssa-strength-reduction.c (create_add_on_incoming_edge):
+ 	Insert on edges rather than explicitly creating landing pads.
+ 	(analyze_candidates_and_replace): Commit edge inserts.
+ 
+ 2017-07-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/81604
+ 	* ubsan.c (ubsan_type_descriptor): For UBSAN_PRINT_ARRAY don't
+ 	change type to the element type, instead add eltype variable and
+ 	use it where we are interested in the element type.
+ 
+ 2017-07-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/81555
+ 	PR tree-optimization/81556
+ 	* tree-ssa-reassoc.c (rewrite_expr_tree): Add NEXT_CHANGED argument,
+ 	if true, force CHANGED for the recursive invocation.
+ 	(reassociate_bb): Remember original length of ops array, pass
+ 	len != orig_len as NEXT_CHANGED in rewrite_expr_tree call.
+ 
+ 2017-07-26  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	Backport from mainline r235874
+ 	2016-05-04  Alan Modra  <amodra@gmail.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_elf_output_toc_section_asm_op):
+ 	Align .toc.
+ 
+ 2016-07-25  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2016-07-14  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	PR tree-optimization/81162
+ 	* gimple-ssa-strength-reduction.c (replace_mult_candidate): Don't
+ 	replace a negate with an add.
+ 
+ 2017-07-24  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/80569
+ 	* config/i386/i386.c (ix86_option_override_internal): Disable
+ 	BMI, BMI2 and TBM instructions for -m16.
+ 
+ 2017-07-18  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/81471
+ 	* config/i386/i386.md (rorx_immediate_operand): New mode attribute.
+ 	(*bmi2_rorx<mode>3_1): Use rorx_immediate_operand as
+ 	operand 2 predicate.
+ 	(*bmi2_rorxsi3_1_zext): Use const_0_to_31_operand as
+ 	operand 2 predicate.
+ 	(ror,rol -> rorx splitters): Use const_int_operand as
+ 	operand 2 predicate.
+ 
+ 2017-07-14  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backport from mainline
+ 	2017-07-10  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/81375
+ 	* config/i386/i386.md (divsf3): Add TARGET_SSE to TARGET_SSE_MATH.
+ 	(rcpps): Ditto.
+ 	(*rsqrtsf2_sse): Ditto.
+ 	(rsqrtsf2): Ditto.
+ 	(div<mode>3): Macroize insn from divdf3 and divsf3
+ 	using MODEF mode iterator.
+ 
+ 	Backport from mainline
+ 	2017-07-04  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/81300
+ 	* config/i386/i386.md (setcc + movzbl/and to xor + setcc peepholes):
+ 	Require dead FLAGS_REG at the beginning of a peephole.
+ 
+ 2017-07-03  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	backport from mainline:
+ 	PR tree-optimization/81192
+ 	2017-07-03  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* tree-ssa-tail-merge.c (same_succ_flush_bb): Handle
+ 	BB_SAME_SUCC (bb) == NULL.
+ 
+ 2017-06-27  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	Revert:
+ 	Backports from trunk:
+ 
+ 	2017-04-12  Segher Boessenkool  <segher@kernel.crashing.org>
+ 	PR target/80382
+ 	* config/rs6000/sync.md (atomic_load<mode>, atomic_store<mode): Test
+ 	for quad_address_p for TImode, instead of just not indexed_address.
+ 
+ 	2017-06-09  Segher Boessenkool  <segher@kernel.crashing.org>
+ 	PR target/80966
+ 	* config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Assert that
+ 	gen_add3_insn did not fail.
+ 	* config/rs6000/rs6000.md (add<mode>3): If asked to add a constant to
+ 	r0, construct that number in a temporary reg and add that reg to r0.
+ 	If asked to put the result in r0 as well, fail.
+ 
+ 2017-06-27  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	Backports from trunk:
+ 
+ 	2016-08-15  Segher Boessenkool  <segher@kernel.crashing.org>
+ 	PR rtl-optimization/73650
+ 	* lra-constraints.c (simple_move_p): If the insn is multiple_sets
+ 	it is not a simple move.
+ 
+ 	2017-01-20  Segher Boessenkool  <segher@kernel.crashing.org>
+ 	PR target/61729
+ 	PR target/77850
+ 	* config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Adjust address to
+ 	read from, for big endian.
+ 
+ 	2017-04-12  Segher Boessenkool  <segher@kernel.crashing.org>
+ 	PR target/80382
+ 	* config/rs6000/sync.md (atomic_load<mode>, atomic_store<mode): Test
+ 	for quad_address_p for TImode, instead of just not indexed_address.
+ 
+ 	2017-05-17  Segher Boessenkool  <segher@kernel.crashing.org>
+ 	PR middle-end/80692
+ 	* real.c (do_compare): Give decimal_do_compare preference over
+ 	comparing just the signs.
+ 
+ 	2017-05-31  Segher Boessenkool  <segher@kernel.crashing.org>
+ 	PR target/80618
+ 	* config/rs6000/vector.md (*vector_uneq<mode>): Write the nor in the
+ 	splitter result in the canonical way.
+ 
+ 	2017-06-09  Segher Boessenkool  <segher@kernel.crashing.org>
+ 	PR target/80966
+ 	* config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Assert that
+ 	gen_add3_insn did not fail.
+ 	* config/rs6000/rs6000.md (add<mode>3): If asked to add a constant to
+ 	r0, construct that number in a temporary reg and add that reg to r0.
+ 	If asked to put the result in r0 as well, fail.
+ 
+ 	2017-06-23  Segher Boessenkool  <segher@kernel.crashing.org>
+ 	PR middle-end/80902
+ 	* builtins.c (expand_builtin_atomic_fetch_op): If emitting code after
+ 	a call, force the call to not be a tail call.
+ 
+ 2017-06-23  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	Backport from mainline
+ 	2017-05-04  Prakhar Bahuguna  <prakhar.bahuguna@arm.com>
+ 
+ 	* config/arm/arm-builtins.c (arm_init_builtins): Rename
+ 	__builtin_arm_ldfscr to __builtin_arm_get_fpscr, and rename
+ 	__builtin_arm_stfscr to __builtin_arm_set_fpscr.
+ 
+ 2017-06-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-05-31  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/79155
+ 	* config/i386/cpuid.h: Fix typo in a comment in cpuid.h.
+ 
+ 2017-06-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-05-30  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR other/80909
+ 	* auto-profile.c (get_function_decl_from_block): Fix
+ 	parenthesis.
+ 
+ 2017-06-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-05-26  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/80663
+ 	* params.def: Bound partial-inlining-entry-probability param.
+ 
+ 2017-06-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-05-16  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/79850.
+ 	* ipa-devirt.c (odr_types_equivalent_p): Fix typo.
+ 
+ 2017-06-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-05-15  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR driver/31468
+ 	* gcc.c (process_command): Do not allow empty argument of -o option.
+ 
+ 2017-06-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-05-02  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/gcov.texi: Add missing preposition.
+ 	* gcov.c (function_info::function_info): Properly fill up
+ 	all member variables.
+ 
+ 2017-06-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-05-02  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR other/80589
+ 	* common.opt: Fix typo.
+ 	* doc/invoke.texi: Likewise.
+ 
+ 2017-06-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-04-28  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/gcov.texi: Enhance documentation of gcov.
+ 
+ 2017-06-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-04-28  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/gcov.texi: Sort options in alphabetic order.
+ 	* doc/gcov-dump.texi: Likewise.
+ 	* doc/gcov-tool.texi: Likewise.
+ 	* gcov.c (print_usage): Likewise.
+ 	* gcov-dump.c (print_usage): Likewise.
+ 	* gcov-tool.c (print_merge_usage_message): Likewise.
+ 	(print_rewrite_usage_message): Likewise.
+ 	(print_overlap_usage_message): Likewise.
+ 
+ 2017-06-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-04-28  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/53915
+ 	* gcov.c (format_gcov): Print 'NAN %' when top > bottom.
+ 
+ 2017-06-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-04-28  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR driver/56469
+ 	* coverage.c (coverage_remove_note_file): New function.
+ 	* coverage.h: Declare the function.
+ 	* toplev.c (finalize): Clean if an error has been seen.
+ 
+ 2017-06-09  David S. Miller  <davem@davemloft.net>
+ 
+ 	PR target/80968
+ 	* config/sparc/sparc.c (sparc_flat_expand_epilogue): Don't
+ 	emit frame blockage here.
+ 	(sparc_expand_epilogue): Do it here.
+ 	* config/sparc/sparc.md (return expander): Emit frame blockage
+ 	for alloca here too.
+ 
+ 2017-06-06  David S. Miller  <davem@davemloft.net>
+ 
+ 	PR target/80968
+ 	* config/sparc/sparc.c (sparc_expand_prologue): Emit frame
+ 	blockage if function uses alloca.
+ 
+ 2017-06-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2016-08-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config/i386/rdseedintrin.h (_rdseed16_step, _rdseed32_step,
+ 	_rdseed64_step): Uglify argument names and/or local variable names
+ 	in inline functions.
+ 	* config/i386/rtmintrin.h (_xabort): Likewise.
+ 	* config/i386/avx512vlintrin.h (_mm256_ternarylogic_epi64,
+ 	_mm256_mask_ternarylogic_epi64, _mm256_maskz_ternarylogic_epi64,
+ 	_mm256_ternarylogic_epi32, _mm256_mask_ternarylogic_epi32,
+ 	_mm256_maskz_ternarylogic_epi32, _mm_ternarylogic_epi64,
+ 	_mm_mask_ternarylogic_epi64, _mm_maskz_ternarylogic_epi64,
+ 	_mm_ternarylogic_epi32, _mm_mask_ternarylogic_epi32,
+ 	_mm_maskz_ternarylogic_epi32): Likewise.
+ 	* config/i386/lwpintrin.h (__llwpcb, __lwpval32, __lwpval64,
+ 	__lwpins32, __lwpins64): Likewise.
+ 	* config/i386/avx2intrin.h (_mm_i32gather_pd, _mm_mask_i32gather_pd,
+ 	_mm256_i32gather_pd, _mm256_mask_i32gather_pd, _mm_i64gather_pd,
+ 	_mm_mask_i64gather_pd, _mm256_i64gather_pd, _mm256_mask_i64gather_pd,
+ 	_mm_i32gather_ps, _mm_mask_i32gather_ps, _mm256_i32gather_ps,
+ 	_mm256_mask_i32gather_ps, _mm_i64gather_ps, _mm_mask_i64gather_ps,
+ 	_mm256_i64gather_ps, _mm256_mask_i64gather_ps, _mm_i32gather_epi64,
+ 	_mm_mask_i32gather_epi64, _mm256_i32gather_epi64,
+ 	_mm256_mask_i32gather_epi64, _mm_i64gather_epi64,
+ 	_mm_mask_i64gather_epi64, _mm256_i64gather_epi64,
+ 	_mm256_mask_i64gather_epi64, _mm_i32gather_epi32,
+ 	_mm_mask_i32gather_epi32, _mm256_i32gather_epi32,
+ 	_mm256_mask_i32gather_epi32, _mm_i64gather_epi32,
+ 	_mm_mask_i64gather_epi32, _mm256_i64gather_epi32,
+ 	_mm256_mask_i64gather_epi32): Likewise.
+ 	* config/i386/pmm_malloc.h (_mm_malloc, _mm_free): Likewise.
+ 	* config/i386/ia32intrin.h (__writeeflags): Likewise.
+ 	* config/i386/avx512pfintrin.h (_mm512_mask_prefetch_i32gather_pd,
+ 	_mm512_mask_prefetch_i32gather_ps, _mm512_mask_prefetch_i64gather_pd,
+ 	_mm512_mask_prefetch_i64gather_ps, _mm512_prefetch_i32scatter_pd,
+ 	_mm512_prefetch_i32scatter_ps, _mm512_mask_prefetch_i32scatter_pd,
+ 	_mm512_mask_prefetch_i32scatter_ps, _mm512_prefetch_i64scatter_pd,
+ 	_mm512_prefetch_i64scatter_ps, _mm512_mask_prefetch_i64scatter_pd,
+ 	_mm512_mask_prefetch_i64scatter_ps): Likewise.
+ 	* config/i386/gmm_malloc.h (_mm_malloc, _mm_free): Likewise.
+ 	* config/i386/avx512fintrin.h (_mm512_ternarylogic_epi64,
+ 	_mm512_mask_ternarylogic_epi64, _mm512_maskz_ternarylogic_epi64,
+ 	_mm512_ternarylogic_epi32, _mm512_mask_ternarylogic_epi32,
+ 	_mm512_maskz_ternarylogic_epi32, _mm512_i32gather_ps,
+ 	_mm512_mask_i32gather_ps, _mm512_i32gather_pd, _mm512_i64gather_ps,
+ 	_mm512_i64gather_pd, _mm512_i32gather_epi32, _mm512_i32gather_epi64,
+ 	_mm512_i64gather_epi32, _mm512_i64gather_epi64): Likewise.
+ 
+ 2017-05-30  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	Backport from mainline
+ 	2017-05-29  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	* config/xtensa/xtensa.c (xtensa_emit_call): Use
+ 	HOST_WIDE_INT_PRINT_HEX instead of 0x%lx format string.
+ 	(print_operand): Use HOST_WIDE_INT_PRINT_DEC instead of %ld
+ 	format string.
+ 
+ 2017-05-30  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	Backport from mainline
+ 	2016-11-29  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	* config/xtensa/xtensa.c (hwloop_optimize): Don't emit zero
+ 	overhead loop start between a call and its CALL_ARG_LOCATION
+ 	note.
+ 
+ 2017-05-30  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	Backport from mainline
+ 	2015-09-15  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	* config/xtensa/xtensa.h (DWARF_ALT_FRAME_RETURN_COLUMN): New
+ 	definition.
+ 	(DWARF_FRAME_REGISTERS): Reserve space for one extra register in
+ 	call0 ABI.
+ 
+ 2017-05-30  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	Backport from mainline
+ 	2015-09-15  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	* config/xtensa/xtensa.c (xtensa_call_tls_desc): Use a10 or a2
+ 	to pass TLS call argument, according to current ABI.
+ 	* config/xtensa/xtensa.md (tls_call pattern): Use callx8 or
+ 	callx0 for TLS call, according to current ABI.
+ 
+ 2017-05-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2017-04-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* Makefile.in (s-options): Invoke opt-gather.awk with LC_ALL=C in the
+ 	environment.
+ 
+ 	2017-04-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/80385
+ 	* simplify-rtx.c (simplify_unary_operation_1): Don't transform
+ 	(not (neg X)) into (plus X -1) for complex or non-integral modes.
+ 
+ 	PR libgomp/80394
+ 	* omp-low.c (scan_omp_task): Don't optimize away empty tasks
+ 	if they have any depend clauses.
+ 
+ 	2017-04-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/80286
+ 	* config/i386/i386.c (ix86_expand_args_builtin): If op has scalar
+ 	int mode, convert_modes it to mode as unsigned, otherwise use
+ 	lowpart_subreg to mode rather than SImode.
+ 	* config/i386/sse.md (<mask_codefor>ashr<mode>3<mask_name>,
+ 	ashr<mode>3, ashr<mode>3<mask_name>, <shift_insn><mode>3<mask_name>):
+ 	Use DImode instead of SImode for the shift count operand.
+ 	* config/i386/mmx.md (mmx_ashr<mode>3, mmx_<shift_insn><mode>3):
+ 	Likewise.
+ 
+ 	2017-03-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/80025
+ 	* cselib.c (cselib_hasher::equal): Pass 0 to rtx_equal_for_cselib_1.
+ 	(rtx_equal_for_cselib_1): Add depth argument.  If depth
+ 	is 128, don't look up VALUE locs and punt.  Increment
+ 	depth in recursive calls when walking VALUE locs.
+ 
+ 	2017-03-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/80168
+ 	* asan.c (instrument_derefs): Copy over last operand from
+ 	original COMPONENT_REF to the new COMPONENT_REF with
+ 	DECL_BIT_FIELD_REPRESENTATIVE.
+ 	* ubsan.c (instrument_object_size): Likewise.
+ 
+ 	2017-03-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/80112
+ 	* loop-doloop.c (doloop_condition_get): Don't check condition
+ 	if cmp isn't SET with IF_THEN_ELSE src.
+ 
+ 	2017-03-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/80129
+ 	* gimplify.c (gimplify_modify_expr_rhs) <case COND_EXPR>: Clear
+ 	TREE_READONLY on result if writing it more than once.
+ 
+ 	2017-03-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/79944
+ 	* asan.c (get_mem_refs_of_builtin_call): For BUILT_IN_ATOMIC* and
+ 	BUILT_IN_SYNC*, determine the access type from the size suffix and
+ 	always build a MEM_REF with that type.  Handle forgotten
+ 	BUILT_IN_SYNC_FETCH_AND_NAND_16 and BUILT_IN_SYNC_NAND_AND_FETCH_16.
+ 
+ 	PR target/79932
+ 	* config/i386/avx512vlintrin.h (_mm256_cmpge_epi32_mask,
+ 	_mm256_cmpge_epi64_mask, _mm256_cmpge_epu32_mask,
+ 	_mm256_cmpge_epu64_mask, _mm256_cmple_epi32_mask,
+ 	_mm256_cmple_epi64_mask, _mm256_cmple_epu32_mask,
+ 	_mm256_cmple_epu64_mask, _mm256_cmplt_epi32_mask,
+ 	_mm256_cmplt_epi64_mask, _mm256_cmplt_epu32_mask,
+ 	_mm256_cmplt_epu64_mask, _mm256_cmpneq_epi32_mask,
+ 	_mm256_cmpneq_epi64_mask, _mm256_cmpneq_epu32_mask,
+ 	_mm256_cmpneq_epu64_mask, _mm256_mask_cmpge_epi32_mask,
+ 	_mm256_mask_cmpge_epi64_mask, _mm256_mask_cmpge_epu32_mask,
+ 	_mm256_mask_cmpge_epu64_mask, _mm256_mask_cmple_epi32_mask,
+ 	_mm256_mask_cmple_epi64_mask, _mm256_mask_cmple_epu32_mask,
+ 	_mm256_mask_cmple_epu64_mask, _mm256_mask_cmplt_epi32_mask,
+ 	_mm256_mask_cmplt_epi64_mask, _mm256_mask_cmplt_epu32_mask,
+ 	_mm256_mask_cmplt_epu64_mask, _mm256_mask_cmpneq_epi32_mask,
+ 	_mm256_mask_cmpneq_epi64_mask, _mm256_mask_cmpneq_epu32_mask,
+ 	_mm256_mask_cmpneq_epu64_mask, _mm_cmpge_epi32_mask,
+ 	_mm_cmpge_epi64_mask, _mm_cmpge_epu32_mask, _mm_cmpge_epu64_mask,
+ 	_mm_cmple_epi32_mask, _mm_cmple_epi64_mask, _mm_cmple_epu32_mask,
+ 	_mm_cmple_epu64_mask, _mm_cmplt_epi32_mask, _mm_cmplt_epi64_mask,
+ 	_mm_cmplt_epu32_mask, _mm_cmplt_epu64_mask, _mm_cmpneq_epi32_mask,
+ 	_mm_cmpneq_epi64_mask, _mm_cmpneq_epu32_mask, _mm_cmpneq_epu64_mask,
+ 	_mm_mask_cmpge_epi32_mask, _mm_mask_cmpge_epi64_mask,
+ 	_mm_mask_cmpge_epu32_mask, _mm_mask_cmpge_epu64_mask,
+ 	_mm_mask_cmple_epi32_mask, _mm_mask_cmple_epi64_mask,
+ 	_mm_mask_cmple_epu32_mask, _mm_mask_cmple_epu64_mask,
+ 	_mm_mask_cmplt_epi32_mask, _mm_mask_cmplt_epi64_mask,
+ 	_mm_mask_cmplt_epu32_mask, _mm_mask_cmplt_epu64_mask,
+ 	_mm_mask_cmpneq_epi32_mask, _mm_mask_cmpneq_epi64_mask,
+ 	_mm_mask_cmpneq_epu32_mask, _mm_mask_cmpneq_epu64_mask): Move
+ 	definitions outside of __OPTIMIZE__ guarded section.
+ 
+ 	PR target/79932
+ 	* config/i386/avx512bwintrin.h (_mm512_packs_epi32,
+ 	_mm512_maskz_packs_epi32, _mm512_mask_packs_epi32,
+ 	_mm512_packus_epi32, _mm512_maskz_packus_epi32,
+ 	_mm512_mask_packus_epi32): Move definitions outside of __OPTIMIZE__
+ 	guarded section.
+ 
+ 	2017-03-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/79901
+ 	* config/i386/sse.md (*avx512bw_<code><mode>3<mask_name>): Renamed to
+ 	...
+ 	(*avx512f_<code><mode>3<mask_name>): ... this.
+ 	(<code><mode>3 with maxmin code iterator): Use VI8_AVX2_AVX512F
+ 	iterator instead of VI8_AVX2_AVX512BW.
+ 
+ 	PR rtl-optimization/79901
+ 	* expr.c (expand_expr_real_2): For vector MIN/MAX, if there is no
+ 	min/max expander, expand it using expand_vec_cond_expr.
+ 
+ 	2017-03-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/79807
+ 	* config/i386/i386.c (ix86_expand_multi_arg_builtin): If target
+ 	is a memory operand, increase num_memory.
+ 	(ix86_expand_args_builtin): Likewise.
+ 
+ 	2017-02-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/79729
+ 	* config/i386/i386.c (ix86_print_operand) <case 'R'>: Replace
+ 	gcc_unreachable with output_operand_lossage.
+ 
+ 	2017-02-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/79396
+ 	* tree-eh.c (operation_could_trap_p, stmt_could_throw_1_p): Handle
+ 	FMA_EXPR like tcc_binary or tcc_unary.
+ 
+ 	2017-02-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/79570
+ 	* sel-sched.c (moveup_expr_cached): Don't call sel_bb_head
+ 	on temporarily removed DEBUG_INSNs.
+ 
+ 	PR target/79494
+ 	* config/i386/i386.c (ix86_expand_split_stack_prologue): Call
+ 	make_reg_eh_region_note_nothrow_nononlocal on call_insn.
+ 
+ 	2017-02-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/79568
+ 	* config/i386/i386.c (ix86_expand_builtin): Handle
+ 	OPTION_MASK_ISA_AVX512VL and OPTION_MASK_ISA_64BIT in
+ 	ix86_builtins_isa[fcode].isa as a requirement of those
+ 	flags and any other flag in the bitmask.
+ 	(ix86_init_mmx_sse_builtins): Use 0 instead of
+ 	~OPTION_MASK_ISA_64BIT as mask.
+ 	* config/i386/i386-builtin.def (bdesc_special_args,
+ 	bdesc_args): Likewise.
+ 
+ 	2017-02-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/79559
+ 	* config/i386/i386.c (ix86_print_operand): Use output_operand_lossage
+ 	instead of gcc_assert for K, r and R code checks.  Formatting fixes.
+ 
+ 	2017-02-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/79411
+ 	* tree-ssa-reassoc.c (is_reassociable_op): Return false if
+ 	stmt operands are SSA_NAMEs used in abnormal phis.
+ 	(can_reassociate_p): Return false if op is SSA_NAME used in abnormal
+ 	phis.
+ 
+ 	2017-02-07  Jakub Jelinek  <jakub@redhat.com>
+ 		    Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/79399
+ 	* ira-int.h (struct target_ira_int): Change x_max_struct_costs_size
+ 	type from int to size_t.
+ 	* ira-costs.c (struct_costs_size): Change type from int to size_t.
+ 
+ 	2017-02-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/79197
+ 	* config/rs6000/rs6000.md (*fixuns_trunc<mode>di2_fctiduz): Rename to ...
+ 	(fixuns_trunc<mode>di2): ... this, remove previous expander.  Put all
+ 	conditions on a single line.
+ 
+ 	2016-12-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR ipa/77905
+ 	* ipa-pure-const.c (cdtor_p): Return true for
+ 	DECL_STATIC_{CON,DE}STRUCTOR even when it is
+ 	DECL_LOOPING_CONST_OR_PURE_P.
+ 
+ 	2016-12-14  Wilco Dijkstra  <wdijkstr@arm.com>
+ 		    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/78796
+ 	* config/aarch64/aarch64.c (aarch64_classify_symbol): Merge large
+ 	model checks into switch.
+ 
+ 	2016-11-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/78298
+ 	* tree-nested.c (convert_local_reference_stmt): After adding
+ 	shared (FRAME.NN) clause to omp parallel, task or target,
+ 	add it also to all outer omp parallel, task or target constructs.
+ 
+ 	2016-11-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/69183
+ 	* omp-low.c (build_outer_var_ref): Change lastprivate argument
+ 	to code, pass it recursively, adjust uses.  For OMP_CLAUSE_PRIVATE
+ 	on worksharing constructs, treat it like clauses on simd construct.
+ 	Formatting fix.
+ 	(lower_rec_input_clauses): For OMP_CLAUSE_PRIVATE_OUTER_REF pass
+ 	OMP_CLAUSE_PRIVATE as last argument to build_outer_var_ref.
+ 	(lower_lastprivate_clauses): Pass OMP_CLAUSE_LASTPRIVATE instead
+ 	of true as last argument to build_outer_var_ref.
+ 
+ 	2016-11-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/78416
+ 	* expmed.c (expand_divmod): Use wide_int for computation of
+ 	op1_is_pow2.  Don't set it if op1 is 0.  Formatting fixes.
+ 	Use size <= HOST_BITS_PER_WIDE_INT instead of
+ 	HOST_BITS_PER_WIDE_INT >= size.
+ 
+ 	2016-11-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/67335
+ 	* omp-low.c (simd_clone_adjust_argument_types): Use NULL prefix
+ 	for tmp simd array if DECL_NAME (parm) is NULL.
+ 
+ 	2016-11-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/78378
+ 	* combine.c (make_extraction): Use force_to_mode for non-{REG,MEM}
+ 	inner only if pos is 0.  Fix up formatting.
+ 
+ 	2016-11-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/78227
+ 	* config/i386/i386.c (ix86_expand_sse_cmp): Force dest into
+ 	cmp_mode argument even for -O0 if cmp_mode != mode and maskcmp.
+ 
+ 	2016-10-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/77919
+ 	* expr.c (expand_expr_real_1) <normal_inner_ref>: Only avoid forcing
+ 	into memory if both modes are complex and their inner modes have the
+ 	same precision.  If the two modes are different complex modes, convert
+ 	each part separately and generate a new CONCAT.
+ 
+ 	2016-10-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/77919
+ 	* expr.c (expand_expr_real_1) <normal_inner_ref>: Force CONCAT into
+ 	MEM if mode1 is not a complex mode.
+ 
+ 	2016-10-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/66343
+ 	* ubsan.c (ubsan_ids): New GTY(()) array.
+ 	(ubsan_type_descriptor, ubsan_create_data): Use ubsan_ids
+ 	instead of static local counters.
+ 
+ 	2016-09-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/77665
+ 	* tree-inline.c (remap_gimple_stmt): Set has_simduid_loops
+ 	for all IFN_GOMP_SIMD_* internal fns.
+ 
+ 	2016-09-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/77624
+ 	* builtins.c (fold_builtin_atomic_always_lock_free): Only look through
+ 	cast to void * if the cast is from some other pointer type.
+ 
+ 	2016-09-19  Jakub Jelinek  <jakub@redhat.com>
+ 		    Jan Hubicka  <jh@suse.cz>
+ 
+ 	PR target/77587
+ 	* cgraph.c (cgraph_node::rtl_info): Pass &avail to
+ 	ultimate_alias_target call, return NULL if avail < AVAIL_AVAILABLE.
+ 	Call ultimate_alias_target just once, not up to 4 times.
+ 
+ 	2016-09-16  Jakub Jelinek  <jakub@redhat.com>
+ 		    Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR middle-end/77594
+ 	* internal-fn.c (expand_arith_overflow) <case MINUS_EXPR>: Don't fall
+ 	through into expand_addsub_overflow after expand_neg_overflow.
+ 
+ 	2016-09-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/68260
+ 	* tsan.c: Include target.h.
+ 	(enum tsan_atomic_action): Add bool_clear and bool_test_and_set.
+ 	(BOOL_CLEAR, BOOL_TEST_AND_SET): Define.
+ 	(tsan_atomic_table): Add BUILT_IN_ATOMIC_CLEAR and
+ 	BUILT_IN_ATOMIC_TEST_AND_SET entries.
+ 	(instrument_builtin_call): Handle bool_clear and bool_test_and_set.
+ 
+ 	2016-09-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/77516
+ 	* omp-low.c (lower_rec_simd_input_clauses): Use max_vf for non-positive
+ 	OMP_CLAUSE_SAFELEN_EXPR.
+ 
+ 	2016-08-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/77363
+ 	* dwarf2out.c (modified_type_die): Use lookup_type_die (type)
+ 	instead of lookup_type_die (type_main_variant (type)) even for array
+ 	types.
+ 
+ 	PR middle-end/77377
+ 	* simplify-rtx.c (avoid_constant_pool_reference): For out of bounds
+ 	constant pool reference return x instead of c.
+ 
+ 	2016-08-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/71910
+ 	* tree-cfg.c (execute_fixup_cfg): Add node variable, use it.  Before inlining,
+ 	add cgraph edge for the added __builtin_unreachable call.
+ 
+ 	2016-08-15  Martin Liska  <mliska@suse.cz>
+ 		    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/72824
+ 	* tree-loop-distribution.c (const_with_all_bytes_same)
+ 	<case VECTOR_CST>: Fix a typo.
+ 
+ 	2016-08-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/72824
+ 	* tree-loop-distribution.c (const_with_all_bytes_same): Verify
+ 	real_zerop is not negative.
+ 
+ 	2016-07-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/71953
+ 	* asan.c (asan_dynamic_init_call): Call asan_init_shadow_ptr_types
+ 	before builtin_decl_implicit.
+ 
+ 2017-05-29  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/install.texi (Options specification): Move entry of
+ 	--enable-sjlj-exceptions.
+ 
+ 2017-05-29  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-04-24  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR middle-end/79931
+ 	* ipa-devirt.c (dump_possible_polymorphic_call_targets): Fix ICE.
+ 
+ 2017-05-29  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-04-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR ipa/65972
+ 	* auto-profile.c (afdo_vpt_for_early_inline): Update SSA
+ 	when needed by AutoPGO.
+ 
+ 2017-05-29  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-04-19  Paulo J. Matos  <paulo@matos-sorge.com>
+ 
+ 	PR lto/50345
+ 	* doc/lto.texi: Remove an extra 'that'.
+ 
+ 2017-05-29  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-04-18  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/78783
+ 	* gcov-tool.c (gcov_output_files): Validate that destination
+ 	file is either removed by the tool or by a user.
+ 
+ 2017-05-29  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-04-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/80413
+ 	* gcov-io.c (gcov_write_string): Copy to buffer just when
+ 	allocated size is greater than zero.
+ 
+ 2017-05-29  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-04-11  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/80212
+ 	* cgraph.c (cgraph_node::dump): Dump calls_comdat_local.
+ 	* ipa-split.c (split_function): Create a local comdat symbol
+ 	if caller is in a comdat group.
+ 
+ 2017-05-29  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-04-11  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/80212
+ 	* ipa-cp.c (determine_versionability): Handle calls_comdat_local
+ 	flags.
+ 
+ 2017-05-29  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-04-11  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR sanitizer/70878
+ 	* ubsan.c (instrument_object_size): Do not instrument register
+ 	variables.
+ 
+ 2017-05-29  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-04-10  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/80224
+ 	* gcov.c (print_usage): Fix usage string.
+ 	(get_gcov_intermediate_filename): Remove.
+ 	(output_gcov_file): Use both for normal and intermediate format.
+ 	(generate_results): Do not initialize special file for
+ 	intermediate format.
+ 
+ 2017-05-29  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-03-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR ipa/80205
+ 	* tree-inline.c (copy_phis_for_bb): Do not create PHI node
+ 	without arguments, generate default definition of a SSA name.
+ 
+ 2017-05-29  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-03-28  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/80104
+ 	* cgraphunit.c (cgraph_node::expand_thunk): Mark argument of a
+ 	thunk call as DECL_GIMPLE_REG_P when vector or complex type.
+ 
+ 2017-05-26  Sheldon Lobo  <smlobo@sheldon.us.oracle.com>
+ 
+ 	Backported from mainline
+ 	2017-05-24  Sheldon Lobo  <smlobo@sheldon.us.oracle.com>
+ 
+ 	* config/sparc/sparc.md (length): Return the correct value for -mflat
+ 	sibcalls to match output_sibcall.
+ 
+ 2017-05-19  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backport from mainline
+ 	2017-05-18  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/80799
+ 	* config/i386/mmx.md (*mov<mode>_internal): Enable
+ 	alternatives 11, 12, 13 and 14 also for 32bit targets.
+ 	Remove alternatives 15, 16, 17 and 18.
+ 	* config/i386/sse.md (vec_concatv2di): Change
+ 	alternative (!x, *y) to (x, ?!*Yn).
+ 
+ 2017-05-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	Revert backport of
+ 	PR middle-end/80222
+ 	* gimple-fold.c (gimple_fold_indirect_ref): Do not touch
+ 	TYPE_REF_CAN_ALIAS_ALL references.
+ 	* fold-const.c (fold_indirect_ref_1): Likewise.
+ 
+ 2017-05-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2017-02-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/79732
+ 	* tree-inline.c (expand_call_inline): Handle anonymous
+ 	SSA lhs properly when inlining a function without return
+ 	value.
+ 
+ 	2017-02-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/79666
+ 	* tree-vrp.c (extract_range_from_binary_expr_1): Make sure
+ 	to not symbolically negate if that may introduce undefined
+ 	overflow.
+ 
+ 2017-05-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2017-03-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/80122
+ 	* tree-inline.c (copy_bb): Do not expans va-arg packs or
+ 	va_arg_pack_len when the inlined call stmt requires pack
+ 	expansion itself.
+ 	* tree-inline.h (struct copy_body_data): Make call_stmt a gcall *.
+ 
+ 	2017-03-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/80222
+ 	* gimple-fold.c (gimple_fold_indirect_ref): Do not touch
+ 	TYPE_REF_CAN_ALIAS_ALL references.
+ 	* fold-const.c (fold_indirect_ref_1): Likewise.
+ 
+ 	2017-04-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/80334
+ 	* tree-ssa-loop-ivopts.c (rewrite_use_address): Properly
+ 	preserve alignment of accesses.
+ 
+ 	2017-04-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/80539
+ 	* tree-chrec.c (chrec_fold_plus_poly_poly): Deal with not
+ 	being in loop-closed SSA form conservatively.
+ 	(chrec_fold_multiply_poly_poly): Likewise.
+ 
+ 2016-05-08  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	PR target/69868 + swap optimization backports
+ 	* config/rs6000/rs6000.c (swap_web_entry): Enlarge
+ 	special_handling bitfield.
+ 	(special_handling_values): Add SH_XXPERMDI, SH_CONCAT, SH_VPERM,
+ 	and SH_VPERM_COMP.
+ 	(const_load_sequence_p): New.
+ 	(load_comp_mask_p): New.
+ 	(v2df_reduction_p): New.
+ 	(rtx_is_swappable_p): Perform special handling for XXPERMDI and
+ 	for reductions.
+ 	(insn_is_swappable_p): Perform special handling for VEC_CONCAT,
+ 	V2DF reductions, and various permutes.
+ 	(adjust_xxpermdi): New.
+ 	(adjust_concat): New.
+ 	(find_swapped_load_and_const_vector): New.
+ 	(replace_const_vector_in_load): New.
+ 	(adjust_vperm): New.
+ 	(adjust_vperm_comp): New.
+ 	(handle_special_swappables): Call adjust_xxpermdi, adjust_concat,
+ 	adjust_vperm, and adjust_vperm_comp.
+ 	(replace_swap_with_copy): Allow vector NOT operations to also be
+ 	replaced by copies.
+ 	(dump_swap_insn_table): Handle new special handling values.
+ 
+ 2017-05-03  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backport from mainline
+ 	2017-05-01  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/68491
+ 	* config/i386/cpuid.h (__get_cpuid): Always return 0 when
+ 	__get_cpuid_max returns 0.
+ 
+ 2017-04-21  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	Backport from mainline
+ 	+2015-11-23  Kugan Vivekanandarajah  <kuganv@linaro.org>
+ 
+ 	PR target/68390
+ 	* config/arm/arm.c (arm_function_ok_for_sibcall): Get function type
+ 	for indirect function call.
+ 
+ 2017-04-12  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2017-04-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	PR target/80376
+ 	PR target/80315
+ 	* config/rs6000/rs6000.c (rs6000_expand_unop_builtin): Return
+ 	CONST0_RTX (mode) rather than const0_rtx where appropriate.
+ 	(rs6000_expand_binop_builtin): Likewise.
+ 	(rs6000_expand_ternop_builtin): Likewise; also add missing
+ 	vsx_xxpermdi_* variants; also fix typo (arg1 => arg2) for
+ 	vshasigma built-ins.
+ 	* doc/extend.texi: Document that vec_xxpermdi's third argument
+ 	must be a constant.
+ 
+ 2017-04-11  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	Backport from GCC 6
+ 	2017-04-06  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	PR target/80082
+ 	* config/arm/arm-protos.h (FL_LPAE): Define macro.
+ 	(FL_FOR_ARCH7VE): Add FL_LPAE.
+ 	(arm_arch_lpae): Declare extern.
+ 	* config/arm/arm.c (arm_arch_lpae): Declare.
+ 	(arm_option_override): Define arm_arch_lpae.
+ 	* config/arm/arm.h (TARGET_HAVE_LPAE): Redefine in term of
+ 	arm_arch_lpae.
+ 
+ 2017-04-11  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-03-30  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/77333
+ 	* cgraph.h (cgraph_build_function_type_skip_args): Declare.
+ 	* cgraph.c (redirect_call_stmt_to_callee): Set gimple fntype so that
+ 	it reflects the signature changes performed at the callee side.
+ 	* cgraphclones.c (build_function_type_skip_args): Make public, renamed
+ 	to cgraph_build_function_type_skip_args.
+ 	(build_function_decl_skip_args): Adjust call to the above function.
+ 
+ 2017-04-11  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	Backport from mainline
+ 	2016-02-10  Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	PR tree-optimization/68021
+ 	* tree-ssa-loop-ivopts.c (get_computation_aff): Set ratio to 1 if
+ 	when computing the value of biv cand by itself.
+ 
+ 2017-04-08  Andreas Tobler  <andreast@gcc.gnu.org>
+ 
+ 	Backport from mainline
+ 	2017-04-08  Andreas Tobler  <andreast@gcc.gnu.org>
+ 
+ 	* config/aarch64/aarch64-freebsd.h: Define MCOUNT_NAME.
+ 	Add comment for WCHAR_T.
+ 
+ 2017-04-07  Andreas Tobler  <andreast@gcc.gnu.org>
+ 
+ 	Backport from mainline
+ 	2017-04-07  Andreas Tobler  <andreast@gcc.gnu.org>
+ 
+ 	* config/aarch64/aarch64-freebsd.h: Define WCHAR_T.
+ 
+ 2017-04-07  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backport from mainline
+ 	2017-04-06  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/79733
+ 	* config/i386/i386.c (ix86_expand_builtin)
+ 	<case IX86_BUILTIN_KORTEST{C,Z}16>: Determine insn operand
+ 	mode from insn data. Convert operands to insn operand mode.
+ 	Copy operands that don't satisfy insn predicate to a register.
+ 
+ 2017-03-30  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2017-03-30  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	PR target/80246
+ 	* config/rs6000/dfp.md (dfp_dxex_<mode>): Update mode of operand 0.
+ 	(dfp_diex_<mode>): Update mode of operand 1.
+ 	* doc/extend.texi (dxex, dxexq): Document change to return type.
+ 	(diex, diexq): Document change to argument type.
+ 
+ 2017-03-25  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/80180
+ 	* config/i386/i386.c (ix86_expand_builtin)
+ 	<IX86_BUILTIN_RDSEED{16,32,64}_STEP>: Do not expand arg0 between
+ 	flags reg setting and flags reg using instructions.
+ 	<IX86_BUILTIN_RDRAND{16,32,64}_STEP>: Ditto.  Use non-flags reg
+ 	clobbering instructions to zero extend op2.
+ 
+ >>>>>>> .r248557
+ 2017-03-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-02-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR lto/79587
+ 	* data-streamer-in.c (streamer_read_gcov_count): Remove assert.
+ 	* data-streamer-out.c (streamer_write_gcov_count_stream):
+ 	Likewise.
+ 	* value-prof.c (stream_out_histogram_value): Make assert more
+ 	precise based on type of counter.
+ 
+ 2017-03-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-03-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/79906
+ 	* config/rs6000/rs6000.c (rs6000_inner_target_options): Show
+ 	error message instead of an ICE.
+ 
+ 2017-03-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-03-21  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/80081
+ 	* Makefile.in: Add gcov-dump and fix installation of gcov-tool.
+ 	* doc/gcc.texi: Include gcov-dump stuff.
+ 	* doc/gcov-dump.texi: New file.
+ 
+ 2017-03-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-03-20  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR middle-end/79753
+ 	* tree-chkp.c (chkp_build_returned_bound): Do not build
+ 	returned bounds for a LHS that's not a BOUNDED_P type.
+ 
+ 2017-03-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-03-20  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/79769
+ 	PR target/79770
+ 	* tree-chkp.c (chkp_find_bounds_1): Handle REAL_CST,
+ 	COMPLEX_CST and VECTOR_CST.
+ 
+ 2017-03-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-03-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR middle-end/79831
+ 	* doc/invoke.texi (-Wchkp): Document the option.
+ 
+ 2017-03-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-03-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR middle-end/78339
+ 	* ipa-pure-const.c (warn_function_noreturn): If the declarations
+ 	is a CHKP clone, use original declaration.
+ 
+ 2017-03-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2016-06-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/65705
+ 	PR target/69804
+ 	PR sanitizer/71458
+ 
+ 	* toplev.c (process_options): Enable MPX with LSAN and UBSAN.
+ 	* tree-chkp.c (chkp_walk_pointer_assignments): Verify that
+ 	FIELD != NULL.
+ 
+ 2017-03-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-03-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/79631
+ 	* tree-chkp-opt.c (chkp_is_constant_addr): Call
+ 	tree_int_cst_sign_bit just for INTEGER constants.
+ 
+ 2017-03-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-03-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/79761
+ 	* tree-chkp.c (chkp_get_bound_for_parm): Get bounds for a param.
+ 	(chkp_find_bounds_1): Remove gcc_unreachable.
+ 
+ 2017-03-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-03-03  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/79803
+ 	* tree-ssa-loop-prefetch.c (tree_ssa_prefetch_arrays): Remove
+ 	assert.
+ 	(pass_loop_prefetch::execute): Disabled optimization if an
+ 	assumption about L1 cache size is not met.
+ 
+ 2017-03-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-03-03  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR rtl-optimization/79574
+ 	* gcse.c (struct gcse_expr): Use HOST_WIDE_INT instead of int.
+ 	(hash_scan_set): Likewise.
+ 	(dump_hash_table): Likewise.
+ 	(hoist_code): Likewise.
+ 
+ 2017-03-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-02-17  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR rtl-optimization/79574
+ 	* gcse.c (want_to_gcse_p): Prevent integer overflow.
+ 
+ 2017-03-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-02-17  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR rtl-optimization/79577
+ 	* params.def (selsched-max-sched-times): Increase minimum to 1.
+ 
+ 2017-03-21  Pat Haugen  <pthaugen@us.ibm.com>
+ 
+ 	Backport from mainline:
+ 	2017-03-17  Pat Haugen  <pthaugen@us.ibm.com>
+ 
+ 	PR target/79951
+ 	* config/rs6000/rs6000.md (copysign<mode>3_fcpsgn): Test
+ 	for VECTOR_UNIT_VSX_P (<MODE>mode) too.
+ 
+ 2017-03-21  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>)
+ 	Change ins into fmov.
+ 
+ 2017-03-19  Dominique d'Humieres  <dominiq@lps.ens.fr>
+ 
+ 	PR target/71017
+ 	* config/i386/cpuid.h: Fix another undefined behavior.
+ 
+ 2017-03-17  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	backport from trunk:
+ 	2017-03-17  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	* gcov-dump.c (print_usage): Print bug_report_url.
+ 
+ 2017-03-15  Matthias Klose  <doko@ubuntu.com>
+ 
+ 	Backport from mainline
+ 	2017-03-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	* Makefile.in: Install gcov-dump.
+ 
+ 2017-03-15  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/80019
+ 	* config/i386/i386.c (ix86_vector_duplicate_value): Create
+ 	subreg of inner mode for values already in registers.
+ 
+ 2017-03-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	Back port from trunk
+ 	2017-03-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	PR target/79439
+ 	* config/rs6000/predicates.md (current_file_function_operand): Do
+ 	not allow self calls to be local if the function is replaceable.
+ 
+ 2017-03-07  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backport from mainline
+ 	2017-03-07  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/i386/i386.c (ix86_local_alignment): Align most aggregates
+ 	of 16 bytes and more to 16 bytes, not those of 16 bits and more.
+ 
+ 2017-03-06  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	PR target/77850
+ 	* config/pa/pa-64.h (PAD_VARARGS_DOWN): Don't pad down complex and
+ 	vector types.
+ 
+ 2017-03-02  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/79514
+ 	* config/i386/i386.md (*pushxf_rounded): New insn_and_split pattern.
+ 
+ 2017-03-01  Pat Haugen  <pthaugen@us.ibm.com>
+ 
+ 	Backport from mainline:
+ 	2017-02-27  Pat Haugen  <pthaugen@us.ibm.com>
+ 
+ 	PR target/79544
+ 	* rs6000/rs6000-c.c (struct altivec_builtin_types): Use VSRAD for
+ 	arithmetic shift of unsigned V2DI.
+ 
+ 2017-03-01  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-02-21  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR lto/79579
+ 	* ipa-prop.c (ipa_prop_write_jump_functions): Bail out if no edges
+ 	have been analyzed.
+ 
+ 2017-02-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR target/79749
+ 	* config/sparc/sparc.c (sparc_frame_pointer_required): Add missing
+ 	condition on optimize for the leaf function test.
+ 
+ 2017-02-22  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2017-02-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	PR target/79261
+ 	* config/rs6000/rs6000.c (rs6000_expand_ternop_builtin): Add
+ 	support for CODE_FOR_vsx_xxpermdi_v2d[fi]_be.
+ 	* config/rs6000/rs6000.md (reload_gpr_from_vsx<mode>): Call
+ 	generator for vsx_xxpermdi_<mode>_be.
+ 	* config/rs6000/vsx.md (vsx_xxpermdi_<mode>): Remove logic to
+ 	force big-endian semantics.
+ 	(vsx_xxpermdi_<mode>_be): New define_expand with same
+ 	implementation as previous version of vsx_xxpermdi_<mode>.
+ 
+ 2017-02-19  Dominique d'Humieres  <dominiq@lps.ens.fr>
+ 
+ 	PR target/71017
+ 	* config/i386/cpuid.h: Fix undefined behavior.
+ 
+ 2017-02-18  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	Backport from mainline
+ 	2016-12-11  Roger Pau Monné  <roger.pau@citrix.com>
+ 
+ 	* config/i386/x86-64.h: Append --32 to the assembler options when
+ 	-m16 is used on non-glibc systems as well.
+ 
+ 2017-02-17  Julia Koval  <julia.koval@intel.com>
+ 
+ 	PR target/76731
+ 	* config/i386/avx512fintrin.h
+ 	(_mm512_i32gather_ps): Change __addr type to void const*.
+ 	(_mm512_mask_i32gather_ps): Ditto.
+ 	(_mm512_i32gather_pd): Ditto.
+ 	(_mm512_mask_i32gather_pd): Ditto.
+ 	(_mm512_i64gather_ps): Ditto.
+ 	(_mm512_mask_i64gather_ps): Ditto.
+ 	(_mm512_i64gather_pd): Ditto.
+ 	(_mm512_mask_i64gather_pd): Ditto.
+ 	(_mm512_i32gather_epi32): Ditto.
+ 	(_mm512_mask_i32gather_epi32): Ditto.
+ 	(_mm512_i32gather_epi64): Ditto.
+ 	(_mm512_mask_i32gather_epi64): Ditto.
+ 	(_mm512_i64gather_epi32): Ditto.
+ 	(_mm512_mask_i64gather_epi32): Ditto.
+ 	(_mm512_i64gather_epi64): Ditto.
+ 	(_mm512_mask_i64gather_epi64): Ditto.
+ 	(_mm512_i32scatter_ps): Change __addr type to void*.
+ 	(_mm512_mask_i32scatter_ps): Ditto.
+ 	(_mm512_i32scatter_pd): Ditto.
+ 	(_mm512_mask_i32scatter_pd): Ditto.
+ 	(_mm512_i64scatter_ps): Ditto.
+ 	(_mm512_mask_i64scatter_ps): Ditto.
+ 	(_mm512_i64scatter_pd): Ditto.
+ 	(_mm512_mask_i64scatter_pd): Ditto.
+ 	(_mm512_i32scatter_epi32): Ditto.
+ 	(_mm512_mask_i32scatter_epi32): Ditto.
+ 	(_mm512_i32scatter_epi64): Ditto.
+ 	(_mm512_mask_i32scatter_epi64): Ditto.
+ 	(_mm512_i64scatter_epi32): Ditto.
+ 	(_mm512_mask_i64scatter_epi32): Ditto.
+ 	(_mm512_i64scatter_epi64): Ditto.
+ 	(_mm512_mask_i64scatter_epi64): Ditto.
+ 	* config/i386/avx512pfintrin.h
+ 	(_mm512_mask_prefetch_i32gather_pd): Change addr type to void const*.
+ 	(_mm512_mask_prefetch_i32gather_ps): Ditto.
+ 	(_mm512_mask_prefetch_i64gather_pd): Ditto.
+ 	(_mm512_mask_prefetch_i64gather_ps): Ditto.
+ 	(_mm512_prefetch_i32scatter_pd): Change addr type to void*.
+ 	(_mm512_prefetch_i32scatter_ps): Ditto.
+ 	(_mm512_mask_prefetch_i32scatter_pd): Ditto.
+ 	(_mm512_mask_prefetch_i32scatter_ps): Ditto.
+ 	(_mm512_prefetch_i64scatter_pd): Ditto.
+ 	(_mm512_prefetch_i64scatter_ps): Ditto.
+ 	(_mm512_mask_prefetch_i64scatter_pd): Ditto.
+ 	(_mm512_mask_prefetch_i64scatter_ps): Ditto.
+ 	* config/i386/avx512vlintrin.h
+ 	(_mm256_mmask_i32gather_ps): Change __addr type to void const*.
+ 	(_mm_mmask_i32gather_ps): Ditto.
+ 	(_mm256_mmask_i32gather_pd): Ditto.
+ 	(_mm_mmask_i32gather_pd): Ditto.
+ 	(_mm256_mmask_i64gather_ps): Ditto.
+ 	(_mm_mmask_i64gather_ps): Ditto.
+ 	(_mm256_mmask_i64gather_pd): Ditto.
+ 	(_mm_mmask_i64gather_pd): Ditto.
+ 	(_mm256_mmask_i32gather_epi32): Ditto.
+ 	(_mm_mmask_i32gather_epi32): Ditto.
+ 	(_mm256_mmask_i32gather_epi64): Ditto.
+ 	(_mm_mmask_i32gather_epi64): Ditto.
+ 	(_mm256_mmask_i64gather_epi32): Ditto.
+ 	(_mm_mmask_i64gather_epi32): Ditto.
+ 	(_mm256_mmask_i64gather_epi64): Ditto.
+ 	(_mm_mmask_i64gather_epi64): Ditto.
+ 	(_mm256_i32scatter_ps): Change __addr type to void*.
+ 	(_mm256_mask_i32scatter_ps): Ditto.
+ 	(_mm_i32scatter_ps): Ditto.
+ 	(_mm_mask_i32scatter_ps): Ditto.
+ 	(_mm256_i32scatter_pd): Ditto.
+ 	(_mm256_mask_i32scatter_pd): Ditto.
+ 	(_mm_i32scatter_pd): Ditto.
+ 	(_mm_mask_i32scatter_pd): Ditto.
+ 	(_mm256_i64scatter_ps): Ditto.
+ 	(_mm256_mask_i64scatter_ps): Ditto.
+ 	(_mm_i64scatter_ps): Ditto.
+ 	(_mm_mask_i64scatter_ps): Ditto.
+ 	(_mm256_i64scatter_pd): Ditto.
+ 	(_mm256_mask_i64scatter_pd): Ditto.
+ 	(_mm_i64scatter_pd): Ditto.
+ 	(_mm_mask_i64scatter_pd): Ditto.
+ 	(_mm256_i32scatter_epi32): Ditto.
+ 	(_mm256_mask_i32scatter_epi32): Ditto.
+ 	(_mm_i32scatter_epi32): Ditto.
+ 	(_mm_mask_i32scatter_epi32): Ditto.
+ 	(_mm256_i32scatter_epi64): Ditto.
+ 	(_mm256_mask_i32scatter_epi64): Ditto.
+ 	(_mm_i32scatter_epi64): Ditto.
+ 	(_mm_mask_i32scatter_epi64): Ditto.
+ 	(_mm256_i64scatter_epi32): Ditto.
+ 	(_mm256_mask_i64scatter_epi32): Ditto.
+ 	(_mm_i64scatter_epi32): Ditto.
+ 	(_mm_mask_i64scatter_epi32): Ditto.
+ 	(_mm256_i64scatter_epi64): Ditto.
+ 	(_mm256_mask_i64scatter_epi64): Ditto.
+ 	(_mm_i64scatter_epi64): Ditto.
+ 	(_mm_mask_i64scatter_epi64): Ditto.
+ 	* config/i386/i386-builtin-types.def (V16SF_V16SF_PCFLOAT_V16SI_HI_INT)
+ 	(V8DF_V8DF_PCDOUBLE_V8SI_QI_INT, V8SF_V8SF_PCFLOAT_V8DI_QI_INT)
+ 	(V8DF_V8DF_PCDOUBLE_V8DI_QI_INT, V16SI_V16SI_PCINT_V16SI_HI_INT)
+ 	(V8DI_V8DI_PCINT64_V8SI_QI_INT, V8SI_V8SI_PCINT_V8DI_QI_INT)
+ 	(V8DI_V8DI_PCINT64_V8DI_QI_INT, V2DF_V2DF_PCDOUBLE_V4SI_QI_INT)
+ 	(V4DF_V4DF_PCDOUBLE_V4SI_QI_INT, V2DF_V2DF_PCDOUBLE_V2DI_QI_INT)
+ 	(V4DF_V4DF_PCDOUBLE_V4DI_QI_INT, V4SF_V4SF_PCFLOAT_V4SI_QI_INT)
+ 	(V8SF_V8SF_PCFLOAT_V8SI_QI_INT, V4SF_V4SF_PCFLOAT_V2DI_QI_INT)
+ 	(V4SF_V4SF_PCFLOAT_V4DI_QI_INT, V2DI_V2DI_PCINT64_V4SI_QI_INT)
+ 	(V4DI_V4DI_PCINT64_V4SI_QI_INT, V2DI_V2DI_PCINT64_V2DI_QI_INT)
+ 	(V4DI_V4DI_PCINT64_V4DI_QI_INT, V4SI_V4SI_PCINT_V4SI_QI_INT)
+ 	(V8SI_V8SI_PCINT_V8SI_QI_INT, V4SI_V4SI_PCINT_V2DI_QI_INT)
+ 	(V4SI_V4SI_PCINT_V4DI_QI_INT, VOID_PFLOAT_HI_V16SI_V16SF_INT)
+ 	(VOID_PFLOAT_QI_V8SI_V8SF_INT, VOID_PFLOAT_QI_V4SI_V4SF_INT)
+ 	(VOID_PDOUBLE_QI_V8SI_V8DF_INT, VOID_PDOUBLE_QI_V4SI_V4DF_INT)
+ 	(VOID_PDOUBLE_QI_V4SI_V2DF_INT, VOID_PFLOAT_QI_V8DI_V8SF_INT)
+ 	(VOID_PFLOAT_QI_V4DI_V4SF_INT, VOID_PFLOAT_QI_V2DI_V4SF_INT)
+ 	(VOID_PDOUBLE_QI_V8DI_V8DF_INT, VOID_PDOUBLE_QI_V4DI_V4DF_INT)
+ 	(VOID_PDOUBLE_QI_V2DI_V2DF_INT, VOID_PINT_HI_V16SI_V16SI_INT)
+ 	(VOID_PINT_QI_V8SI_V8SI_INT, VOID_PINT_QI_V4SI_V4SI_INT)
+ 	(VOID_PLONGLONG_QI_V8SI_V8DI_INT, VOID_PLONGLONG_QI_V4SI_V4DI_INT)
+ 	(VOID_PLONGLONG_QI_V4SI_V2DI_INT, VOID_PINT_QI_V8DI_V8SI_INT)
+ 	(VOID_PINT_QI_V4DI_V4SI_INT, VOID_PINT_QI_V2DI_V4SI_INT)
+ 	(VOID_PLONGLONG_QI_V8DI_V8DI_INT, VOID_QI_V8SI_PCINT64_INT_INT)
+ 	(VOID_PLONGLONG_QI_V4DI_V4DI_INT, VOID_PLONGLONG_QI_V2DI_V2DI_INT)
+ 	(VOID_HI_V16SI_PCINT_INT_INT, VOID_QI_V8DI_PCINT64_INT_INT)
+ 	(VOID_QI_V8DI_PCINT_INT_INT): Remove.
+ 	(V16SF_V16SF_PCVOID_V16SI_HI_INT,  V8DF_V8DF_PCVOID_V8SI_QI_INT)
+ 	(V8SF_V8SF_PCVOID_V8DI_QI_INT, V8DF_V8DF_PCVOID_V8DI_QI_INT)
+ 	(V16SI_V16SI_PCVOID_V16SI_HI_INT, V8DI_V8DI_PCVOID_V8SI_QI_INT)
+ 	(V8SI_V8SI_PCVOID_V8DI_QI_INT, V8DI_V8DI_PCVOID_V8DI_QI_INT)
+ 	(VOID_PVOID_HI_V16SI_V16SF_INT, VOID_PVOID_QI_V8SI_V8DF_INT)
+ 	(VOID_PVOID_QI_V8DI_V8SF_INT, VOID_PVOID_QI_V8DI_V8DF_INT)
+ 	(VOID_PVOID_HI_V16SI_V16SI_INT, VOID_PVOID_QI_V8SI_V8DI_INT)
+ 	(VOID_PVOID_QI_V8DI_V8SI_INT, VOID_PVOID_QI_V8DI_V8DI_INT)
+ 	(V2DF_V2DF_PCVOID_V4SI_QI_INT, V4DF_V4DF_PCVOID_V4SI_QI_INT)
+ 	(V2DF_V2DF_PCVOID_V2DI_QI_INT, V4DF_V4DF_PCVOID_V4DI_QI_INT
+ 	(V4SF_V4SF_PCVOID_V4SI_QI_INT, V8SF_V8SF_PCVOID_V8SI_QI_INT)
+ 	(V4SF_V4SF_PCVOID_V2DI_QI_INT, V4SF_V4SF_PCVOID_V4DI_QI_INT)
+ 	(V2DI_V2DI_PCVOID_V4SI_QI_INT, V4DI_V4DI_PCVOID_V4SI_QI_INT)
+ 	(V2DI_V2DI_PCVOID_V2DI_QI_INT, V4DI_V4DI_PCVOID_V4DI_QI_INT)
+ 	(V4SI_V4SI_PCVOID_V4SI_QI_INT, V8SI_V8SI_PCVOID_V8SI_QI_INT)
+ 	(V4SI_V4SI_PCVOID_V2DI_QI_INT, V4SI_V4SI_PCVOID_V4DI_QI_INT)
+ 	(VOID_PVOID_QI_V8SI_V8SF_INT, VOID_PVOID_QI_V4SI_V4SF_INT)
+ 	(VOID_PVOID_QI_V4SI_V4DF_INT, VOID_PVOID_QI_V4SI_V2DF_INT)
+ 	(VOID_PVOID_QI_V4DI_V4SF_INT, VOID_PVOID_QI_V2DI_V4SF_INT)
+ 	(VOID_PVOID_QI_V4DI_V4DF_INT, VOID_PVOID_QI_V2DI_V2DF_INT)
+ 	(VOID_PVOID_QI_V8SI_V8SI_INT, VOID_PVOID_QI_V4SI_V4SI_INT)
+ 	(VOID_PVOID_QI_V4SI_V4DI_INT, VOID_PVOID_QI_V4SI_V2DI_INT)
+ 	(VOID_PVOID_QI_V4DI_V4SI_INT, VOID_PVOID_QI_V2DI_V4SI_INT)
+ 	(VOID_PVOID_QI_V4DI_V4DI_INT, VOID_PVOID_QI_V2DI_V2DI_INT)
+ 	(VOID_QI_V8SI_PCVOID_INT_INT, VOID_HI_V16SI_PCVOID_INT_INT)
+ 	(VOID_QI_V8DI_PCVOID_INT_INT): Add.
+ 	* config/i386/i386.c (ix86_init_mmx_sse_builtins): Adjust builtin
+ 	definitions accordingly.
+ 
+ 2017-02-16  Carl Love  <cel@us.ibm.com>
+ 
+ 	Backport from mainline commit r245460 on 2017-02-14
+ 
+ 	PR 79545
+ 	* config/rs6000/rs6000.c: Add case statement entry to make the xvcvuxdsp
+ 	built-in argument unsigned.
+ 	* config/rs6000/vsx.md: Fix the source and return operand types so they
+ 	match the instruction definitions from the ISA document.  Fix typo
+ 	in the instruction generation for the (define_insn "vsx_xvcvuxdsp"
+ 	statement.
+ 
+ 2017-02-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2016-03-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/70022
+ 	PR target/79498
+ 	* fold-const.c (fold_indirect_ref_1): Fix range checking for
+ 	vector BIT_FIELD_REF extract.
+ 
+ 2017-02-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-02-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR c/79471
+ 	* calls.c (expand_call): Replace XALLOCAVEC with XCNEWVEC.
+ 
+ 2017-02-08  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR translation/79397
+ 	* config/rs6000/rs6000.opt (maltivec=le, maltivec=be): Fix spelling
+ 	of AltiVec.
+ 
+ 2017-02-06  Carl Love  <cel@us.ibm.com>
+ 
+ 	Backport of two commits from mainline, r244943 and r244904,
+ 	dated 2017-01-26 and 2017-01-25 respectively
+ 
+ 	* config/rs6000/rs6000-c (altivec_overloaded_builtins): Fix order
+ 	of entries for ALTIVEC_BUILTIN_VEC_PACKS.  Remove bogus entries
+ 	for P8V_BUILTIN_VEC_VGBBD.
+ 
+ 2017-02-03  Maxim Ostapenko  <m.ostapenko@samsung.com>
+ 
+ 	PR lto/79061
+ 	* asan.c (asan_add_global): Force has_dynamic_init to zero in LTO mode.
+ 
+ 2017-01-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2016-01-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/79034
+ 	* tree-call-cdce.c (shrink_wrap_one_built_in_call_with_conds):
+ 	Propagate out degenerate PHIs in the joiner.
+ 
+ 	2016-11-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/78224
+ 	* tree-call-cdce.c (shrink_wrap_one_built_in_call_with_conds):
+ 	Split the fallthru edge in case its successor may have PHIs.
+ 	Do not free dominance info.
+ 
+ 2017-01-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2016-09-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/77745
+ 	* tree-ssa-pre.c (eliminate_dom_walker::before_dom_children):
+ 	When removing redundant stores make sure to check compatibility
+ 	of the TBAA state for downstream accesses.
+ 	* tree-ssa-sccvn.c (visit_reference_op_store): Likewise for when
+ 	value-numbering virtual operands for store matches.
+ 
+ 	2016-09-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/77768
+ 	* tree-ssa-sccvn.c (visit_reference_op_store): Properly deal
+ 	with stores to a place we know has a constant value.
+ 	* tree-vrp.c (set_defs_to_varying): New helper avoiding
+ 	writing to vr_const_varying.
+ 	(vrp_initialize): Call it.
+ 	(vrp_visit_stmt): Likewise.
+ 	(evrp_dom_walker::before_dom_children): Likewise.
+ 	* tree-ssa-pre.c (eliminate_dom_walker::before_dom_children):
+ 	Handle stores to readonly memory when removing redundant stores.
+ 
+ 2017-01-24  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	Backport from mainline
+ 	PR target/78041
+ 	* config/arm/neon.md (ashldi3_neon): Add "r 0 i" and "&r r i" variants.
+ 	Remove partial overlap check for shift by 1.
+ 	(ashldi3_neon): Likewise.
+ 
+ 2017-01-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2016-09-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/77646
+ 	* tree-ssa-sccvn.c (visit_reference_op_call): Always value-number
+ 	a VDEF.
+ 
+ 	2016-11-05  David Edelsohn  <dje.gcc@gmail.com>
+ 		Richard Biener  <rguenther@suse.de>
+ 
+ 	PR bootstrap/78188
+ 	PR c++/71848
+ 	* ipa-comdats.c (pass_ipa_comdats::gate): Require HAVE_COMDAT_GROUP.
+ 
+ 	2016-09-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/77648
+ 	* tree-ssa-structalias.c (process_constraint): Handle all DEREF
+ 	with complex RHS.
+ 	(make_transitive_closure_constraints): Adjust comment.
+ 	(make_any_offset_constraints): New function.
+ 	(handle_rhs_call): Make sure to first expand a pointer to all
+ 	subfields before transitively closing it.
+ 	(handle_const_call): Likewise.  Properly expand returned
+ 	pointers as well.
+ 	(handle_pure_call): Likewise.
+ 
+ 	2016-10-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/77879
+ 	* tree-ssa-structalias.c (handle_const_call): Properly handle
+ 	NRV return slots.
+ 	(handle_pure_call): Likewise.
+ 
+ 2017-01-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2016-10-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/77855
+ 	* tree-ssa-pre.c (prune_clobbered_mems): Queue exprs to remove
+ 	instead of removing the current item while iterating over the set
+ 	which is not safe.
+ 
+ 	2016-09-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/77436
+ 	* tree-chrec.c (tree_fold_binomial): Use widest_int, properly
+ 	check whether the result fits the desired result type.
+ 
+ 	2016-09-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/77605
+ 	* tree-data-ref.c (analyze_subscript_affine_affine): Use the
+ 	proper niter to bound the loops.
+ 
+ 	2016-11-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/78047
+ 	* tree-ssa-structalias.c (push_fields_onto_fieldstack): Initialize
+ 	fake field at offset zero conservatively regarding to may_have_pointers.
+ 
+ 	2016-11-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/78185
+ 	* loop-invariant.c (find_invariant_insn): Never hoist trapping or
+ 	faulting instructions.
+ 	* tree-ssa-loop-im.c: Include tree-ssa-loop-niter.h.
+ 	(fill_always_executed_in_1): Honor infinite child loops.
+ 
+ 	2016-11-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/78333
+ 	* gimplify.c (gimplify_function_tree): Do not instrument
+ 	GNU extern inline functions.
+ 
+ 2017-01-23  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-01-20  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR lto/69188
+ 	* tree-profile.c (init_ic_make_global_vars): Do not call
+ 	finalize_decl.
+ 	(gimple_init_gcov_profiler): Likewise.
+ 
+ 2017-01-21  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	Backport from mainline
+ 	2016-12-29  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/extend.texi (Cilk Plus Builtins): cilkplus.org now uses
+ 	https by default.
+ 	* doc/passes.texi (Cilk Plus Transformation): Ditto.
+ 	* doc/generic.texi (Statements for C++): Ditto, and use @uref.
+ 
+ 2017-01-20  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-01-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/79043
+ 	* function.c (set_cfun): Add new argument force.
+ 	* function.h (set_cfun): Likewise.
+ 	* ipa-inline-transform.c (inline_call): Use the function when
+ 	strict alising from is dropped for function we inline to.
+ 
+ 2017-01-20  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2016-03-26  Richard Biener  <rguenther@suse.de>
+ 	            Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+ 
+ 	PR ipa/70366
+ 	* ipa-inline-transform.c (inline_call): Pass opts_for_fn (to->decl)
+ 	instead of
+ 	TREE_OPTIMIZATION (DECL_FUNCTION_SPECIFIC_OPTIMIZATION (to->decl))
+ 	as 2nd argument to cl_optimization_restore().
+ 
+ 2017-01-20  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2015-12-01  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* c-common.c (parse_optimize_options): Do not silently ignore
+ 	-fstrict-aliasing changes.
+ 
+ 2017-01-20  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2016-01-01  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-inline-transform.c (inline_call): Drop
+ 	-fstrict-aliasing when 	inlining -fno-strict-aliasing into
+ 	-fstrict-aliasing body.
+ 
+ 2017-01-20  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-01-17  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/71207
+ 	* ipa-polymorphic-call.c (contains_type_p): Fix wrong
+ 	assumption and add comment.
+ 
+ 2017-01-17 Thomas Preud'homme <thomas.preudhomme@arm.com>
+ 
+ 	Backport from mainline
+ 	2016-12-07 Thomas Preud'homme <thomas.preudhomme@arm.com>
+ 
+ 	PR rtl-optimization/78617
+ 	* lra-remat.c (do_remat): Initialize live_hard_regs from live in
+ 	registers, also setting hard registers mapped to pseudo registers.
+ 
+ 2017-01-11  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	Backport from mainline r244320.
+ 	2017-01-11  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	PR target/78253
+ 	* config/arm/arm.c (legitimize_pic_address): Handle reference to
+ 	weak symbol.
+ 	(arm_assemble_integer): Likewise.
+ 
+ 2016-01-12  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* postreload.c (reload_cse_simplify): Check for NO_FUNCTION_CSE
+ 	definition instead of using it directly.
+ 
+ 2017-01-12  Maxim Ostapenko  <m.ostapenko@samsung.com>
+ 
+ 	Backport from mainline
+ 	2017-01-12  Maxim Ostapenko  <m.ostapenko@samsung.com>
+ 
+ 	PR lto/79042
+ 	* lto-cgraph.c (lto_output_varpool_node): Pack dynamically_initialized
+ 	bit.
+ 	(input_varpool_node): Unpack dynamically_initialized bit.
+ 	* lto-streamer.h (LTO_minor_version): Bump version.
+ 
+ 2017-01-11  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.c (memory_address_length): Increase len
+ 	only when rip_relative_addr_p returns false.
+ 
+ 2017-01-11  Andre Vieira <andre.simoesdiasvieira@arm.com>
+ 
+ 	Backport from mainline
+ 	2016-12-09  Andre Vieira <andre.simoesdiasvieira@arm.com>
+ 
+ 	PR rtl-optimization/78255
+ 	* gcc/postreload.c (reload_cse_simplify): Do not CSE a function if
+ 	NO_FUNCTION_CSE is true.
+ 
+ 2017-01-10  Bill Seurer  <seurer@linux.vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2016-12-21  Bill Seurer  <seurer@linux.vnet.ibm.com>
+ 
+ 	PR sanitizer/65479
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Add
+ 	-fasynchronous-unwind-tables option when -fsanitize=address is
+ 	specified.
+ 
+ 2017-01-10  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-01-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR pch/78970
+ 	* gcc.c (driver_handle_option): Handle OPT_E and set
+ 	have_E.
+ 	(lookup_compiler): Do not show error message with have_E.
+ 
+ 2017-01-10  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-01-05  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR pch/78970
+ 	* gcc.c (lookup_compiler): Reject '-' filename for a precompiled
+ 	header.
+ 
+ 2017-01-10  Chung-Ju Wu  <jasonwucj@gmail.com>
+ 
+ 	Backport from mainline
+ 	2016-04-28  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/70668
+ 	* config/nds32/nds32.md (casesi): Don't access the operands array
+ 	out of bounds.
+ 
+ 2017-01-09  Andreas Tobler  <andreast@gcc.gnu.org>
+ 
+ 	Backport from mainline
+ 	2016-10-10  Andreas Tobler  <andreast@gcc.gnu.org>
+ 
+ 	* config.gcc: Add aarch64-*-freebsd* support.
+ 	* config.host: Likewise.
+ 	* config/aarch64/aarch64-freebsd.h: New file.
+ 	* config/aarch64/t-aarch64-freebsd: Ditto.
+ 
+ 2017-01-03  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2016-12-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/78886
+ 	* tree-ssa-strlen.c (handle_builtin_malloc): Return when LHS
+ 	is equal to NULL.
+ 
+ 2017-01-03  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2016-12-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/78428
+ 	* expr.c (store_constructor_field): Add new arguments to the
+ 	function.
+ 	(store_constructor): Set up bitregion_end and add
+ 	gcc_unreachable to fields that have either non-constant size
+ 	or (and) offset.
+ 
+ 2016-12-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR translation/78922
+ 	* config/i386/stringop.opt: Remove.
+ 
+ 2016-12-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/78731
+ 	* tree-ssa-threadedge.c (simplify_control_stmt_condition):
+ 	If we've seen a backedge to not walk the SSA value chain.
+ 	(thread_around_empty_blocks): Pass down whether we've seen
+ 	a backedge to simplify_control_stmt_condition.
+ 	(thread_through_normal_block): Likewise.
+ 
+ 2016-12-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	Backport from mainline
+ 	2016-11-25  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	* tree-ssa-math-opts.c (struct symbolic_number): Improve comment.
+ 
+ 2016-12-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	Backport from mainline
+ 	2016-11-25  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	PR tree-optimization/77673
+ 	* tree-ssa-math-opts.c (struct symbolic_number): Add new src field.
+ 	(init_symbolic_number): Initialize src field from src parameter.
+ 	(perform_symbolic_merge): Select most dominated statement as the
+ 	source statement.  Set src field of resulting n structure from the
+ 	input src with the lowest address.
+ 	(find_bswap_or_nop): Rename source_stmt into ins_stmt.
+ 	(bswap_replace): Rename src_stmt into ins_stmt.  Initially get source
+ 	of load from src field rather than insertion statement.  Cancel
+ 	optimization if statement analyzed is not dominated by the insertion
+ 	statement.
+ 	(pass_optimize_bswap::execute): Rename src_stmt to ins_stmt.  Compute
+ 	dominance information.
+ 
+ 2016-12-13  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	Backport from mainline
+ 	2016-11-17  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	PR target/77933
+ 	* config/arm/arm.c (thumb1_expand_prologue): Distinguish between lr
+ 	being live in the function and lr needing to be saved.  Distinguish
+ 	between already saved pushable registers and registers to push.
+ 	Check for LR being an available pushable register.
+ 
+ 2016-12-12  Bernd Schmidt  <bschmidt@redhat.com>
+ 
+ 	Backport from mainline
+ 	2016-11-07  Bernd Schmidt  <bschmidt@redhat.com>
+ 
+ 	PR rtl-optimization/77309
+ 	* combine.c (make_compound_operation): Allow EQ for IN_CODE, and
+ 	don't assume an equality comparison for plain COMPARE.
+ 	(simplify_comparison): Pass a more accurate code to
+ 	make_compound_operation.
+ 
+ 2016-12-07  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	Backport from mainline
+ 	2016-11-12  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/77957
+ 	* config/rs6000/rs6000.c (rs6000_output_function_epilogue): Don't
+ 	return early if !optional_tbtab.
+ 
+ 2016-12-07  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	Backport from mainline
+ 	2016-11-16  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	* config/arm/arm.md (arm_addsi3): Add alternative for addition of
+ 	general register with general register or ARM constant into SP
+ 	register.
+ 
+ 2016-12-06  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2016-12-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 	            Stefan Freudenberger  <stefan@reservoir.com>
+ 
+ 	PR tree-optimization/78646
+ 	* gimple-ssa-strength-reduction.c (replace_ref): The pointer
+ 	addition used for the memory base expression should have the type
+ 	of the candidate.
+ 
+ 2016-12-02  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	Backport from mainline
+ 	2016-10-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	PR rtl-optimization/78038
+ 	* ree.c (get_defs): Return NULL if a defining insn for REG cannot
+ 	be deduced to set REG through the RTL structure.
+ 	(make_defs_and_copies_lists): Return false on a failing get_defs call.
+ 
+ 2016-12-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2016-12-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/s390-modes.def (CCVEQANY, CCVH, CCVHANY, CCVHU)
+ 	(CCVHUANY): Remove modes.
+ 	(CCVIH, CCVIHU, CCVIALL, CCVIANY, CCVFALL, CCVFANY): Add modes and
+ 	documentation.
+ 	* config/s390/s390.c (s390_match_ccmode_set): Rename cc modes.
+ 	(s390_expand_vec_compare_scalar): Pick one of the cc consumer
+ 	modes.
+ 	(s390_branch_condition_mask): Adjust to use the new cc consumer
+ 	modes.  The new modes allow for proper reversal in the middle-end.
+ 	(s390_expand_vec_compare_cc): Determine the proper cc producer and
+ 	consumer modes for a comparison.
+ 	* config/s390/s390.md: Rename CCVH to CCVIH and CCVHU to CCVIHU
+ 	throughout the file.
+ 	* config/s390/vx-builtins.md: Likewise.
+ 
+ 2016-12-01  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2016-12-01  Alan Modra  <amodra@gmail.com>
+ 
+ 	* gcc/config/rs6000/rs6000.c (insn_is_swappable_p): Properly
+ 	look inside UNSPEC_VSX_XXSPLTW vec.
+ 
+ 2016-11-29  Kaz Kojima  <kkojima@gcc.gnu.org>
+ 
+ 	Backported from mainline
+ 	2016-11-19  Kaz Kojima  <kkojima@gcc.gnu.org>
+ 
+ 	PR target/78426
+ 	* config/sh/sh-mem.cc (sh_expand_cmpnstr): Use copy_to_mode_reg
+ 	instead of force_reg.
+ 	(sh_expand_setmem): Likewise.
+ 
+ 2016-11-24  Martin Liska  <mliska@suse.cz>
+ 	Backported from mainline
+ 	2016-11-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/78309
+ 	* ipa-icf.c (void sem_item::set_hash): Update m_hash_set.
+ 	(sem_function::get_hash): Use the new field.
+ 	(sem_function::parse): Remove an argument from ctor.
+ 	(sem_variable::parse): Likewise.
+ 	(sem_variable::get_hash): Use the new field.
+ 	(sem_item_optimizer::read_section): Use new ctor and set hash.
+ 	* ipa-icf.h: _hash is removed from sem_item::sem_item,
+ 	sem_variable::sem_variable, sem_function::sem_function.
+ 
+ 2016-11-23  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (*<any_or:code>hi_1): Fix operand 2 constraints.
+ 	(kxnor<mode>): Return "#" for alternative 0.
+ 
+ 2016-11-22  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* Makefile.in ($(lang_checks_parallelized)): Fix detection
+ 	of -j argument.
+ 
+ 2016-11-15  Matthias Klose  <doko@ubuntu.com>
+ 
+ 	* doc/install.texi: Move the 'Overriding configure test results'
+ 	subsub section to the 'Cross-Compiler-Specific Options' sub section.
+ 
+ 2016-11-11  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/78310
+ 	* config/i386/i386.md (rotate to rotatex splitter): Avoid overflow
+ 	when calculating operand 2.
+ 	(rotate to rotatex zext splitter): Ditto.
+ 
+ 2016-11-09  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/78262
+ 	* config/i386/i386.md (*<shift_insn><mode>3_doubleword): Mark
+ 	operand 0 as earlyclobber.
+ 	(*ashl<mode>3_doubleword): Ditto for all operand 0 alternatives.
+ 
+ 2016-11-06  Jack Howarth  <howarth.at.gcc@gmail.com>
+ 
+ 	PR driver/78206
+ 	* incpath.c: (remove_dup(): Also silently ignore EPERM.
+ 
+ 2016-11-03  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2016-08-12  Martin Liska  <mliska@suse.cz>
+ 		    Adam Fineman  <afineman@afineman.com>
+ 
+ 	* gcov.c (process_file): Create .gcov file when .gcda
+ 	file is missing.
+ 
+ 2016-11-03  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	Backport from mainline
+ 	2016-10-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* explow.c (validize_mem): Do not modify the argument in-place.
+ 
+ 2016-11-02  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 
+ 	Backport from trunk
+ 	2016-10-26  Will Schmidt <will_schmidt@vnet.ibm.com>
+ 
+ 	PR middle-end/72747
+ 	* gimplify.c (gimplify_init_constructor): Move emit of constructor
+ 	assignment to earlier in the if/else logic.
+ 
+ 2016-10-29  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config/pa/pa.h (BIGGEST_ALIGNMENT): Adjust comment.
+ 	(MALLOC_ABI_ALIGNMENT): Define.
+ 
+ 2016-10-23  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2016-10-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	PR tree-optimization/77916
+ 	* gimple-ssa-strength-reduction.c (create_add_on_incoming_edge):
+ 	Don't allow a MINUS_EXPR for pointer arithmetic for either known
+ 	or unknown strides.
+ 	(record_increment): Increments of -1 for unknown strides just use
+ 	a multiply initializer like other negative values.
+ 	(analyze_increments): Remove stopgap solution for -1 increment
+ 	applied to pointer arithmetic.
+ 	(insert_initializers): Requirement of initializer for -1 should be
+ 	based on pointer-typedness of the candidate basis.
+ 
+ 2016-10-19  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/77991
+ 	* config/i386/i386.c (legitimize_tls_address)
+ 	<case TLS_MODEL_INITIAL_EXEC>: For TARGET_64BIT || TARGET_ANY_GNU_TLS
+ 	convert dest to Pmode if different than Pmode.
+ 
+ 2016-10-18  Kugan Vivekanandarajah  <kuganv@linaro.org>
+ 
+ 	Backport from mainline
+ 	2016-10-11  Kugan Vivekanandarajah  <kuganv@linaro.org>
+ 
+ 	* tree-vrp.c (vrp_intersect_ranges_1): Allocate bitmap before
+ 	  copying.
+ 
+ 2016-10-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2016-10-12  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	PR tree-optimization/77937
+ 	* gimple-ssa-strength-reduction.c (analyze_increments): Use
+ 	POINTER_TYPE_P on the candidate type to determine whether
+ 	candidates in this chain require pointer arithmetic.
+ 
+ 	2016-10-13  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	PR tree-optimization/77937
+ 	* gimple-ssa-strength-reduction.c (analyze_increments): Set cost
+ 	to infinite when we have a pointer with an increment of -1.
+ 
+ 2016-10-17  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backported from mainline
+ 	2016-10-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/77943
+ 	* tree-ssa-tail-merge.c (merge_stmts_p): Do not merge BBs with
+ 	a different EH landing pads.
+ 
+ 2016-10-16  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* config/sparc/sparc.c (sparc_expand_vector_init): Only accept literal
+ 	constants in CONST_VECTORs.
+ 
+ 2016-10-15  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* config/sparc/sparc.c (sparc_expand_vec_perm_bmask): Use a scratch
+ 	register as destination of bmask.
+ 	(vector_init_bshuffle): Likewise.
+ 	* config/sparc/sparc.md (vec_perm_constv8qi): Likewise.
+ 	(bmaskdi_vis): Enable only in 64-bit mode.
+ 
+ 2016-10-13  Andrew Senkevich  <andrew.senkevich@intel.com>
+ 
+ 	Backport from trunk
+ 	* common/config/i386/i386-common.c (OPTION_MASK_ISA_PCOMMIT_UNSET,
+ 	OPTION_MASK_ISA_PCOMMIT_SET): Deleted definitions.
+ 	(ix86_handle_option): Deleted handle of OPT_mpcommit.
+ 	* config.gcc: Deleted pcommitintrin.h
+ 	* config/i386/pcommitintrin.h: Deleted file.
+ 	* config/i386/cpuid.h (bit_PCOMMIT): Deleted.
+ 	* config/i386/driver-i386.c (host_detect_local_cpu): Deleted pcommit
+ 	detection.
+ 	* config/i386/i386-c.c (ix86_target_macros_internal): Deleted define
+ 	__PCOMMIT__.
+ 	* config/i386/i386.c (ix86_target_string): Deleted -mpcommit.
+ 	(PTA_PCOMMIT, IX86_BUILTIN_PCOMMIT, __builtin_ia32_pcommit): Deleted.
+ 	(ix86_option_override_internal): Deleted handle of option.
+ 	(ix86_valid_target_attribute_inner_p): Deleted pcommit.
+ 	* config/i386/i386.h (TARGET_PCOMMIT, TARGET_PCOMMIT_P): Deleted.
+ 	* config/i386/i386.md (unspecv): Deleted UNSPECV_PCOMMIT.
+ 	(pcommit): Deleted instruction.
+ 	* config/i386/i386.opt: Mention -mpcommit deprecation.
+ 	* config/i386/x86intrin.h: Deleted inclusion of pcommitintrin.h.
+ 
+ 2016-10-10  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* config/avr/gen-avr-mmcu-texi.c (string.h): Include.
+ 
+ 2016-10-06  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/77874
+ 	* config/i386/sse.md (<mask_codefor><code><mode>3<mask_name>):
+ 	Remove wrong assert.
+ 	(<floatsuffix>float<sseintvecmodelower><mode>2<mask_name><round_name>:
+ 	Use <round_constraint> as operand 1 constraint.
+ 
+ 2016-09-28  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 	    Alan Modra  <amodra@gmail.com>
+ 
+ 	Backport from mainline
+ 	2016-07-01  Alan Modra  <amodra@gmail.com>
+ 
+ 	PR rtl-optimization/71709
+ 	* ira-lives.c (find_call_crossed_cheap_reg): Exit loop on arg reg
+ 	being set, not referenced.
+ 
+ 2016-09-27  David Edelsohn  <dje.gcc@gmail.com>
+ 
+ 	Backport from mainline
+ 	2016-09-27  David Edelsohn  <dje.gcc@gmail.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_output_symbol): Don't modify
+ 	VAR_DECL string.
+ 
+ 2016-09-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/77478
+ 	* tree-vect-loop-manip.c (vect_gen_niters_for_prolog_loop):
+ 	Fix alignment of SSA var used before the alignment prologue.
+ 
+ 2016-09-27  Senthil Kumar Selvaraj  <senthil_kumar.selvaraj@atmel.com>
+ 
+ 	Backport from trunk r227496
+ 
+ 	PR target/65210
+ 	* config/avr/avr.c (avr_eval_addr_attrib): Look for io_low
+ 	attribute as well.
+ 
+ 2016-09-22  Senthil Kumar Selvaraj  <senthil_kumar.selvaraj@atmel.com>
+ 
+ 	Backport from 2016-09-22 trunk r240388.
+ 
+ 	* config/avr/avr.c (avr_rtx_costs_1): Handle DImode MULT.
+ 	(avr_address_cost): Replace 61 with MAX_LD_OFFSET(mode).
+ 
+ 2016-09-21  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* doc/rtl.texi (JUMP_LABEL): Document RETURN and SIMPLE_RETURN values.
+ 
+ 2016-09-21  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backport from 2016-09-21 trunk r240306.
+ 
+ 	PR target/77326
+ 	* config/avr/avr.c (hard-reg-set.h): Move #include up in front
+ 	of rtl.h to that HARD_CONST is defined in rtl.h.
+ 	(avr_notice_update_cc) [CC_NONE]: If insn touches some regs
+ 	mentioned in cc_status, do CC_STATUS_INIT.
+ 
+ 2016-09-16  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/extend.texi (Integer Overflow Builtins): Fix type of out
+ 	parameters for functions taking long long arguments.
+ 
+ 2016-08-31  Jakub Sejdak  <jakub.sejdak@phoesys.com>
+ 
+ 	* config.gcc: Add support for arm*-*-phoenix* targets.
+ 	* config/arm/t-phoenix: New.
+ 	* config/phoenix.h: New.
+ 
+ 2016-08-29  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/77403
+ 	* config/i386/sse.md (vec_set_lo_<mode><mask_name>): Fix assembler
+ 	template for intel asm dialect.
+ 	(vec_set_hi_<mode><mask_name>): Ditto.
+ 
+ 2016-08-29  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* Makefile.in (gcov-iov.h): Add dummy recipe.
+ 
+ 2016-08-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	Backport from mainline
+ 	2016-04-20  Andrew Pinski  <apinski@cavium.com>
+ 	            Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	PR target/64971
+ 	* config/aarch64/aarch64.md (sibcall): Force call
+ 	address to be DImode for ILP32.
+ 	(sibcall_value): Likewise.
+ 
+ 2016-08-25  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	Backport from mainline (minus test for POWER9 support)
+ 	2016-08-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	PR target/72863
+ 	* vsx.md (vsx_load_<mode>): For P8LE, emit swaps at expand time.
+ 	(vsx_store_<mode>): Likewise.
+ 
+ 2016-08-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	Backport from mainline
+ 	2016-07-12  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	PR middle-end/71700
+ 	* expr.c (store_constructor): Mask sign-extended bits when widening
+ 	sub-word constructor element at the start of a word.
+ 
+ 2016-08-22  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backport from mainline
+ 	2016-08-14  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/76342
+ 	* config/i386/avx512fintrin.h (_mm512_undefined_epi32):
+ 	Renamed from _mm512_undefined_si512.
+ 	(_mm_undefined_si512): New definition.
+ 
+ 	Backport from mainline:
+ 	2016-08-09  David Wohlferd  <dw@LimeGreenSocks.com>
+ 
+ 	* config/i3836/avx512fintrin.h (_mm512_cvtsepi64_epi32): Remove
+ 	unused variable __O.
+ 
+ 	Backport from mainline:
+ 	2016-08-09  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/72843
+ 	* config/i386/i386.md (*movtf_internal): Use
+ 	lra_in_progress || reload_completed instead of !can_create_pseudo_p
+ 	in the insn constraint.
+ 	(*movxf_internal): Ditto.
+ 	(*movdf_internal): Ditto.
+ 	(*movsf_internal): Ditto.
+ 
+ 2016-08-18  Oleg Endo  <olegendo@gcc.gnu.org>
+ 
+ 	Backport from mainline
+ 	2016-06-17  DJ Delorie  <dj@redhat.com>
+ 
+ 	PR target/71338
+ 	* config/rl78/rl78-expand.c (umulqihi3): Enable for G10.
+ 	* config/rl78/rl78-virtual.c (umulhi3_shift_virt): Likewise.
+ 	(umulqihi3_virt): Likewise.
+ 	* config/rl78/rl78-real.c (umulhi3_shift_real): Likewise.
+ 	(umulqihi3_real): Likewise.
+ 
+ 2016-08-16  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/install.texi (*-*-solaris2*): Adjust latest change.
+ 
+ 2016-08-15  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backported from mainline
+ 	2016-08-15  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR driver/72765
+ 	* gcc.c (do_spec_1): Call save_string with the right size.
+ 	(save_string): Do an assert about string we copy.
+ 
+ 2016-08-15  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/install.texi (*-*-solaris2*): Fix version number and document
+ 	requirement on GNU make for building libjava with the Solaris linker.
+ 
+ 2016-08-12  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+ 
+ 	Backport from mainline
+ 	2016-08-11  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+ 
+ 	PR tree-optimization/71083
+ 	* tree-predcom.c (ref_at_iteration): Correctly align the
+ 	reference type.
+ 
+ 2016-08-08  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backport from 2016-07-29 trunk r238863.
+ 
+ 	PR rtl-optimization/71976
+ 	* combine.c (get_last_value): Return 0 if the argument for which
+ 	the function is called has a wider mode than the recorded value.
+ 
+ 2016-08-04  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/72805
+ 	* config/i386/avx512fintrin.h (_mm512_cmp_epi32_mask) [!__OPTIMIZE__]:
+ 	Cast builtin function result to __mmask16 instead of __mmask8.
+ 	(_mm512_cmp_epu32_mask) [!__OPTIMIZE__]: Ditto.
+ 	(_mm512_mask_cmp_epi32_mask) [!__OPTIMIZE__]: Ditto.
+ 	(_mm512_mask_cmp_epu32_mask) [!__OPTIMIZE__]: Ditto.
+ 
+ 2016-08-01  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backport from 2016-08-01 trunk r238948.
+ 
+ 	PR target/72767
+ 	* config/avr/avr.md (length) [branch]: Correct insn length
+ 	attribute for forward branches.
+ 
+ 2016-07-29  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backport from mainline
+ 	2016-07-29  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c/7652
+ 	* config/rs6000/rs6000.c (altivec_expand_ld_builtin): Add break.
+ 	(altivec_expand_st_builtin): Likewise.
+ 	* config/i386/i386.c (ix86_expand_args_builtin): Likewise.
+ 	(ix86_expand_round_builtin): Likewise.
+ 
+ 2016-07-27  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/71216
+ 	* config/rs6000/rs6000.c (rs6000_file_start): Fix condition for
+ 	when to emit a ".machine" pseudo-op.
+ 
+ 2016-07-26  Alan Modra  <amodra@gmail.com>
+ 
+ 	PR target/72103
+ 	* config/rs6000/rs6000.c (rs6000_secondary_reload): Initialize
+ 	sri->t_icode.
+ 
+ 2016-07-20  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR fortran/71688
+ 	* trans-decl.c (gfc_generate_function_code): Use get_create rather
+ 	than create to get a call graph node.
+ 
+ 2016-07-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/71874
+ 	* gimple-fold.c (fold_builtin_memory_op): Use
+ 	get_addr_base_and_unit_offset instead of get_ref_base_and_extent.
+ 
+ 2016-07-19  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backported from mainline
+ 	2016-03-15  Richard Henderson  <rth@redhat.com>
+ 
+ 	* line-map.c (new_linemap): Make alloc_size a size_t.
+ 
+ 2016-07-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2016-07-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/71758
+ 	* omp-low.c (expand_omp_target): Gimplify device.
+ 
+ 2016-07-18  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backported from mainline
+ 	2016-07-12  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR rtl-optimization/71634
+ 	* ira-build.c (mark_loops_for_removal): Properly iterate
+ 	loops.
+ 
+ 2016-07-12  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	Backport from mainline
+ 	2016-07-06  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/70098
+ 	PR target/71763
+ 	* config/rs6000/rs6000.md (*ctr<mode>_internal1, *ctr<mode>_internal2,
+ 	*ctr<mode>_internal5, *ctr<mode>_internal6): Add *wi to the output
+ 	constraint.
+ 
+ 2016-07-08  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backported from mainline
+ 	2016-07-08  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR middle-end/71606
+ 	* fold-const.c (fold_convertible_p): As COMPLEX_TYPE
+ 	folding produces SAVE_EXPRs, thus return false for the type.
+ 
+ 2016-07-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2016-06-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/71626
+ 	* config/i386/i386.c (ix86_expand_vector_move): For SUBREG of
+ 	a constant, force its SUBREG_REG into memory or register instead
+ 	of whole op1.
+ 
+ 	2016-06-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/71588
+ 	* tree-ssa-strlen.c (valid_builtin_call): New function.
+ 	(adjust_last_stmt, handle_builtin_memset, strlen_optimize_stmt): Use
+ 	it.
+ 
+ 	2016-06-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/71581
+ 	* tree-ssa-uninit.c (warn_uninit): If EXPR and VAR are NULL,
+ 	see if T isn't anonymous SSA_NAME with COMPLEX_EXPR created
+ 	for conversion of scalar user var to complex type and use the
+ 	underlying SSA_NAME_VAR in that case.  If EXPR is still NULL,
+ 	punt.
+ 
+ 	2016-06-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/71494
+ 	* tree-nested.c (convert_nonlocal_reference_stmt): For GIMPLE_GOTO
+ 	without LABEL_DECL, set *handled_ops_p to false instead of true.
+ 
+ 	2016-04-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/70641
+ 	* ipa-pure-const.c (pass_nothrow::execute): Call maybe_clean_eh_stmt
+ 	on all recursive call stmts.  Return TODO_cleanup_cfg if any dead
+ 	eh edges have been purged.
+ 
+ 	PR middle-end/70633
+ 	* gimplify.c (gimplify_init_constructor): Clear TREE_STATIC if
+ 	gimplification turns some element into non-constant.
+ 
+ 	2016-04-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/70628
+ 	* explow.c (convert_memory_address_addr_space_1): Formatting fix.
+ 
+ 	PR debug/70628
+ 	* rtl.h (convert_memory_address_addr_space_1): New prototype.
+ 	* explow.c (convert_memory_address_addr_space_1): No longer static,
+ 	add NO_EMIT argument and don't call convert_modes if true, pass
+ 	it down recursively, remove break after return.
+ 	(convert_memory_address_addr_space): Adjust caller.
+ 	* simplify-rtx.c (simplify_unary_operation_1): Call
+ 	convert_memory_address_addr_space_1 instead of convert_memory_address,
+ 	if it returns NULL, don't simplify.
+ 
+ 	2016-04-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/70574
+ 	* fwprop.c (forward_propagate_and_simplify): Don't add
+ 	REG_EQUAL note if DF_REF_REG (use) is a paradoxical subreg.
+ 	(try_fwprop_subst): Don't add REG_EQUAL note if there are any
+ 	paradoxical subregs within *loc.
+ 
+ 	2016-04-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/70336
+ 	* match.pd (nested int casts): Limit to GIMPLE.
+ 
+ 2016-07-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2016-06-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/71423
+ 	* match.pd ((X | ~Y) -> Y <= X): Properly invert the comparison
+ 	for signed ops.
+ 
+ 	2016-06-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/71452
+ 	* tree-ssa.c (non_rewritable_lvalue_p): Make sure that the
+ 	type used for the SSA rewrite has enough precision to cover
+ 	the dynamic type of the location.
+ 
+ 	2016-06-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/71522
+ 	* tree-ssa.c (non_rewritable_lvalue_p): Do not rewrite non-float
+ 	copying into float copying.
+ 
+ 2016-07-01  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* config/arm/arm.c (arm_function_ok_for_sibcall): Add another check
+ 	for NULL decl.
+ 
+ 2016-06-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/71693
+ 	* fold-const.c (fold_binary_loc) <case RROTATE_EXPR>: Cast
+ 	TREE_OPERAND (arg0, 0) and TREE_OPERAND (arg0, 1) to type
+ 	first when permuting bitwise operation with rotate.  Cast
+ 	TREE_OPERAND (arg0, 0) to type when cancelling two rotations.
+ 
+ 2016-06-21  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backport from 2016-06-21 trunk r237639.
+ 
+ 	PR target/30417
+ 	* config/avr/gen-avr-mmcu-specs.c (print_mcu):
+ 	[*link_data_start]: Wrap -Tdata into %{!Tdata:...}.
+ 	[*link_text_start]: Wrap -Ttext into %{!Ttext:...}.
+ 
+ 2016-06-21  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/71103
+ 	* config/avr/avr.md (movqi): Only handle loading subreg:qi of
+ 	constant addresses if can_create_pseudo_p.
+ 
+ 2016-06-20  Georg-Johann Lay  <avr@gjlay.de>
+ 	    Pitchumani Sivanupandi  <pitchumani.s@atmel.com>
+ 
+ 	Backport from 2016-06-20 trunk r237589, r236558.
+ 
+ 	PR target/71103
+ 	* config/avr/avr.md (movqi): Handle loading subreg:qi (const,
+ 	symbol_ref,label_ref).
+ 
+ 2016-06-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/71554
+ 	* config/i386/i386.md (setcc + movzbl peephole2): Use reg_set_p.
+ 	(setcc + and peephole2): Likewise.
+ 
+ 	Backported from mainline
+ 	2015-04-29  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (setcc+movzbl peephole2): Check also clobbered
+ 	reg.
+ 	(setcc+andl peephole2): Ditto.
+ 
+ 2016-06-15  Andreas Tobler  <andreast@gcc.gnu.org>
+ 
+ 	Backported from mainline
+ 	2016-06-14  Andreas Tobler  <andreast@gcc.gnu.org>
+ 
+ 	* config/arm/freebsd.h: Only enable unaligned access for armv6 on
+ 	FreeBSD 11 and above.
+ 
+ 2016-06-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/71505
+ 	* tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Make
+ 	assert match comment.
+ 
+ 2016-06-13  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2016-06-13  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	PR target/71379
+ 	* config/s390/s390.c (s390_expand_builtin): Increase MAX_ARGS by
+ 	one.
+ 
+ 2016-06-07  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2016-06-07  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	* doc/invoke.texi (RS/6000 and PowerPC Options): Document -mhtm and
+ 	-mno-htm.
+ 
+ 2016-06-07  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/71389
+ 	* config/i386/i386.c (ix86_avx256_split_vector_move_misalign):
+ 	Copy op1 RTX to avoid invalid sharing.
+ 	(ix86_expand_vector_move_misalign): Ditto.
+ 
+ 2016-06-05  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backport from mainline
+ 	2016-06-01  Uros Bizjak  <ubizjak@gmail.com>
+ 		    Jocelyn Mayer  <l_indien@magic.fr>
+ 
+ 	PR target/67310
+ 	* config/i386/driver-i386.c (host_detect_local_cpu): Correctly
+ 	detect processor family for signature_CENTAUR_ebx.
+ 	<case PROCESSOR_I486>: Pass c3, winchip2 or winchip-c6 for
+ 	signature_CENTAUR_ebx.
+ 	<case PROCESSOR _PENTIUMPRO>: Pass c3-2 for signature_CENTAUR_ebx.
+ 	<default>: Pass x86-64 for has_longmode.
+ 
+ 2016-06-03  Andreas Tobler  <andreast@gcc.gnu.org>
+ 
+ 	Backport from mainline
+ 	2016-05-30  Andreas Tobler  <andreast@gcc.gnu.org>
+ 
+ 	* config.gcc: Move hard float support for arm*hf*-*-freebsd* into
+ 	armv6*-*-freebsd* for FreeBSD 11. Eliminate the arm*hf*-*-freebsd*
+ 	target.
+ 
+ 2016-06-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	* BASE-VER: Set to 5.4.1.
+ 
  2016-06-03  Release Manager
  
  	* GCC 5.4.0 released.
***************
*** 34,40 ****
  
  	2016-03-24  Richard Henderson  <rth@redhat.com>
  
!         PR middle-end/69845
  	* fold-const.c (extract_muldiv_1): Correct test for multiplication
  	overflow.
  
--- 2988,2994 ----
  
  	2016-03-24  Richard Henderson  <rth@redhat.com>
  
! 	PR middle-end/69845
  	* fold-const.c (extract_muldiv_1): Correct test for multiplication
  	overflow.
  
***************
*** 2192,2198 ****
  
  	Backport from mainline
  	2015-11-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 	            Bernd Schmidt  <bschmidt@redhat.com>
  
  	PR rtl-optimization/67226
  	* calls.c (store_one_arg): Take into account
--- 5146,5152 ----
  
  	Backport from mainline
  	2015-11-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
! 		    Bernd Schmidt  <bschmidt@redhat.com>
  
  	PR rtl-optimization/67226
  	* calls.c (store_one_arg): Take into account
***************
*** 2252,2258 ****
  
  	Backport from mainline
  	2015-11-24  Bernd Schmidt <bschmidt@redhat.com>
! 	            Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
  	PR rtl-optimization/68194
  	PR rtl-optimization/68328
--- 5206,5212 ----
  
  	Backport from mainline
  	2015-11-24  Bernd Schmidt <bschmidt@redhat.com>
! 		    Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
  	PR rtl-optimization/68194
  	PR rtl-optimization/68328
***************
*** 2525,2531 ****
  
  	Backport from mainline
  	2015-11-16  Oleg Endo  <olegendo@gcc.gnu.org>
! 	            Kaz Kojima  <kkojima@gcc.gnu.org>
  
  	PR target/68277
  	* config/sh/sh.md (addsi3_scr): Handle reg overlap of operands[0] and
--- 5479,5485 ----
  
  	Backport from mainline
  	2015-11-16  Oleg Endo  <olegendo@gcc.gnu.org>
! 		    Kaz Kojima  <kkojima@gcc.gnu.org>
  
  	PR target/68277
  	* config/sh/sh.md (addsi3_scr): Handle reg overlap of operands[0] and
***************
*** 2599,2605 ****
  
  	Backport from mainline
  	2015-10-23  Steve Ellcey  <sellcey@imgtec.com>
! 	            Andrew Pinski  <apinski@cavium.com>
  
  	PR rtl-optimization/67736
  	* combine.c (simplify_comparison): Use gen_lowpart_or_truncate instead
--- 5553,5559 ----
  
  	Backport from mainline
  	2015-10-23  Steve Ellcey  <sellcey@imgtec.com>
! 		    Andrew Pinski  <apinski@cavium.com>
  
  	PR rtl-optimization/67736
  	* combine.c (simplify_comparison): Use gen_lowpart_or_truncate instead
diff -Nrcpad gcc-5.4.0/gcc/DATESTAMP gcc-5.5.0/gcc/DATESTAMP
*** gcc-5.4.0/gcc/DATESTAMP	Fri Jun  3 00:16:08 2016
--- gcc-5.5.0/gcc/DATESTAMP	Tue Oct 10 00:16:10 2017
***************
*** 1 ****
! 20160603
--- 1 ----
! 20171010
diff -Nrcpad gcc-5.4.0/gcc/Makefile.in gcc-5.5.0/gcc/Makefile.in
*** gcc-5.4.0/gcc/Makefile.in	Mon May  4 10:46:32 2015
--- gcc-5.5.0/gcc/Makefile.in	Tue May 30 08:27:04 2017
*************** GCC_TARGET_INSTALL_NAME := $(target_nonc
*** 769,774 ****
--- 769,775 ----
  CPP_INSTALL_NAME := $(shell echo cpp|sed '$(program_transform_name)')
  GCOV_INSTALL_NAME := $(shell echo gcov|sed '$(program_transform_name)')
  GCOV_TOOL_INSTALL_NAME := $(shell echo gcov-tool|sed '$(program_transform_name)')
+ GCOV_DUMP_INSTALL_NAME := $(shell echo gcov-dump|sed '$(program_transform_name)')
  
  # Setup the testing framework, if you have one
  EXPECT = `if [ -f $${rootme}/../expect/expect ] ; then \
*************** s-specs : Makefile
*** 2001,2006 ****
--- 2002,2008 ----
  
  optionlist: s-options ; @true
  s-options: $(ALL_OPT_FILES) Makefile $(srcdir)/opt-gather.awk
+ 	LC_ALL=C ; export LC_ALL ; \
  	$(AWK) -f $(srcdir)/opt-gather.awk $(ALL_OPT_FILES) > tmp-optionlist
  	$(SHELL) $(srcdir)/../move-if-change tmp-optionlist optionlist
  	$(STAMP) s-options
*************** build/gcov-iov$(build_exeext): build/gco
*** 2639,2645 ****
  	+$(LINKER_FOR_BUILD) $(BUILD_LINKERFLAGS) $(BUILD_LDFLAGS) \
  		build/gcov-iov.o -o $@
  
! gcov-iov.h: s-iov
  s-iov: build/gcov-iov$(build_exeext) $(BASEVER) $(DEVPHASE)
  	build/gcov-iov$(build_exeext) '$(BASEVER_c)' '$(DEVPHASE_c)' \
  	    > tmp-gcov-iov.h
--- 2641,2647 ----
  	+$(LINKER_FOR_BUILD) $(BUILD_LINKERFLAGS) $(BUILD_LDFLAGS) \
  		build/gcov-iov.o -o $@
  
! gcov-iov.h: s-iov; @true
  s-iov: build/gcov-iov$(build_exeext) $(BASEVER) $(DEVPHASE)
  	build/gcov-iov$(build_exeext) '$(BASEVER_c)' '$(DEVPHASE_c)' \
  	    > tmp-gcov-iov.h
*************** TEXI_GCC_FILES = gcc.texi gcc-common.tex
*** 2896,2902 ****
  	 gcov.texi trouble.texi bugreport.texi service.texi		\
  	 contribute.texi compat.texi funding.texi gnu.texi gpl_v3.texi	\
  	 fdl.texi contrib.texi cppenv.texi cppopts.texi avr-mmcu.texi	\
! 	 implement-c.texi implement-cxx.texi gcov-tool.texi
  
  # we explicitly use $(srcdir)/doc/tm.texi here to avoid confusion with
  # the generated tm.texi; the latter might have a more recent timestamp,
--- 2898,2904 ----
  	 gcov.texi trouble.texi bugreport.texi service.texi		\
  	 contribute.texi compat.texi funding.texi gnu.texi gpl_v3.texi	\
  	 fdl.texi contrib.texi cppenv.texi cppopts.texi avr-mmcu.texi	\
! 	 implement-c.texi implement-cxx.texi gcov-tool.texi gcov-dump.texi
  
  # we explicitly use $(srcdir)/doc/tm.texi here to avoid confusion with
  # the generated tm.texi; the latter might have a more recent timestamp,
*************** $(build_htmldir)/gccinstall/index.html:
*** 3019,3025 ****
  	$(SHELL) $(srcdir)/doc/install.texi2html
  
  MANFILES = doc/gcov.1 doc/cpp.1 doc/gcc.1 doc/gfdl.7 doc/gpl.7 \
!            doc/fsf-funding.7 doc/gcov-tool.1
  
  generated-manpages: man
  
--- 3021,3027 ----
  	$(SHELL) $(srcdir)/doc/install.texi2html
  
  MANFILES = doc/gcov.1 doc/cpp.1 doc/gcc.1 doc/gfdl.7 doc/gpl.7 \
!            doc/fsf-funding.7 doc/gcov-tool.1 doc/gcov-dump.1
  
  generated-manpages: man
  
*************** install-common: native lang.install-comm
*** 3321,3326 ****
--- 3323,3337 ----
  	    gcov-tool$(exeext) $(DESTDIR)$(bindir)/$(GCOV_TOOL_INSTALL_NAME)$(exeext); \
  	  fi; \
  	fi
+ # Install gcov-dump if it was compiled.
+ 	-if test "$(enable_as_accelerator)" != "yes" ; then \
+ 	  if [ -f gcov-dump$(exeext) ]; \
+ 	  then \
+ 	    rm -f $(DESTDIR)$(bindir)/$(GCOV_DUMP_INSTALL_NAME)$(exeext); \
+ 	    $(INSTALL_PROGRAM) \
+ 	    gcov-dump$(exeext) $(DESTDIR)$(bindir)/$(GCOV_DUMP_INSTALL_NAME)$(exeext); \
+ 	  fi; \
+ 	fi
  
  # Install the driver program as $(target_noncanonical)-gcc,
  # $(target_noncanonical)-gcc-$(version), and also as gcc if native.
*************** install-man: lang.install-man \
*** 3404,3409 ****
--- 3415,3422 ----
  	$(DESTDIR)$(man1dir)/$(GCC_INSTALL_NAME)$(man1ext) \
  	$(DESTDIR)$(man1dir)/$(CPP_INSTALL_NAME)$(man1ext) \
  	$(DESTDIR)$(man1dir)/$(GCOV_INSTALL_NAME)$(man1ext) \
+ 	$(DESTDIR)$(man1dir)/$(GCOV_TOOL_INSTALL_NAME)$(man1ext) \
+ 	$(DESTDIR)$(man1dir)/$(GCOV_DUMP_INSTALL_NAME)$(man1ext) \
  	$(DESTDIR)$(man7dir)/fsf-funding$(man7ext) \
  	$(DESTDIR)$(man7dir)/gfdl$(man7ext) \
  	$(DESTDIR)$(man7dir)/gpl$(man7ext)
*************** $(DESTDIR)$(man1dir)/$(GCOV_TOOL_INSTALL
*** 3433,3438 ****
--- 3446,3456 ----
  	-$(INSTALL_DATA) $< $@
  	-chmod a-x $@
  
+ $(DESTDIR)$(man1dir)/$(GCOV_DUMP_INSTALL_NAME)$(man1ext): doc/gcov-dump.1 installdirs
+ 	-rm -f $@
+ 	-$(INSTALL_DATA) $< $@
+ 	-chmod a-x $@
+ 
  # Install all the header files built in the include subdirectory.
  install-headers: $(INSTALL_HEADERS_DIR)
  # Fix symlinks to absolute paths in the installed include directory to
*************** check_p_subdirs=$(wordlist 1,$(check_p_c
*** 3739,3745 ****
  # variable (see above check_gcc_parallelize description).
  $(lang_checks_parallelized): check-% : site.exp
  	-rm -rf $(TESTSUITEDIR)/$*-parallel
! 	@if [ "$(filter -j, $(MFLAGS))" = "-j" ]; then \
  	  test -d $(TESTSUITEDIR) || mkdir $(TESTSUITEDIR) || true; \
  	  test -d $(TESTSUITEDIR)/$*-parallel || mkdir $(TESTSUITEDIR)/$*-parallel || true; \
  	  GCC_RUNTEST_PARALLELIZE_DIR=`${PWD_COMMAND}`/$(TESTSUITEDIR)/$(check_p_tool)-parallel ; \
--- 3757,3763 ----
  # variable (see above check_gcc_parallelize description).
  $(lang_checks_parallelized): check-% : site.exp
  	-rm -rf $(TESTSUITEDIR)/$*-parallel
! 	@if [ -n "$(filter -j%, $(MFLAGS))" ]; then \
  	  test -d $(TESTSUITEDIR) || mkdir $(TESTSUITEDIR) || true; \
  	  test -d $(TESTSUITEDIR)/$*-parallel || mkdir $(TESTSUITEDIR)/$*-parallel || true; \
  	  GCC_RUNTEST_PARALLELIZE_DIR=`${PWD_COMMAND}`/$(TESTSUITEDIR)/$(check_p_tool)-parallel ; \
diff -Nrcpad gcc-5.4.0/gcc/ada/ChangeLog gcc-5.5.0/gcc/ada/ChangeLog
*** gcc-5.4.0/gcc/ada/ChangeLog	Fri Jun  3 08:41:59 2016
--- gcc-5.5.0/gcc/ada/ChangeLog	Tue Oct 10 08:11:01 2017
***************
*** 1,3 ****
--- 1,87 ----
+ 2017-10-10  Release Manager
+ 
+ 	* GCC 5.5.0 released.
+ 
+ 2017-02-24  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (gnat_to_gnu): Do not apply special handling
+ 	of boolean rvalues to function calls.
+ 
+ 2017-02-24  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (return_value_ok_for_nrv_p): Add sanity check.
+ 
+ 2016-11-22  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* gcc-interface/Make-lang.in (check-acats): Fix detection
+ 	of -j argument.
+ 
+ 2016-11-13  Bob Duff  <duff@adacore.com>
+ 
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity): In assertion about known
+ 	Esize, protect with !is_type and change !Unknown_Esize to Known_Esize.
+ 
+ 2016-11-02  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	Backport from mainline
+ 	2016-10-24  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* gcc-interface/Make-lang.in (lang_checks_parallelized): New target.
+ 	(check_gnat_parallelize): Likewise.
+ 
+ 2016-10-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* system-darwin-ppc64.ads (Support_64_Bit_Divides): Delete.
+ 	* system-linux-armeb.ads (Support_64_Bit_Divides): Likewise.
+ 	* system-linux-mips.ads (Support_64_Bit_Divides): Likewise.
+ 	* system-linux-mips64el.ads (Support_64_Bit_Divides): Likewise.
+ 	* system-linux-mipsel.ads (Support_64_Bit_Divides): Likewise.
+ 	* system-linux-sparcv9.ads (Support_64_Bit_Divides): Likewise.
+ 	* system-rtems.ads (Support_64_Bit_Divides): Likewise.
+ 
+ 2016-10-16  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* system-aix.ads (Always_Compatible_Rep): Change to False.
+ 	* system-aix64.ads (Always_Compatible_Rep): Likewise.
+ 	* system-hpux-ia64.ads (Always_Compatible_Rep): Likewise.
+ 	* system-hpux.ads (Always_Compatible_Rep): Likewise.
+ 	* system-linux-alpha.ads (Always_Compatible_Rep): Likewise.
+ 	* system-linux-hppa.ads (Always_Compatible_Rep): Likewise.
+ 	* system-linux-ia64.ads (Always_Compatible_Rep): Likewise.
+ 	* system-linux-mips.ads (Always_Compatible_Rep): Likewise.
+ 	* system-linux-mips64el.ads (Always_Compatible_Rep): Likewise.
+ 	* system-linux-mipsel.ads (Always_Compatible_Rep): Likewise.
+ 	* system-linux-s390.ads (Always_Compatible_Rep): Likewise.
+ 	* system-linux-s390x.ads (Always_Compatible_Rep): Likewise.
+ 	* system-linux-sh4.ads (Always_Compatible_Rep): Likewise.
+ 	* system-linux-sparc.ads (Always_Compatible_Rep): Likewise.
+ 	* system-linux-sparcv9.ads (Always_Compatible_Rep): Likewise.
+ 	* system-rtems.ads (Always_Compatible_Rep): Likewise.
+ 
+ 2016-10-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	Backport from mainline
+ 	2016-10-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* system-linux-armeb.ads (Backend_Overflow_Checks): Change to True.
+ 	* system-linux-mips.ads (Backend_Overflow_Checks): Likewise.
+ 	* system-linux-mips64el.ads (Backend_Overflow_Checks): Likewise.
+ 	* system-linux-mipsel.ads (Backend_Overflow_Checks): Likewise.
+ 	* system-linux-sparcv9.ads (Backend_Overflow_Checks): Likewise.
+ 	* system-rtems.ads (Always_Compatible_Rep): Likewise.
+ 
+ 	2016-10-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 		    Tristan Gingold  <gingold@adacore.com>
+ 
+ 	* system-linux-ppc64.ads: Delete.
+ 	* system-linux-ppc.ads: Make 32-bit/64-bit neutral.
+ 	* gcc-interface/Makefile.in (PowerPC/Linux): Simplify.
+ 
+ 2016-10-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/utils.c (convert): For a biased input type, convert
+ 	the bias itself to the base type before adding it.
+ 
  2016-06-03  Release Manager
  
  	* GCC 5.4.0 released.
diff -Nrcpad gcc-5.4.0/gcc/ada/gcc-interface/Make-lang.in gcc-5.5.0/gcc/ada/gcc-interface/Make-lang.in
*** gcc-5.4.0/gcc/ada/gcc-interface/Make-lang.in	Fri Oct  9 08:14:21 2015
--- gcc-5.5.0/gcc/ada/gcc-interface/Make-lang.in	Tue Nov 22 18:19:58 2016
*************** ada.stagefeedback: stagefeedback-start
*** 861,866 ****
--- 861,869 ----
  	-$(MV) ada/stamp-* stagefeedback/ada
  
  lang_checks += check-gnat
+ lang_checks_parallelized += check-gnat
+ # For description see the check_$lang_parallelize comment in gcc/Makefile.in.
+ check_gnat_parallelize = 1000
  
  check-ada: check-acats check-gnat
  check-ada-subtargets: check-acats-subtargets check-gnat-subtargets
*************** check-acats:
*** 884,890 ****
  	@test -d $(ACATSDIR) || mkdir -p $(ACATSDIR); \
  	rootme=`${PWD_COMMAND}`; export rootme; \
  	EXPECT=$(EXPECT); export EXPECT; \
! 	if [ -z "$(CHAPTERS)" ] && [ "$(filter -j, $(MFLAGS))" = "-j" ]; \
  	then \
  	  rm -rf $(ACATSDIR)-parallel; \
  	  mkdir $(ACATSDIR)-parallel; \
--- 887,893 ----
  	@test -d $(ACATSDIR) || mkdir -p $(ACATSDIR); \
  	rootme=`${PWD_COMMAND}`; export rootme; \
  	EXPECT=$(EXPECT); export EXPECT; \
! 	if [ -z "$(CHAPTERS)" ] && [ -n "$(filter -j%, $(MFLAGS))" ]; \
  	then \
  	  rm -rf $(ACATSDIR)-parallel; \
  	  mkdir $(ACATSDIR)-parallel; \
diff -Nrcpad gcc-5.4.0/gcc/ada/gcc-interface/Makefile.in gcc-5.5.0/gcc/ada/gcc-interface/Makefile.in
*** gcc-5.4.0/gcc/ada/gcc-interface/Makefile.in	Mon May  2 13:22:23 2016
--- gcc-5.5.0/gcc/ada/gcc-interface/Makefile.in	Tue Oct 11 20:05:44 2016
*************** ifeq ($(strip $(filter-out powerpc% linu
*** 1813,1853 ****
    s-tpopsp.adb<s-tpopsp-tls.adb \
    g-sercom.adb<g-sercom-linux.adb \
    $(ATOMICS_TARGET_PAIRS) \
!   $(ATOMICS_BUILTINS_TARGET_PAIRS)
  
    ifeq ($(strip $(filter-out xenomai,$(THREAD_KIND))),)
      LIBGNAT_TARGET_PAIRS = \
!       $(LIBGNAT_TARGET_PAIRS_COMMON)
! 
!     LIBGNAT_TARGET_PAIRS += \
!     s-osinte.ads<s-osinte-linux-xenomai.ads \
!     s-osprim.adb<s-osprim-linux-xenomai.adb \
!     s-taprop.adb<s-taprop-linux-xenomai.adb \
!     s-taspri.ads<s-taspri-linux-xenomai.ads \
!     system.ads<system-linux-ppc.ads
    else
!     LIBGNAT_TARGET_PAIRS_32 = \
!     system.ads<system-linux-ppc.ads
! 
!     LIBGNAT_TARGET_PAIRS_64 = \
!     system.ads<system-linux-ppc64.ads
! 
!     ifneq (,$(or $(filter powerpc64%, $(shell $(GCC_FOR_TARGET) $(GNATLIBCFLAGS) -print-multiarch)), $(filter ../lib64, $(shell $(GCC_FOR_TARGET) $(GNATLIBCFLAGS) -print-multi-os-directory))))
!       LIBGNAT_TARGET_PAIRS = \
!       $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_64)
!     else
!       LIBGNAT_TARGET_PAIRS = \
!       $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_32)
!     endif
! 
!     LIBGNAT_TARGET_PAIRS += \
!     s-mudido.adb<s-mudido-affinity.adb \
!     s-osinte.ads<s-osinte-linux.ads \
!     s-osprim.adb<s-osprim-posix.adb \
!     s-taprop.adb<s-taprop-linux.adb \
!     s-tasinf.ads<s-tasinf-linux.ads \
!     s-tasinf.adb<s-tasinf-linux.adb \
!     s-taspri.ads<s-taspri-posix-noaltstack.ads
    endif
  
    TOOLS_TARGET_PAIRS =  \
--- 1813,1838 ----
    s-tpopsp.adb<s-tpopsp-tls.adb \
    g-sercom.adb<g-sercom-linux.adb \
    $(ATOMICS_TARGET_PAIRS) \
!   $(ATOMICS_BUILTINS_TARGET_PAIRS) \
!   system.ads<system-linux-ppc.ads
  
    ifeq ($(strip $(filter-out xenomai,$(THREAD_KIND))),)
      LIBGNAT_TARGET_PAIRS = \
!       $(LIBGNAT_TARGET_PAIRS_COMMON) \
!       s-osinte.ads<s-osinte-linux-xenomai.ads \
!       s-osprim.adb<s-osprim-linux-xenomai.adb \
!       s-taprop.adb<s-taprop-linux-xenomai.adb \
!       s-taspri.ads<s-taspri-linux-xenomai.ads
    else
!     LIBGNAT_TARGET_PAIRS = \
!       $(LIBGNAT_TARGET_PAIRS_COMMON) \
!       s-mudido.adb<s-mudido-affinity.adb \
!       s-osinte.ads<s-osinte-linux.ads \
!       s-osprim.adb<s-osprim-posix.adb \
!       s-taprop.adb<s-taprop-linux.adb \
!       s-tasinf.ads<s-tasinf-linux.ads \
!       s-tasinf.adb<s-tasinf-linux.adb \
!       s-taspri.ads<s-taspri-posix-noaltstack.ads
    endif
  
    TOOLS_TARGET_PAIRS =  \
diff -Nrcpad gcc-5.4.0/gcc/ada/gcc-interface/decl.c gcc-5.5.0/gcc/ada/gcc-interface/decl.c
*** gcc-5.4.0/gcc/ada/gcc-interface/decl.c	Sat Apr  2 08:56:49 2016
--- gcc-5.5.0/gcc/ada/gcc-interface/decl.c	Sun Nov 13 18:38:16 2016
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 361,367 ****
       must be specified unless it was specified by the programmer.  Exceptions
       are for access-to-protected-subprogram types and all access subtypes, as
       another GNAT type is used to lay out the GCC type for them.  */
!   gcc_assert (!Unknown_Esize (gnat_entity)
  	      || Has_Size_Clause (gnat_entity)
  	      || (!IN (kind, Numeric_Kind)
  		  && !IN (kind, Enumeration_Kind)
--- 361,368 ----
       must be specified unless it was specified by the programmer.  Exceptions
       are for access-to-protected-subprogram types and all access subtypes, as
       another GNAT type is used to lay out the GCC type for them.  */
!   gcc_assert (!is_type
! 	      || Known_Esize (gnat_entity)
  	      || Has_Size_Clause (gnat_entity)
  	      || (!IN (kind, Numeric_Kind)
  		  && !IN (kind, Enumeration_Kind)
diff -Nrcpad gcc-5.4.0/gcc/ada/gcc-interface/trans.c gcc-5.5.0/gcc/ada/gcc-interface/trans.c
*** gcc-5.4.0/gcc/ada/gcc-interface/trans.c	Mon Jan 18 10:29:45 2016
--- gcc-5.5.0/gcc/ada/gcc-interface/trans.c	Fri Feb 24 10:54:21 2017
*************** return_value_ok_for_nrv_p (tree ret_obj,
*** 3499,3507 ****
--- 3499,3514 ----
    if (TREE_ADDRESSABLE (ret_val))
      return false;
  
+   /* For the constrained case, test for overalignment.  */
    if (ret_obj && DECL_ALIGN (ret_val) > DECL_ALIGN (ret_obj))
      return false;
  
+   /* For the unconstrained case, test for bogus initialization.  */
+   if (!ret_obj
+       && DECL_INITIAL (ret_val)
+       && TREE_CODE (DECL_INITIAL (ret_val)) == NULL_EXPR)
+     return false;
+ 
    return true;
  }
  
*************** gnat_to_gnu (Node_Id gnat_node)
*** 7315,7321 ****
        && (kind == N_Identifier
  	  || kind == N_Expanded_Name
  	  || kind == N_Explicit_Dereference
- 	  || kind == N_Function_Call
  	  || kind == N_Indexed_Component
  	  || kind == N_Selected_Component)
        && TREE_CODE (get_base_type (gnu_result_type)) == BOOLEAN_TYPE
--- 7322,7327 ----
diff -Nrcpad gcc-5.4.0/gcc/ada/gcc-interface/utils.c gcc-5.5.0/gcc/ada/gcc-interface/utils.c
*** gcc-5.4.0/gcc/ada/gcc-interface/utils.c	Thu Jun 11 12:51:04 2015
--- gcc-5.5.0/gcc/ada/gcc-interface/utils.c	Mon Oct 10 08:53:06 2016
*************** convert (tree type, tree expr)
*** 4086,4097 ****
        return convert (type, unpadded);
      }
  
!   /* If the input is a biased type, adjust first.  */
    if (ecode == INTEGER_TYPE && TYPE_BIASED_REPRESENTATION_P (etype))
      return convert (type, fold_build2 (PLUS_EXPR, TREE_TYPE (etype),
  				       fold_convert (TREE_TYPE (etype), expr),
! 				       fold_convert (TREE_TYPE (etype),
! 						     TYPE_MIN_VALUE (etype))));
  
    /* If the input is a justified modular type, we need to extract the actual
       object before converting it to any other type with the exceptions of an
--- 4086,4100 ----
        return convert (type, unpadded);
      }
  
!   /* If the input is a biased type, convert first to the base type and add
!      the bias.  Note that the bias must go through a full conversion to the
!      base type, lest it is itself a biased value; this happens for subtypes
!      of biased types.  */
    if (ecode == INTEGER_TYPE && TYPE_BIASED_REPRESENTATION_P (etype))
      return convert (type, fold_build2 (PLUS_EXPR, TREE_TYPE (etype),
  				       fold_convert (TREE_TYPE (etype), expr),
! 				       convert (TREE_TYPE (etype),
! 						TYPE_MIN_VALUE (etype))));
  
    /* If the input is a justified modular type, we need to extract the actual
       object before converting it to any other type with the exceptions of an
*************** convert (tree type, tree expr)
*** 4393,4399 ****
  	  && (ecode == ARRAY_TYPE || ecode == UNCONSTRAINED_ARRAY_TYPE
  	      || (ecode == RECORD_TYPE && TYPE_CONTAINS_TEMPLATE_P (etype))))
  	return unchecked_convert (type, expr, false);
!       else if (TYPE_BIASED_REPRESENTATION_P (type))
  	return fold_convert (type,
  			     fold_build2 (MINUS_EXPR, TREE_TYPE (type),
  					  convert (TREE_TYPE (type), expr),
--- 4396,4407 ----
  	  && (ecode == ARRAY_TYPE || ecode == UNCONSTRAINED_ARRAY_TYPE
  	      || (ecode == RECORD_TYPE && TYPE_CONTAINS_TEMPLATE_P (etype))))
  	return unchecked_convert (type, expr, false);
! 
!       /* If the output is a biased type, convert first to the base type and
! 	 subtract the bias.  Note that the bias itself must go through a full
! 	 conversion to the base type, lest it is a biased value; this happens
! 	 for subtypes of biased types.  */
!       if (TYPE_BIASED_REPRESENTATION_P (type))
  	return fold_convert (type,
  			     fold_build2 (MINUS_EXPR, TREE_TYPE (type),
  					  convert (TREE_TYPE (type), expr),
diff -Nrcpad gcc-5.4.0/gcc/ada/system-aix.ads gcc-5.5.0/gcc/ada/system-aix.ads
*** gcc-5.4.0/gcc/ada/system-aix.ads	Thu Oct 30 11:44:20 2014
--- gcc-5.5.0/gcc/ada/system-aix.ads	Sun Oct 16 14:05:04 2016
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                            (AIX/PPC Version)                             --
  --                                                                          --
! --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                            (AIX/PPC Version)                             --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** private
*** 148,154 ****
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
!    Always_Compatible_Rep     : constant Boolean := True;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
--- 148,154 ----
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
!    Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
diff -Nrcpad gcc-5.4.0/gcc/ada/system-aix64.ads gcc-5.5.0/gcc/ada/system-aix64.ads
*** gcc-5.4.0/gcc/ada/system-aix64.ads	Thu Oct 30 11:44:20 2014
--- gcc-5.5.0/gcc/ada/system-aix64.ads	Sun Oct 16 14:05:04 2016
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                           (PPC/AIX64 Version)                            --
  --                                                                          --
! --          Copyright (C) 2009-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                           (PPC/AIX64 Version)                            --
  --                                                                          --
! --          Copyright (C) 2009-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** private
*** 148,154 ****
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
!    Always_Compatible_Rep     : constant Boolean := True;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
--- 148,154 ----
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
!    Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
diff -Nrcpad gcc-5.4.0/gcc/ada/system-darwin-ppc64.ads gcc-5.5.0/gcc/ada/system-darwin-ppc64.ads
*** gcc-5.4.0/gcc/ada/system-darwin-ppc64.ads	Fri May  6 09:12:09 2016
--- gcc-5.5.0/gcc/ada/system-darwin-ppc64.ads	Mon Oct 17 08:56:14 2016
*************** private
*** 138,144 ****
     Stack_Check_Default       : constant Boolean := False;
     Stack_Check_Probes        : constant Boolean := False;
     Stack_Check_Limits        : constant Boolean := False;
-    Support_64_Bit_Divides    : constant Boolean := True;
     Support_Aggregates        : constant Boolean := True;
     Support_Atomic_Primitives : constant Boolean := True;
     Support_Composite_Assign  : constant Boolean := True;
--- 138,143 ----
diff -Nrcpad gcc-5.4.0/gcc/ada/system-hpux-ia64.ads gcc-5.5.0/gcc/ada/system-hpux-ia64.ads
*** gcc-5.4.0/gcc/ada/system-hpux-ia64.ads	Thu Oct 30 11:44:20 2014
--- gcc-5.5.0/gcc/ada/system-hpux-ia64.ads	Sun Oct 16 14:05:04 2016
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                           (HP-UX/ia64 Version)                           --
  --                                                                          --
! --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                           (HP-UX/ia64 Version)                           --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** private
*** 139,145 ****
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
!    Always_Compatible_Rep     : constant Boolean := True;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
--- 139,145 ----
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
!    Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
diff -Nrcpad gcc-5.4.0/gcc/ada/system-hpux.ads gcc-5.5.0/gcc/ada/system-hpux.ads
*** gcc-5.4.0/gcc/ada/system-hpux.ads	Thu Oct 30 11:44:20 2014
--- gcc-5.5.0/gcc/ada/system-hpux.ads	Sun Oct 16 14:05:04 2016
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                             (HP-UX Version)                              --
  --                                                                          --
! --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                             (HP-UX Version)                              --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** private
*** 138,144 ****
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
!    Always_Compatible_Rep     : constant Boolean := True;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
--- 138,144 ----
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
!    Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
diff -Nrcpad gcc-5.4.0/gcc/ada/system-linux-alpha.ads gcc-5.5.0/gcc/ada/system-linux-alpha.ads
*** gcc-5.4.0/gcc/ada/system-linux-alpha.ads	Thu Oct 30 11:44:20 2014
--- gcc-5.5.0/gcc/ada/system-linux-alpha.ads	Sun Oct 16 14:05:04 2016
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                        (GNU-Linux/alpha Version)                         --
  --                                                                          --
! --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                        (GNU-Linux/alpha Version)                         --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** private
*** 138,144 ****
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
!    Always_Compatible_Rep     : constant Boolean := True;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
--- 138,144 ----
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
!    Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
diff -Nrcpad gcc-5.4.0/gcc/ada/system-linux-armeb.ads gcc-5.5.0/gcc/ada/system-linux-armeb.ads
*** gcc-5.4.0/gcc/ada/system-linux-armeb.ads	Fri May  6 09:12:09 2016
--- gcc-5.5.0/gcc/ada/system-linux-armeb.ads	Mon Oct 17 08:56:14 2016
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                        (GNU-Linux/ARMEB Version)                         --
  --                                                                          --
! --          Copyright (C) 1992-2011, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                        (GNU-Linux/ARMEB Version)                         --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** private
*** 127,133 ****
     --  of the individual switch values.
  
     Backend_Divide_Checks     : constant Boolean := False;
!    Backend_Overflow_Checks   : constant Boolean := False;
     Command_Line_Args         : constant Boolean := True;
     Configurable_Run_Time     : constant Boolean := False;
     Denorm                    : constant Boolean := True;
--- 127,133 ----
     --  of the individual switch values.
  
     Backend_Divide_Checks     : constant Boolean := False;
!    Backend_Overflow_Checks   : constant Boolean := True;
     Command_Line_Args         : constant Boolean := True;
     Configurable_Run_Time     : constant Boolean := False;
     Denorm                    : constant Boolean := True;
*************** private
*** 142,148 ****
     Stack_Check_Default       : constant Boolean := False;
     Stack_Check_Probes        : constant Boolean := True;
     Stack_Check_Limits        : constant Boolean := False;
-    Support_64_Bit_Divides    : constant Boolean := True;
     Support_Aggregates        : constant Boolean := True;
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
--- 142,147 ----
*************** private
*** 150,155 ****
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
!    ZCX_By_Default            : constant Boolean := False;
  
  end System;
--- 149,154 ----
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
!    ZCX_By_Default            : constant Boolean := True;
  
  end System;
diff -Nrcpad gcc-5.4.0/gcc/ada/system-linux-hppa.ads gcc-5.5.0/gcc/ada/system-linux-hppa.ads
*** gcc-5.4.0/gcc/ada/system-linux-hppa.ads	Thu Oct 30 11:44:20 2014
--- gcc-5.5.0/gcc/ada/system-linux-hppa.ads	Sun Oct 16 14:05:04 2016
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                        (GNU/Linux-HPPA Version)                          --
  --                                                                          --
! --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                        (GNU/Linux-HPPA Version)                          --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** private
*** 138,144 ****
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
!    Always_Compatible_Rep     : constant Boolean := True;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
--- 138,144 ----
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
!    Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
diff -Nrcpad gcc-5.4.0/gcc/ada/system-linux-ia64.ads gcc-5.5.0/gcc/ada/system-linux-ia64.ads
*** gcc-5.4.0/gcc/ada/system-linux-ia64.ads	Thu Oct 30 11:44:20 2014
--- gcc-5.5.0/gcc/ada/system-linux-ia64.ads	Sun Oct 16 14:05:04 2016
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                        (GNU-Linux/ia64 Version)                          --
  --                                                                          --
! --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                        (GNU-Linux/ia64 Version)                          --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** private
*** 147,153 ****
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
!    Always_Compatible_Rep     : constant Boolean := True;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
--- 147,153 ----
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
!    Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
diff -Nrcpad gcc-5.4.0/gcc/ada/system-linux-mips.ads gcc-5.5.0/gcc/ada/system-linux-mips.ads
*** gcc-5.4.0/gcc/ada/system-linux-mips.ads	Fri May  6 09:12:09 2016
--- gcc-5.5.0/gcc/ada/system-linux-mips.ads	Mon Oct 17 08:56:14 2016
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                          (GNU-Linux/MIPS Version)                        --
  --                                                                          --
! --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                          (GNU-Linux/MIPS Version)                        --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** private
*** 119,125 ****
     --  of the individual switch values.
  
     Backend_Divide_Checks     : constant Boolean := False;
!    Backend_Overflow_Checks   : constant Boolean := False;
     Command_Line_Args         : constant Boolean := True;
     Configurable_Run_Time     : constant Boolean := False;
     Denorm                    : constant Boolean := True;
--- 119,125 ----
     --  of the individual switch values.
  
     Backend_Divide_Checks     : constant Boolean := False;
!    Backend_Overflow_Checks   : constant Boolean := True;
     Command_Line_Args         : constant Boolean := True;
     Configurable_Run_Time     : constant Boolean := False;
     Denorm                    : constant Boolean := True;
*************** private
*** 134,145 ****
     Stack_Check_Default       : constant Boolean := False;
     Stack_Check_Probes        : constant Boolean := True;
     Stack_Check_Limits        : constant Boolean := False;
-    Support_64_Bit_Divides    : constant Boolean := True;
     Support_Aggregates        : constant Boolean := True;
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
!    Always_Compatible_Rep     : constant Boolean := True;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
--- 134,144 ----
     Stack_Check_Default       : constant Boolean := False;
     Stack_Check_Probes        : constant Boolean := True;
     Stack_Check_Limits        : constant Boolean := False;
     Support_Aggregates        : constant Boolean := True;
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
!    Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
diff -Nrcpad gcc-5.4.0/gcc/ada/system-linux-mips64el.ads gcc-5.5.0/gcc/ada/system-linux-mips64el.ads
*** gcc-5.4.0/gcc/ada/system-linux-mips64el.ads	Fri May  6 09:12:09 2016
--- gcc-5.5.0/gcc/ada/system-linux-mips64el.ads	Mon Oct 17 08:56:14 2016
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                       (GNU-Linux/MIPS64EL Version)                       --
  --                                                                          --
! --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                       (GNU-Linux/MIPS64EL Version)                       --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** private
*** 119,125 ****
     --  of the individual switch values.
  
     Backend_Divide_Checks     : constant Boolean := False;
!    Backend_Overflow_Checks   : constant Boolean := False;
     Command_Line_Args         : constant Boolean := True;
     Configurable_Run_Time     : constant Boolean := False;
     Denorm                    : constant Boolean := True;
--- 119,125 ----
     --  of the individual switch values.
  
     Backend_Divide_Checks     : constant Boolean := False;
!    Backend_Overflow_Checks   : constant Boolean := True;
     Command_Line_Args         : constant Boolean := True;
     Configurable_Run_Time     : constant Boolean := False;
     Denorm                    : constant Boolean := True;
*************** private
*** 134,145 ****
     Stack_Check_Default       : constant Boolean := False;
     Stack_Check_Probes        : constant Boolean := True;
     Stack_Check_Limits        : constant Boolean := False;
-    Support_64_Bit_Divides    : constant Boolean := True;
     Support_Aggregates        : constant Boolean := True;
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
!    Always_Compatible_Rep     : constant Boolean := True;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
--- 134,144 ----
     Stack_Check_Default       : constant Boolean := False;
     Stack_Check_Probes        : constant Boolean := True;
     Stack_Check_Limits        : constant Boolean := False;
     Support_Aggregates        : constant Boolean := True;
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
!    Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
diff -Nrcpad gcc-5.4.0/gcc/ada/system-linux-mipsel.ads gcc-5.5.0/gcc/ada/system-linux-mipsel.ads
*** gcc-5.4.0/gcc/ada/system-linux-mipsel.ads	Fri May  6 09:12:09 2016
--- gcc-5.5.0/gcc/ada/system-linux-mipsel.ads	Mon Oct 17 08:56:14 2016
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                        (GNU-Linux/MIPSEL Version)                        --
  --                                                                          --
! --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                        (GNU-Linux/MIPSEL Version)                        --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** private
*** 119,125 ****
     --  of the individual switch values.
  
     Backend_Divide_Checks     : constant Boolean := False;
!    Backend_Overflow_Checks   : constant Boolean := False;
     Command_Line_Args         : constant Boolean := True;
     Configurable_Run_Time     : constant Boolean := False;
     Denorm                    : constant Boolean := True;
--- 119,125 ----
     --  of the individual switch values.
  
     Backend_Divide_Checks     : constant Boolean := False;
!    Backend_Overflow_Checks   : constant Boolean := True;
     Command_Line_Args         : constant Boolean := True;
     Configurable_Run_Time     : constant Boolean := False;
     Denorm                    : constant Boolean := True;
*************** private
*** 134,145 ****
     Stack_Check_Default       : constant Boolean := False;
     Stack_Check_Probes        : constant Boolean := True;
     Stack_Check_Limits        : constant Boolean := False;
-    Support_64_Bit_Divides    : constant Boolean := True;
     Support_Aggregates        : constant Boolean := True;
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
!    Always_Compatible_Rep     : constant Boolean := True;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
--- 134,144 ----
     Stack_Check_Default       : constant Boolean := False;
     Stack_Check_Probes        : constant Boolean := True;
     Stack_Check_Limits        : constant Boolean := False;
     Support_Aggregates        : constant Boolean := True;
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
!    Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
diff -Nrcpad gcc-5.4.0/gcc/ada/system-linux-ppc.ads gcc-5.5.0/gcc/ada/system-linux-ppc.ads
*** gcc-5.4.0/gcc/ada/system-linux-ppc.ads	Thu Oct 30 11:44:20 2014
--- gcc-5.5.0/gcc/ada/system-linux-ppc.ads	Tue Oct 11 20:05:44 2016
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                         (GNU-Linux/PPC Version)                          --
  --                                                                          --
! --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                         (GNU-Linux/PPC Version)                          --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** package System is
*** 69,76 ****
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
!    Word_Size    : constant := 32;
!    Memory_Size  : constant := 2 ** 32;
  
     --  Address comparison
  
--- 69,76 ----
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
!    Word_Size    : constant := Standard'Word_Size;
!    Memory_Size  : constant := 2 ** Word_Size;
  
     --  Address comparison
  
diff -Nrcpad gcc-5.4.0/gcc/ada/system-linux-ppc64.ads gcc-5.5.0/gcc/ada/system-linux-ppc64.ads
*** gcc-5.4.0/gcc/ada/system-linux-ppc64.ads	Fri May  6 09:12:09 2016
--- gcc-5.5.0/gcc/ada/system-linux-ppc64.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,155 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                        GNAT RUN-TIME COMPONENTS                          --
- --                                                                          --
- --                               S Y S T E M                                --
- --                                                                          --
- --                                 S p e c                                  --
- --                        (GNU-Linux/PPC64 Version)                         --
- --                                                                          --
- --          Copyright (C) 1992-2011, Free Software Foundation, Inc.         --
- --                                                                          --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT. The copyright notice above, and the license provisions that follow --
- -- apply solely to the  contents of the part following the private keyword. --
- --                                                                          --
- -- 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/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- package System is
-    pragma Pure;
-    --  Note that we take advantage of the implementation permission to make
-    --  this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada
-    --  2005, this is Pure in any case (AI-362).
- 
-    pragma No_Elaboration_Code_All;
-    --  Allow the use of that restriction in units that WITH this unit
- 
-    type Name is (SYSTEM_NAME_GNAT);
-    System_Name : constant Name := SYSTEM_NAME_GNAT;
- 
-    --  System-Dependent Named Numbers
- 
-    Min_Int               : constant := Long_Long_Integer'First;
-    Max_Int               : constant := Long_Long_Integer'Last;
- 
-    Max_Binary_Modulus    : constant := 2 ** Long_Long_Integer'Size;
-    Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
- 
-    Max_Base_Digits       : constant := Long_Long_Float'Digits;
-    Max_Digits            : constant := Long_Long_Float'Digits;
- 
-    Max_Mantissa          : constant := 63;
-    Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
- 
-    Tick                  : constant := 0.000_001;
- 
-    --  Storage-related Declarations
- 
-    type Address is private;
-    pragma Preelaborable_Initialization (Address);
-    Null_Address : constant Address;
- 
-    Storage_Unit : constant := 8;
-    Word_Size    : constant := 64;
-    Memory_Size  : constant := 2 ** 64;
- 
-    --  Address comparison
- 
-    function "<"  (Left, Right : Address) return Boolean;
-    function "<=" (Left, Right : Address) return Boolean;
-    function ">"  (Left, Right : Address) return Boolean;
-    function ">=" (Left, Right : Address) return Boolean;
-    function "="  (Left, Right : Address) return Boolean;
- 
-    pragma Import (Intrinsic, "<");
-    pragma Import (Intrinsic, "<=");
-    pragma Import (Intrinsic, ">");
-    pragma Import (Intrinsic, ">=");
-    pragma Import (Intrinsic, "=");
- 
-    --  Other System-Dependent Declarations
- 
-    type Bit_Order is (High_Order_First, Low_Order_First);
-    Default_Bit_Order : constant Bit_Order := High_Order_First;
-    pragma Warnings (Off, Default_Bit_Order); -- kill constant condition warning
- 
-    --  Priority-related Declarations (RM D.1)
- 
-    --  0 .. 98 corresponds to the system priority range 1 .. 99.
-    --
-    --  If the scheduling policy is SCHED_FIFO or SCHED_RR the runtime makes use
-    --  of the entire range provided by the system.
-    --
-    --  If the scheduling policy is SCHED_OTHER the only valid system priority
-    --  is 1 and other values are simply ignored.
- 
-    Max_Priority           : constant Positive := 97;
-    Max_Interrupt_Priority : constant Positive := 98;
- 
-    subtype Any_Priority       is Integer      range  0 .. 98;
-    subtype Priority           is Any_Priority range  0 .. 97;
-    subtype Interrupt_Priority is Any_Priority range 98 .. 98;
- 
-    Default_Priority : constant Priority := 48;
- 
- private
- 
-    type Address is mod Memory_Size;
-    Null_Address : constant Address := 0;
- 
-    --------------------------------------
-    -- System Implementation Parameters --
-    --------------------------------------
- 
-    --  These parameters provide information about the target that is used
-    --  by the compiler. They are in the private part of System, where they
-    --  can be accessed using the special circuitry in the Targparm unit
-    --  whose source should be consulted for more detailed descriptions
-    --  of the individual switch values.
- 
-    Backend_Divide_Checks     : constant Boolean := False;
-    Backend_Overflow_Checks   : constant Boolean := False;
-    Command_Line_Args         : constant Boolean := True;
-    Configurable_Run_Time     : constant Boolean := False;
-    Denorm                    : constant Boolean := True;
-    Duration_32_Bits          : constant Boolean := False;
-    Exit_Status_Supported     : constant Boolean := True;
-    Fractional_Fixed_Ops      : constant Boolean := False;
-    Frontend_Layout           : constant Boolean := False;
-    Machine_Overflows         : constant Boolean := False;
-    Machine_Rounds            : constant Boolean := True;
-    Preallocated_Stacks       : constant Boolean := False;
-    Signed_Zeros              : constant Boolean := True;
-    Stack_Check_Default       : constant Boolean := False;
-    Stack_Check_Probes        : constant Boolean := True;
-    Stack_Check_Limits        : constant Boolean := False;
-    Support_64_Bit_Divides    : constant Boolean := True;
-    Support_Aggregates        : constant Boolean := True;
-    Support_Composite_Assign  : constant Boolean := True;
-    Support_Composite_Compare : constant Boolean := True;
-    Support_Long_Shifts       : constant Boolean := True;
-    Always_Compatible_Rep     : constant Boolean := False;
-    Suppress_Standard_Library : constant Boolean := False;
-    Use_Ada_Main_Program_Name : constant Boolean := False;
-    ZCX_By_Default            : constant Boolean := True;
- 
- end System;
--- 0 ----
diff -Nrcpad gcc-5.4.0/gcc/ada/system-linux-s390.ads gcc-5.5.0/gcc/ada/system-linux-s390.ads
*** gcc-5.4.0/gcc/ada/system-linux-s390.ads	Thu Oct 30 11:44:20 2014
--- gcc-5.5.0/gcc/ada/system-linux-s390.ads	Sun Oct 16 14:05:04 2016
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                          (GNU-Linux/s390 Version)                        --
  --                                                                          --
! --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                          (GNU-Linux/s390 Version)                        --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** private
*** 138,144 ****
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
!    Always_Compatible_Rep     : constant Boolean := True;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
--- 138,144 ----
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
!    Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
diff -Nrcpad gcc-5.4.0/gcc/ada/system-linux-s390x.ads gcc-5.5.0/gcc/ada/system-linux-s390x.ads
*** gcc-5.4.0/gcc/ada/system-linux-s390x.ads	Thu Oct 30 11:44:20 2014
--- gcc-5.5.0/gcc/ada/system-linux-s390x.ads	Sun Oct 16 14:05:04 2016
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                          (GNU-Linux/s390x Version)                       --
  --                                                                          --
! --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                          (GNU-Linux/s390x Version)                       --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** private
*** 138,144 ****
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
!    Always_Compatible_Rep     : constant Boolean := True;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
--- 138,144 ----
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
!    Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
diff -Nrcpad gcc-5.4.0/gcc/ada/system-linux-sh4.ads gcc-5.5.0/gcc/ada/system-linux-sh4.ads
*** gcc-5.4.0/gcc/ada/system-linux-sh4.ads	Thu Oct 30 11:44:20 2014
--- gcc-5.5.0/gcc/ada/system-linux-sh4.ads	Sun Oct 16 14:05:04 2016
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                         (GNU-Linux/sh4 Version)                          --
  --                                                                          --
! --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                         (GNU-Linux/sh4 Version)                          --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** private
*** 146,152 ****
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
!    Always_Compatible_Rep     : constant Boolean := True;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
--- 146,152 ----
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
!    Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
diff -Nrcpad gcc-5.4.0/gcc/ada/system-linux-sparc.ads gcc-5.5.0/gcc/ada/system-linux-sparc.ads
*** gcc-5.4.0/gcc/ada/system-linux-sparc.ads	Thu Oct 30 11:44:20 2014
--- gcc-5.5.0/gcc/ada/system-linux-sparc.ads	Sun Oct 16 14:05:04 2016
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                          (GNU/Linux-SPARC Version)                       --
  --                                                                          --
! --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                          (GNU/Linux-SPARC Version)                       --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** private
*** 138,144 ****
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
!    Always_Compatible_Rep     : constant Boolean := True;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
--- 138,144 ----
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
!    Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
diff -Nrcpad gcc-5.4.0/gcc/ada/system-linux-sparcv9.ads gcc-5.5.0/gcc/ada/system-linux-sparcv9.ads
*** gcc-5.4.0/gcc/ada/system-linux-sparcv9.ads	Fri May  6 09:12:09 2016
--- gcc-5.5.0/gcc/ada/system-linux-sparcv9.ads	Mon Oct 17 08:56:14 2016
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                         (GNU/Linux-SPARCV9 Version)                      --
  --                                                                          --
! --          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                         (GNU/Linux-SPARCV9 Version)                      --
  --                                                                          --
! --          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** private
*** 119,125 ****
     --  of the individual switch values.
  
     Backend_Divide_Checks     : constant Boolean := False;
!    Backend_Overflow_Checks   : constant Boolean := False;
     Command_Line_Args         : constant Boolean := True;
     Configurable_Run_Time     : constant Boolean := False;
     Denorm                    : constant Boolean := True;
--- 119,125 ----
     --  of the individual switch values.
  
     Backend_Divide_Checks     : constant Boolean := False;
!    Backend_Overflow_Checks   : constant Boolean := True;
     Command_Line_Args         : constant Boolean := True;
     Configurable_Run_Time     : constant Boolean := False;
     Denorm                    : constant Boolean := True;
*************** private
*** 134,145 ****
     Stack_Check_Default       : constant Boolean := False;
     Stack_Check_Probes        : constant Boolean := True;
     Stack_Check_Limits        : constant Boolean := False;
-    Support_64_Bit_Divides    : constant Boolean := True;
     Support_Aggregates        : constant Boolean := True;
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
!    Always_Compatible_Rep     : constant Boolean := True;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
--- 134,144 ----
     Stack_Check_Default       : constant Boolean := False;
     Stack_Check_Probes        : constant Boolean := True;
     Stack_Check_Limits        : constant Boolean := False;
     Support_Aggregates        : constant Boolean := True;
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
!    Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
diff -Nrcpad gcc-5.4.0/gcc/ada/system-rtems.ads gcc-5.5.0/gcc/ada/system-rtems.ads
*** gcc-5.4.0/gcc/ada/system-rtems.ads	Fri May  6 09:12:09 2016
--- gcc-5.5.0/gcc/ada/system-rtems.ads	Mon Oct 17 08:56:14 2016
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                            (Compiler Version)                            --
  --                                                                          --
! --          Copyright (C) 1992-2014 Free Software Foundation, Inc.          --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
--- 7,13 ----
  --                                 S p e c                                  --
  --                            (Compiler Version)                            --
  --                                                                          --
! --          Copyright (C) 1992-2016 Free Software Foundation, Inc.          --
  --                                                                          --
  -- This specification is derived from the Ada Reference Manual for use with --
  -- GNAT. The copyright notice above, and the license provisions that follow --
*************** private
*** 138,144 ****
     --  of the individual switch values.
  
     Backend_Divide_Checks     : constant Boolean := False;
!    Backend_Overflow_Checks   : constant Boolean := False;
     Command_Line_Args         : constant Boolean := True;
     Configurable_Run_Time     : constant Boolean := False;
     Denorm                    : constant Boolean := True;
--- 138,144 ----
     --  of the individual switch values.
  
     Backend_Divide_Checks     : constant Boolean := False;
!    Backend_Overflow_Checks   : constant Boolean := True;
     Command_Line_Args         : constant Boolean := True;
     Configurable_Run_Time     : constant Boolean := False;
     Denorm                    : constant Boolean := True;
*************** private
*** 153,164 ****
     Stack_Check_Default       : constant Boolean := False;
     Stack_Check_Probes        : constant Boolean := False;
     Stack_Check_Limits        : constant Boolean := False;
-    Support_64_Bit_Divides    : constant Boolean := True;
     Support_Aggregates        : constant Boolean := True;
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
!    Always_Compatible_Rep     : constant Boolean := True;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := False;
--- 153,163 ----
     Stack_Check_Default       : constant Boolean := False;
     Stack_Check_Probes        : constant Boolean := False;
     Stack_Check_Limits        : constant Boolean := False;
     Support_Aggregates        : constant Boolean := True;
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
!    Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := False;
diff -Nrcpad gcc-5.4.0/gcc/asan.c gcc-5.5.0/gcc/asan.c
*** gcc-5.4.0/gcc/asan.c	Wed Mar 11 07:39:20 2015
--- gcc-5.5.0/gcc/asan.c	Fri Sep 15 12:14:40 2017
*************** get_mem_refs_of_builtin_call (const gcal
*** 606,823 ****
      case BUILT_IN_STRLEN:
        source0 = gimple_call_arg (call, 0);
        len = gimple_call_lhs (call);
!       break ;
  
      /* And now the __atomic* and __sync builtins.
         These are handled differently from the classical memory memory
         access builtins above.  */
  
      case BUILT_IN_ATOMIC_LOAD_1:
-     case BUILT_IN_ATOMIC_LOAD_2:
-     case BUILT_IN_ATOMIC_LOAD_4:
-     case BUILT_IN_ATOMIC_LOAD_8:
-     case BUILT_IN_ATOMIC_LOAD_16:
        is_store = false;
!       /* fall through.  */
! 
      case BUILT_IN_SYNC_FETCH_AND_ADD_1:
-     case BUILT_IN_SYNC_FETCH_AND_ADD_2:
-     case BUILT_IN_SYNC_FETCH_AND_ADD_4:
-     case BUILT_IN_SYNC_FETCH_AND_ADD_8:
-     case BUILT_IN_SYNC_FETCH_AND_ADD_16:
- 
      case BUILT_IN_SYNC_FETCH_AND_SUB_1:
-     case BUILT_IN_SYNC_FETCH_AND_SUB_2:
-     case BUILT_IN_SYNC_FETCH_AND_SUB_4:
-     case BUILT_IN_SYNC_FETCH_AND_SUB_8:
-     case BUILT_IN_SYNC_FETCH_AND_SUB_16:
- 
      case BUILT_IN_SYNC_FETCH_AND_OR_1:
-     case BUILT_IN_SYNC_FETCH_AND_OR_2:
-     case BUILT_IN_SYNC_FETCH_AND_OR_4:
-     case BUILT_IN_SYNC_FETCH_AND_OR_8:
-     case BUILT_IN_SYNC_FETCH_AND_OR_16:
- 
      case BUILT_IN_SYNC_FETCH_AND_AND_1:
-     case BUILT_IN_SYNC_FETCH_AND_AND_2:
-     case BUILT_IN_SYNC_FETCH_AND_AND_4:
-     case BUILT_IN_SYNC_FETCH_AND_AND_8:
-     case BUILT_IN_SYNC_FETCH_AND_AND_16:
- 
      case BUILT_IN_SYNC_FETCH_AND_XOR_1:
-     case BUILT_IN_SYNC_FETCH_AND_XOR_2:
-     case BUILT_IN_SYNC_FETCH_AND_XOR_4:
-     case BUILT_IN_SYNC_FETCH_AND_XOR_8:
-     case BUILT_IN_SYNC_FETCH_AND_XOR_16:
- 
      case BUILT_IN_SYNC_FETCH_AND_NAND_1:
-     case BUILT_IN_SYNC_FETCH_AND_NAND_2:
-     case BUILT_IN_SYNC_FETCH_AND_NAND_4:
-     case BUILT_IN_SYNC_FETCH_AND_NAND_8:
- 
      case BUILT_IN_SYNC_ADD_AND_FETCH_1:
-     case BUILT_IN_SYNC_ADD_AND_FETCH_2:
-     case BUILT_IN_SYNC_ADD_AND_FETCH_4:
-     case BUILT_IN_SYNC_ADD_AND_FETCH_8:
-     case BUILT_IN_SYNC_ADD_AND_FETCH_16:
- 
      case BUILT_IN_SYNC_SUB_AND_FETCH_1:
-     case BUILT_IN_SYNC_SUB_AND_FETCH_2:
-     case BUILT_IN_SYNC_SUB_AND_FETCH_4:
-     case BUILT_IN_SYNC_SUB_AND_FETCH_8:
-     case BUILT_IN_SYNC_SUB_AND_FETCH_16:
- 
      case BUILT_IN_SYNC_OR_AND_FETCH_1:
-     case BUILT_IN_SYNC_OR_AND_FETCH_2:
-     case BUILT_IN_SYNC_OR_AND_FETCH_4:
-     case BUILT_IN_SYNC_OR_AND_FETCH_8:
-     case BUILT_IN_SYNC_OR_AND_FETCH_16:
- 
      case BUILT_IN_SYNC_AND_AND_FETCH_1:
-     case BUILT_IN_SYNC_AND_AND_FETCH_2:
-     case BUILT_IN_SYNC_AND_AND_FETCH_4:
-     case BUILT_IN_SYNC_AND_AND_FETCH_8:
-     case BUILT_IN_SYNC_AND_AND_FETCH_16:
- 
      case BUILT_IN_SYNC_XOR_AND_FETCH_1:
-     case BUILT_IN_SYNC_XOR_AND_FETCH_2:
-     case BUILT_IN_SYNC_XOR_AND_FETCH_4:
-     case BUILT_IN_SYNC_XOR_AND_FETCH_8:
-     case BUILT_IN_SYNC_XOR_AND_FETCH_16:
- 
      case BUILT_IN_SYNC_NAND_AND_FETCH_1:
-     case BUILT_IN_SYNC_NAND_AND_FETCH_2:
-     case BUILT_IN_SYNC_NAND_AND_FETCH_4:
-     case BUILT_IN_SYNC_NAND_AND_FETCH_8:
- 
      case BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_1:
-     case BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_2:
-     case BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_4:
-     case BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_8:
-     case BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_16:
- 
      case BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_1:
-     case BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_2:
-     case BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_4:
-     case BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_8:
-     case BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_16:
- 
      case BUILT_IN_SYNC_LOCK_TEST_AND_SET_1:
-     case BUILT_IN_SYNC_LOCK_TEST_AND_SET_2:
-     case BUILT_IN_SYNC_LOCK_TEST_AND_SET_4:
-     case BUILT_IN_SYNC_LOCK_TEST_AND_SET_8:
-     case BUILT_IN_SYNC_LOCK_TEST_AND_SET_16:
- 
      case BUILT_IN_SYNC_LOCK_RELEASE_1:
-     case BUILT_IN_SYNC_LOCK_RELEASE_2:
-     case BUILT_IN_SYNC_LOCK_RELEASE_4:
-     case BUILT_IN_SYNC_LOCK_RELEASE_8:
-     case BUILT_IN_SYNC_LOCK_RELEASE_16:
- 
      case BUILT_IN_ATOMIC_EXCHANGE_1:
-     case BUILT_IN_ATOMIC_EXCHANGE_2:
-     case BUILT_IN_ATOMIC_EXCHANGE_4:
-     case BUILT_IN_ATOMIC_EXCHANGE_8:
-     case BUILT_IN_ATOMIC_EXCHANGE_16:
- 
      case BUILT_IN_ATOMIC_COMPARE_EXCHANGE_1:
-     case BUILT_IN_ATOMIC_COMPARE_EXCHANGE_2:
-     case BUILT_IN_ATOMIC_COMPARE_EXCHANGE_4:
-     case BUILT_IN_ATOMIC_COMPARE_EXCHANGE_8:
-     case BUILT_IN_ATOMIC_COMPARE_EXCHANGE_16:
- 
      case BUILT_IN_ATOMIC_STORE_1:
-     case BUILT_IN_ATOMIC_STORE_2:
-     case BUILT_IN_ATOMIC_STORE_4:
-     case BUILT_IN_ATOMIC_STORE_8:
-     case BUILT_IN_ATOMIC_STORE_16:
- 
      case BUILT_IN_ATOMIC_ADD_FETCH_1:
-     case BUILT_IN_ATOMIC_ADD_FETCH_2:
-     case BUILT_IN_ATOMIC_ADD_FETCH_4:
-     case BUILT_IN_ATOMIC_ADD_FETCH_8:
-     case BUILT_IN_ATOMIC_ADD_FETCH_16:
- 
      case BUILT_IN_ATOMIC_SUB_FETCH_1:
-     case BUILT_IN_ATOMIC_SUB_FETCH_2:
-     case BUILT_IN_ATOMIC_SUB_FETCH_4:
-     case BUILT_IN_ATOMIC_SUB_FETCH_8:
-     case BUILT_IN_ATOMIC_SUB_FETCH_16:
- 
      case BUILT_IN_ATOMIC_AND_FETCH_1:
-     case BUILT_IN_ATOMIC_AND_FETCH_2:
-     case BUILT_IN_ATOMIC_AND_FETCH_4:
-     case BUILT_IN_ATOMIC_AND_FETCH_8:
-     case BUILT_IN_ATOMIC_AND_FETCH_16:
- 
      case BUILT_IN_ATOMIC_NAND_FETCH_1:
-     case BUILT_IN_ATOMIC_NAND_FETCH_2:
-     case BUILT_IN_ATOMIC_NAND_FETCH_4:
-     case BUILT_IN_ATOMIC_NAND_FETCH_8:
-     case BUILT_IN_ATOMIC_NAND_FETCH_16:
- 
      case BUILT_IN_ATOMIC_XOR_FETCH_1:
-     case BUILT_IN_ATOMIC_XOR_FETCH_2:
-     case BUILT_IN_ATOMIC_XOR_FETCH_4:
-     case BUILT_IN_ATOMIC_XOR_FETCH_8:
-     case BUILT_IN_ATOMIC_XOR_FETCH_16:
- 
      case BUILT_IN_ATOMIC_OR_FETCH_1:
-     case BUILT_IN_ATOMIC_OR_FETCH_2:
-     case BUILT_IN_ATOMIC_OR_FETCH_4:
-     case BUILT_IN_ATOMIC_OR_FETCH_8:
-     case BUILT_IN_ATOMIC_OR_FETCH_16:
- 
      case BUILT_IN_ATOMIC_FETCH_ADD_1:
-     case BUILT_IN_ATOMIC_FETCH_ADD_2:
-     case BUILT_IN_ATOMIC_FETCH_ADD_4:
-     case BUILT_IN_ATOMIC_FETCH_ADD_8:
-     case BUILT_IN_ATOMIC_FETCH_ADD_16:
- 
      case BUILT_IN_ATOMIC_FETCH_SUB_1:
-     case BUILT_IN_ATOMIC_FETCH_SUB_2:
-     case BUILT_IN_ATOMIC_FETCH_SUB_4:
-     case BUILT_IN_ATOMIC_FETCH_SUB_8:
-     case BUILT_IN_ATOMIC_FETCH_SUB_16:
- 
      case BUILT_IN_ATOMIC_FETCH_AND_1:
-     case BUILT_IN_ATOMIC_FETCH_AND_2:
-     case BUILT_IN_ATOMIC_FETCH_AND_4:
-     case BUILT_IN_ATOMIC_FETCH_AND_8:
-     case BUILT_IN_ATOMIC_FETCH_AND_16:
- 
      case BUILT_IN_ATOMIC_FETCH_NAND_1:
-     case BUILT_IN_ATOMIC_FETCH_NAND_2:
-     case BUILT_IN_ATOMIC_FETCH_NAND_4:
-     case BUILT_IN_ATOMIC_FETCH_NAND_8:
-     case BUILT_IN_ATOMIC_FETCH_NAND_16:
- 
      case BUILT_IN_ATOMIC_FETCH_XOR_1:
-     case BUILT_IN_ATOMIC_FETCH_XOR_2:
-     case BUILT_IN_ATOMIC_FETCH_XOR_4:
-     case BUILT_IN_ATOMIC_FETCH_XOR_8:
-     case BUILT_IN_ATOMIC_FETCH_XOR_16:
- 
      case BUILT_IN_ATOMIC_FETCH_OR_1:
      case BUILT_IN_ATOMIC_FETCH_OR_2:
      case BUILT_IN_ATOMIC_FETCH_OR_4:
      case BUILT_IN_ATOMIC_FETCH_OR_8:
      case BUILT_IN_ATOMIC_FETCH_OR_16:
        {
  	dest = gimple_call_arg (call, 0);
  	/* DEST represents the address of a memory location.
  	   instrument_derefs wants the memory location, so lets
  	   dereference the address DEST before handing it to
  	   instrument_derefs.  */
! 	if (TREE_CODE (dest) == ADDR_EXPR)
! 	  dest = TREE_OPERAND (dest, 0);
! 	else if (TREE_CODE (dest) == SSA_NAME || TREE_CODE (dest) == INTEGER_CST)
! 	  dest = build2 (MEM_REF, TREE_TYPE (TREE_TYPE (dest)),
! 			 dest, build_int_cst (TREE_TYPE (dest), 0));
! 	else
! 	  gcc_unreachable ();
! 
! 	access_size = int_size_in_bytes (TREE_TYPE (dest));
        }
  
      default:
--- 606,813 ----
      case BUILT_IN_STRLEN:
        source0 = gimple_call_arg (call, 0);
        len = gimple_call_lhs (call);
!       break;
  
      /* And now the __atomic* and __sync builtins.
         These are handled differently from the classical memory memory
         access builtins above.  */
  
      case BUILT_IN_ATOMIC_LOAD_1:
        is_store = false;
!       /* FALLTHRU */
      case BUILT_IN_SYNC_FETCH_AND_ADD_1:
      case BUILT_IN_SYNC_FETCH_AND_SUB_1:
      case BUILT_IN_SYNC_FETCH_AND_OR_1:
      case BUILT_IN_SYNC_FETCH_AND_AND_1:
      case BUILT_IN_SYNC_FETCH_AND_XOR_1:
      case BUILT_IN_SYNC_FETCH_AND_NAND_1:
      case BUILT_IN_SYNC_ADD_AND_FETCH_1:
      case BUILT_IN_SYNC_SUB_AND_FETCH_1:
      case BUILT_IN_SYNC_OR_AND_FETCH_1:
      case BUILT_IN_SYNC_AND_AND_FETCH_1:
      case BUILT_IN_SYNC_XOR_AND_FETCH_1:
      case BUILT_IN_SYNC_NAND_AND_FETCH_1:
      case BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_1:
      case BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_1:
      case BUILT_IN_SYNC_LOCK_TEST_AND_SET_1:
      case BUILT_IN_SYNC_LOCK_RELEASE_1:
      case BUILT_IN_ATOMIC_EXCHANGE_1:
      case BUILT_IN_ATOMIC_COMPARE_EXCHANGE_1:
      case BUILT_IN_ATOMIC_STORE_1:
      case BUILT_IN_ATOMIC_ADD_FETCH_1:
      case BUILT_IN_ATOMIC_SUB_FETCH_1:
      case BUILT_IN_ATOMIC_AND_FETCH_1:
      case BUILT_IN_ATOMIC_NAND_FETCH_1:
      case BUILT_IN_ATOMIC_XOR_FETCH_1:
      case BUILT_IN_ATOMIC_OR_FETCH_1:
      case BUILT_IN_ATOMIC_FETCH_ADD_1:
      case BUILT_IN_ATOMIC_FETCH_SUB_1:
      case BUILT_IN_ATOMIC_FETCH_AND_1:
      case BUILT_IN_ATOMIC_FETCH_NAND_1:
      case BUILT_IN_ATOMIC_FETCH_XOR_1:
      case BUILT_IN_ATOMIC_FETCH_OR_1:
+       access_size = 1;
+       goto do_atomic;
+ 
+     case BUILT_IN_ATOMIC_LOAD_2:
+       is_store = false;
+       /* FALLTHRU */
+     case BUILT_IN_SYNC_FETCH_AND_ADD_2:
+     case BUILT_IN_SYNC_FETCH_AND_SUB_2:
+     case BUILT_IN_SYNC_FETCH_AND_OR_2:
+     case BUILT_IN_SYNC_FETCH_AND_AND_2:
+     case BUILT_IN_SYNC_FETCH_AND_XOR_2:
+     case BUILT_IN_SYNC_FETCH_AND_NAND_2:
+     case BUILT_IN_SYNC_ADD_AND_FETCH_2:
+     case BUILT_IN_SYNC_SUB_AND_FETCH_2:
+     case BUILT_IN_SYNC_OR_AND_FETCH_2:
+     case BUILT_IN_SYNC_AND_AND_FETCH_2:
+     case BUILT_IN_SYNC_XOR_AND_FETCH_2:
+     case BUILT_IN_SYNC_NAND_AND_FETCH_2:
+     case BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_2:
+     case BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_2:
+     case BUILT_IN_SYNC_LOCK_TEST_AND_SET_2:
+     case BUILT_IN_SYNC_LOCK_RELEASE_2:
+     case BUILT_IN_ATOMIC_EXCHANGE_2:
+     case BUILT_IN_ATOMIC_COMPARE_EXCHANGE_2:
+     case BUILT_IN_ATOMIC_STORE_2:
+     case BUILT_IN_ATOMIC_ADD_FETCH_2:
+     case BUILT_IN_ATOMIC_SUB_FETCH_2:
+     case BUILT_IN_ATOMIC_AND_FETCH_2:
+     case BUILT_IN_ATOMIC_NAND_FETCH_2:
+     case BUILT_IN_ATOMIC_XOR_FETCH_2:
+     case BUILT_IN_ATOMIC_OR_FETCH_2:
+     case BUILT_IN_ATOMIC_FETCH_ADD_2:
+     case BUILT_IN_ATOMIC_FETCH_SUB_2:
+     case BUILT_IN_ATOMIC_FETCH_AND_2:
+     case BUILT_IN_ATOMIC_FETCH_NAND_2:
+     case BUILT_IN_ATOMIC_FETCH_XOR_2:
      case BUILT_IN_ATOMIC_FETCH_OR_2:
+       access_size = 2;
+       goto do_atomic;
+ 
+     case BUILT_IN_ATOMIC_LOAD_4:
+       is_store = false;
+       /* FALLTHRU */
+     case BUILT_IN_SYNC_FETCH_AND_ADD_4:
+     case BUILT_IN_SYNC_FETCH_AND_SUB_4:
+     case BUILT_IN_SYNC_FETCH_AND_OR_4:
+     case BUILT_IN_SYNC_FETCH_AND_AND_4:
+     case BUILT_IN_SYNC_FETCH_AND_XOR_4:
+     case BUILT_IN_SYNC_FETCH_AND_NAND_4:
+     case BUILT_IN_SYNC_ADD_AND_FETCH_4:
+     case BUILT_IN_SYNC_SUB_AND_FETCH_4:
+     case BUILT_IN_SYNC_OR_AND_FETCH_4:
+     case BUILT_IN_SYNC_AND_AND_FETCH_4:
+     case BUILT_IN_SYNC_XOR_AND_FETCH_4:
+     case BUILT_IN_SYNC_NAND_AND_FETCH_4:
+     case BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_4:
+     case BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_4:
+     case BUILT_IN_SYNC_LOCK_TEST_AND_SET_4:
+     case BUILT_IN_SYNC_LOCK_RELEASE_4:
+     case BUILT_IN_ATOMIC_EXCHANGE_4:
+     case BUILT_IN_ATOMIC_COMPARE_EXCHANGE_4:
+     case BUILT_IN_ATOMIC_STORE_4:
+     case BUILT_IN_ATOMIC_ADD_FETCH_4:
+     case BUILT_IN_ATOMIC_SUB_FETCH_4:
+     case BUILT_IN_ATOMIC_AND_FETCH_4:
+     case BUILT_IN_ATOMIC_NAND_FETCH_4:
+     case BUILT_IN_ATOMIC_XOR_FETCH_4:
+     case BUILT_IN_ATOMIC_OR_FETCH_4:
+     case BUILT_IN_ATOMIC_FETCH_ADD_4:
+     case BUILT_IN_ATOMIC_FETCH_SUB_4:
+     case BUILT_IN_ATOMIC_FETCH_AND_4:
+     case BUILT_IN_ATOMIC_FETCH_NAND_4:
+     case BUILT_IN_ATOMIC_FETCH_XOR_4:
      case BUILT_IN_ATOMIC_FETCH_OR_4:
+       access_size = 4;
+       goto do_atomic;
+ 
+     case BUILT_IN_ATOMIC_LOAD_8:
+       is_store = false;
+       /* FALLTHRU */
+     case BUILT_IN_SYNC_FETCH_AND_ADD_8:
+     case BUILT_IN_SYNC_FETCH_AND_SUB_8:
+     case BUILT_IN_SYNC_FETCH_AND_OR_8:
+     case BUILT_IN_SYNC_FETCH_AND_AND_8:
+     case BUILT_IN_SYNC_FETCH_AND_XOR_8:
+     case BUILT_IN_SYNC_FETCH_AND_NAND_8:
+     case BUILT_IN_SYNC_ADD_AND_FETCH_8:
+     case BUILT_IN_SYNC_SUB_AND_FETCH_8:
+     case BUILT_IN_SYNC_OR_AND_FETCH_8:
+     case BUILT_IN_SYNC_AND_AND_FETCH_8:
+     case BUILT_IN_SYNC_XOR_AND_FETCH_8:
+     case BUILT_IN_SYNC_NAND_AND_FETCH_8:
+     case BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_8:
+     case BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_8:
+     case BUILT_IN_SYNC_LOCK_TEST_AND_SET_8:
+     case BUILT_IN_SYNC_LOCK_RELEASE_8:
+     case BUILT_IN_ATOMIC_EXCHANGE_8:
+     case BUILT_IN_ATOMIC_COMPARE_EXCHANGE_8:
+     case BUILT_IN_ATOMIC_STORE_8:
+     case BUILT_IN_ATOMIC_ADD_FETCH_8:
+     case BUILT_IN_ATOMIC_SUB_FETCH_8:
+     case BUILT_IN_ATOMIC_AND_FETCH_8:
+     case BUILT_IN_ATOMIC_NAND_FETCH_8:
+     case BUILT_IN_ATOMIC_XOR_FETCH_8:
+     case BUILT_IN_ATOMIC_OR_FETCH_8:
+     case BUILT_IN_ATOMIC_FETCH_ADD_8:
+     case BUILT_IN_ATOMIC_FETCH_SUB_8:
+     case BUILT_IN_ATOMIC_FETCH_AND_8:
+     case BUILT_IN_ATOMIC_FETCH_NAND_8:
+     case BUILT_IN_ATOMIC_FETCH_XOR_8:
      case BUILT_IN_ATOMIC_FETCH_OR_8:
+       access_size = 8;
+       goto do_atomic;
+ 
+     case BUILT_IN_ATOMIC_LOAD_16:
+       is_store = false;
+       /* FALLTHRU */
+     case BUILT_IN_SYNC_FETCH_AND_ADD_16:
+     case BUILT_IN_SYNC_FETCH_AND_SUB_16:
+     case BUILT_IN_SYNC_FETCH_AND_OR_16:
+     case BUILT_IN_SYNC_FETCH_AND_AND_16:
+     case BUILT_IN_SYNC_FETCH_AND_XOR_16:
+     case BUILT_IN_SYNC_FETCH_AND_NAND_16:
+     case BUILT_IN_SYNC_ADD_AND_FETCH_16:
+     case BUILT_IN_SYNC_SUB_AND_FETCH_16:
+     case BUILT_IN_SYNC_OR_AND_FETCH_16:
+     case BUILT_IN_SYNC_AND_AND_FETCH_16:
+     case BUILT_IN_SYNC_XOR_AND_FETCH_16:
+     case BUILT_IN_SYNC_NAND_AND_FETCH_16:
+     case BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_16:
+     case BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_16:
+     case BUILT_IN_SYNC_LOCK_TEST_AND_SET_16:
+     case BUILT_IN_SYNC_LOCK_RELEASE_16:
+     case BUILT_IN_ATOMIC_EXCHANGE_16:
+     case BUILT_IN_ATOMIC_COMPARE_EXCHANGE_16:
+     case BUILT_IN_ATOMIC_STORE_16:
+     case BUILT_IN_ATOMIC_ADD_FETCH_16:
+     case BUILT_IN_ATOMIC_SUB_FETCH_16:
+     case BUILT_IN_ATOMIC_AND_FETCH_16:
+     case BUILT_IN_ATOMIC_NAND_FETCH_16:
+     case BUILT_IN_ATOMIC_XOR_FETCH_16:
+     case BUILT_IN_ATOMIC_OR_FETCH_16:
+     case BUILT_IN_ATOMIC_FETCH_ADD_16:
+     case BUILT_IN_ATOMIC_FETCH_SUB_16:
+     case BUILT_IN_ATOMIC_FETCH_AND_16:
+     case BUILT_IN_ATOMIC_FETCH_NAND_16:
+     case BUILT_IN_ATOMIC_FETCH_XOR_16:
      case BUILT_IN_ATOMIC_FETCH_OR_16:
+       access_size = 16;
+       /* FALLTHRU */
+     do_atomic:
        {
  	dest = gimple_call_arg (call, 0);
  	/* DEST represents the address of a memory location.
  	   instrument_derefs wants the memory location, so lets
  	   dereference the address DEST before handing it to
  	   instrument_derefs.  */
! 	tree type = build_nonstandard_integer_type (access_size
! 						    * BITS_PER_UNIT, 1);
! 	dest = build2 (MEM_REF, type, dest,
! 		       build_int_cst (build_pointer_type (char_type_node), 0));
! 	break;
        }
  
      default:
*************** instrument_derefs (gimple_stmt_iterator
*** 1803,1809 ****
        tree repr = DECL_BIT_FIELD_REPRESENTATIVE (TREE_OPERAND (t, 1));
        instrument_derefs (iter, build3 (COMPONENT_REF, TREE_TYPE (repr),
  				       TREE_OPERAND (t, 0), repr,
! 				       NULL_TREE), location, is_store);
        return;
      }
  
--- 1793,1800 ----
        tree repr = DECL_BIT_FIELD_REPRESENTATIVE (TREE_OPERAND (t, 1));
        instrument_derefs (iter, build3 (COMPONENT_REF, TREE_TYPE (repr),
  				       TREE_OPERAND (t, 0), repr,
! 				       TREE_OPERAND (t, 2)),
! 			 location, is_store);
        return;
      }
  
*************** instrument_derefs (gimple_stmt_iterator
*** 1811,1816 ****
--- 1802,1810 ----
        || bitsize != size_in_bytes * BITS_PER_UNIT)
      return;
  
+   if (TREE_CODE (inner) == VAR_DECL && DECL_HARD_REGISTER (inner))
+     return;
+ 
    if (TREE_CODE (inner) == VAR_DECL
        && offset == NULL_TREE
        && bitpos >= 0
*************** transform_statements (void)
*** 2129,2134 ****
--- 2123,2131 ----
  tree
  asan_dynamic_init_call (bool after_p)
  {
+   if (shadow_ptr_types[0] == NULL_TREE)
+     asan_init_shadow_ptr_types ();
+ 
    tree fn = builtin_decl_implicit (after_p
  				   ? BUILT_IN_ASAN_AFTER_DYNAMIC_INIT
  				   : BUILT_IN_ASAN_BEFORE_DYNAMIC_INIT);
*************** asan_dynamic_init_call (bool after_p)
*** 2138,2145 ****
        pretty_printer module_name_pp;
        pp_string (&module_name_pp, main_input_filename);
  
-       if (shadow_ptr_types[0] == NULL_TREE)
- 	asan_init_shadow_ptr_types ();
        module_name_cst = asan_pp_string (&module_name_pp);
        module_name_cst = fold_convert (const_ptr_type_node,
  				      module_name_cst);
--- 2135,2140 ----
*************** asan_add_global (tree decl, tree type, v
*** 2244,2250 ****
    CONSTRUCTOR_APPEND_ELT (vinner, NULL_TREE,
  			  fold_convert (const_ptr_type_node, module_name_cst));
    varpool_node *vnode = varpool_node::get (decl);
!   int has_dynamic_init = vnode ? vnode->dynamically_initialized : 0;
    CONSTRUCTOR_APPEND_ELT (vinner, NULL_TREE,
  			  build_int_cst (uptr, has_dynamic_init));
    tree locptr = NULL_TREE;
--- 2239,2249 ----
    CONSTRUCTOR_APPEND_ELT (vinner, NULL_TREE,
  			  fold_convert (const_ptr_type_node, module_name_cst));
    varpool_node *vnode = varpool_node::get (decl);
!   int has_dynamic_init = 0;
!   /* FIXME: Enable initialization order fiasco detection in LTO mode once
!      proper fix for PR 79061 will be applied.  */
!   if (!in_lto_p)
!     has_dynamic_init = vnode ? vnode->dynamically_initialized : 0;
    CONSTRUCTOR_APPEND_ELT (vinner, NULL_TREE,
  			  build_int_cst (uptr, has_dynamic_init));
    tree locptr = NULL_TREE;
diff -Nrcpad gcc-5.4.0/gcc/auto-profile.c gcc-5.5.0/gcc/auto-profile.c
*** gcc-5.4.0/gcc/auto-profile.c	Sun Jan 18 02:25:42 2015
--- gcc-5.5.0/gcc/auto-profile.c	Mon Sep 25 23:49:58 2017
*************** along with GCC; see the file COPYING3.
*** 19,30 ****
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
  #include "system.h"
  
- #include <string.h>
- #include <map>
- #include <set>
- 
  #include "coretypes.h"
  #include "hash-set.h"
  #include "machmode.h"
--- 19,28 ----
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
+ #define INCLUDE_MAP
+ #define INCLUDE_SET
  #include "system.h"
  
  #include "coretypes.h"
  #include "hash-set.h"
  #include "machmode.h"
*************** get_function_decl_from_block (tree block
*** 390,396 ****
  {
    tree decl;
  
!   if (LOCATION_LOCUS (BLOCK_SOURCE_LOCATION (block) == UNKNOWN_LOCATION))
      return NULL_TREE;
  
    for (decl = BLOCK_ABSTRACT_ORIGIN (block);
--- 388,394 ----
  {
    tree decl;
  
!   if (LOCATION_LOCUS (BLOCK_SOURCE_LOCATION (block)) == UNKNOWN_LOCATION)
      return NULL_TREE;
  
    for (decl = BLOCK_ABSTRACT_ORIGIN (block);
*************** afdo_vpt_for_early_inline (stmt_set *pro
*** 1469,1475 ****
  
    if (has_vpt)
      {
!       optimize_inline_calls (current_function_decl);
        return true;
      }
  
--- 1467,1475 ----
  
    if (has_vpt)
      {
!       unsigned todo = optimize_inline_calls (current_function_decl);
!       if (todo & TODO_update_ssa_any)
!        update_ssa (TODO_update_ssa);
        return true;
      }
  
diff -Nrcpad gcc-5.4.0/gcc/bb-reorder.c gcc-5.5.0/gcc/bb-reorder.c
*** gcc-5.4.0/gcc/bb-reorder.c	Wed Feb 24 12:55:31 2016
--- gcc-5.5.0/gcc/bb-reorder.c	Sat Sep 16 18:38:01 2017
*************** pass_partition_blocks::execute (function
*** 2744,2750 ****
  
    crossing_edges = find_rarely_executed_basic_blocks_and_crossing_edges ();
    if (!crossing_edges.exists ())
!     return 0;
  
    crtl->has_bb_partition = true;
  
--- 2744,2751 ----
  
    crossing_edges = find_rarely_executed_basic_blocks_and_crossing_edges ();
    if (!crossing_edges.exists ())
!     /* Make sure to process deferred rescans and clear changeable df flags.  */
!     return TODO_df_finish;
  
    crtl->has_bb_partition = true;
  
*************** pass_partition_blocks::execute (function
*** 2810,2816 ****
        df_analyze ();
      }
  
!   return 0;
  }
  
  } // anon namespace
--- 2811,2818 ----
        df_analyze ();
      }
  
!   /* Make sure to process deferred rescans and clear changeable df flags.  */
!   return TODO_df_finish;
  }
  
  } // anon namespace
diff -Nrcpad gcc-5.4.0/gcc/builtins.c gcc-5.5.0/gcc/builtins.c
*** gcc-5.4.0/gcc/builtins.c	Mon Apr 11 13:46:51 2016
--- gcc-5.5.0/gcc/builtins.c	Tue Jun 27 18:24:51 2017
*************** expand_builtin_atomic_fetch_op (machine_
*** 5594,5599 ****
--- 5594,5605 ----
    gcc_assert (TREE_OPERAND (addr, 0) == fndecl);
    TREE_OPERAND (addr, 0) = builtin_decl_explicit (ext_call);
  
+   /* If we will emit code after the call, the call can not be a tail call.
+      If it is emitted as a tail call, a barrier is emitted after it, and
+      then all trailing code is removed.  */
+   if (!ignore)
+     CALL_EXPR_TAILCALL (exp) = 0;
+ 
    /* Expand the call here so we can emit trailing code.  */
    ret = expand_call (exp, target, ignore);
  
*************** fold_builtin_atomic_always_lock_free (tr
*** 5719,5726 ****
  	 end before anything else has a chance to look at it.  The pointer
  	 parameter at this point is usually cast to a void *, so check for that
  	 and look past the cast.  */
!       if (CONVERT_EXPR_P (arg1) && POINTER_TYPE_P (ttype)
! 	  && VOID_TYPE_P (TREE_TYPE (ttype)))
  	arg1 = TREE_OPERAND (arg1, 0);
  
        ttype = TREE_TYPE (arg1);
--- 5725,5734 ----
  	 end before anything else has a chance to look at it.  The pointer
  	 parameter at this point is usually cast to a void *, so check for that
  	 and look past the cast.  */
!       if (CONVERT_EXPR_P (arg1)
! 	  && POINTER_TYPE_P (ttype)
! 	  && VOID_TYPE_P (TREE_TYPE (ttype))
! 	  && POINTER_TYPE_P (TREE_TYPE (TREE_OPERAND (arg1, 0))))
  	arg1 = TREE_OPERAND (arg1, 0);
  
        ttype = TREE_TYPE (arg1);
diff -Nrcpad gcc-5.4.0/gcc/c/ChangeLog gcc-5.5.0/gcc/c/ChangeLog
*** gcc-5.4.0/gcc/c/ChangeLog	Fri Jun  3 08:41:59 2016
--- gcc-5.5.0/gcc/c/ChangeLog	Tue Oct 10 08:11:01 2017
***************
*** 1,3 ****
--- 1,57 ----
+ 2017-10-10  Release Manager
+ 
+ 	* GCC 5.5.0 released.
+ 
+ 2017-06-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/81006
+ 	* c-typeck.c (handle_omp_array_sections_1): Convert TYPE_MAX_VALUE
+ 	to sizetype before size_binop.
+ 
+ 2017-05-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2017-03-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/80097
+ 	* c-typeck.c (build_binary_op): Add EXCESS_PRECISION_EXPR only around
+ 	optional COMPOUND_EXPR with ubsan instrumentation.
+ 
+ 	2017-02-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/79512
+ 	* c-parser.c (c_parser_omp_target): For -fopenmp-simd
+ 	ignore #pragma omp target even when not followed by identifier.
+ 
+ 	2016-12-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/77767
+ 	* c-decl.c (grokdeclarator): If *expr is non-NULL, append expression
+ 	to *expr instead of overwriting it.
+ 
+ 	2016-08-12  Jakub Jelinek  <jakub@redhat.com>
+ 		    Martin Liska  <mliska@suse.cz>
+ 
+ 	PR c/67410
+ 	* c-typeck.c (set_nonincremental_init_from_string): Use / instead of
+ 	% to determine val element to change.  Assert that
+ 	wchar_bytes * charwidth fits into val array.
+ 
+ 	2016-08-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/72816
+ 	* c-decl.c (grokdeclarator): When adding TYPE_DOMAIN for flexible
+ 	array member through typedef, for orig_qual_indirect == 0 clear
+ 	orig_qual_type.
+ 
+ 2016-11-05  Martin Sebor  <msebor@redhat.com>
+ 
+ 	Backport from trunk.
+ 	PR c/71115
+ 	* c-typeck.c (error_init): Use
+ 	expansion_point_location_if_in_system_header.
+ 	(warning_init): Same.
+ 
  2016-06-03  Release Manager
  
  	* GCC 5.4.0 released.
diff -Nrcpad gcc-5.4.0/gcc/c/c-decl.c gcc-5.5.0/gcc/c/c-decl.c
*** gcc-5.4.0/gcc/c/c-decl.c	Mon Apr 18 15:21:52 2016
--- gcc-5.5.0/gcc/c/c-decl.c	Tue May 30 07:51:58 2017
*************** grokdeclarator (const struct c_declarato
*** 5409,5419 ****
    if (TREE_CODE (type) == ERROR_MARK)
      return error_mark_node;
    if (expr == NULL)
!     expr = &expr_dummy;
    if (expr_const_operands == NULL)
      expr_const_operands = &expr_const_operands_dummy;
  
!   *expr = declspecs->expr;
    *expr_const_operands = declspecs->expr_const_operands;
  
    if (decl_context == FUNCDEF)
--- 5409,5429 ----
    if (TREE_CODE (type) == ERROR_MARK)
      return error_mark_node;
    if (expr == NULL)
!     {
!       expr = &expr_dummy;
!       expr_dummy = NULL_TREE;
!     }
    if (expr_const_operands == NULL)
      expr_const_operands = &expr_const_operands_dummy;
  
!   if (declspecs->expr)
!     {
!       if (*expr)
! 	*expr = build2 (COMPOUND_EXPR, TREE_TYPE (declspecs->expr), *expr,
! 			declspecs->expr);
!       else
! 	*expr = declspecs->expr;
!     }
    *expr_const_operands = declspecs->expr_const_operands;
  
    if (decl_context == FUNCDEF)
*************** grokdeclarator (const struct c_declarato
*** 6572,6577 ****
--- 6582,6589 ----
  	    type = build_distinct_type_copy (TYPE_MAIN_VARIANT (type));
  	    TYPE_DOMAIN (type) = build_range_type (sizetype, size_zero_node,
  						   NULL_TREE);
+ 	    if (orig_qual_indirect == 0)
+ 	      orig_qual_type = NULL_TREE;
  	  }
  	type = c_build_qualified_type (type, type_quals, orig_qual_type,
  				       orig_qual_indirect);
diff -Nrcpad gcc-5.4.0/gcc/c/c-objc-common.c gcc-5.5.0/gcc/c/c-objc-common.c
*** gcc-5.4.0/gcc/c/c-objc-common.c	Fri Jan  9 20:18:42 2015
--- gcc-5.5.0/gcc/c/c-objc-common.c	Mon Sep 25 23:49:58 2017
*************** along with GCC; see the file COPYING3.
*** 38,45 ****
  #include "langhooks.h"
  #include "c-objc-common.h"
  
- #include <new>                          // For placement new.
- 
  static bool c_tree_printer (pretty_printer *, text_info *, const char *,
  			    int, bool, bool, bool);
  
--- 38,43 ----
diff -Nrcpad gcc-5.4.0/gcc/c/c-parser.c gcc-5.5.0/gcc/c/c-parser.c
*** gcc-5.4.0/gcc/c/c-parser.c	Wed Feb 17 13:10:59 2016
--- gcc-5.5.0/gcc/c/c-parser.c	Tue May 30 07:58:55 2017
*************** c_parser_omp_target (c_parser *parser, e
*** 13980,13985 ****
--- 13980,13990 ----
  	}
      }
  
+   if (!flag_openmp) /* flag_openmp_simd  */
+     {
+       c_parser_skip_to_pragma_eol (parser, false);
+       return false;
+     }
    tree stmt = make_node (OMP_TARGET);
    TREE_TYPE (stmt) = void_type_node;
  
diff -Nrcpad gcc-5.4.0/gcc/c/c-typeck.c gcc-5.5.0/gcc/c/c-typeck.c
*** gcc-5.4.0/gcc/c/c-typeck.c	Wed Feb 17 13:10:59 2016
--- gcc-5.5.0/gcc/c/c-typeck.c	Thu Jun  8 19:23:34 2017
*************** error_init (location_t loc, const char *
*** 5632,5647 ****
     component name is taken from the spelling stack.  */
  
  static void
! pedwarn_init (location_t location, int opt, const char *gmsgid)
  {
    char *ofwhat;
    bool warned;
  
    /* The gmsgid may be a format string with %< and %>. */
!   warned = pedwarn (location, opt, gmsgid);
    ofwhat = print_spelling ((char *) alloca (spelling_length () + 1));
    if (*ofwhat && warned)
!     inform (location, "(near initialization for %qs)", ofwhat);
  }
  
  /* Issue a warning for a bad initializer component.
--- 5632,5652 ----
     component name is taken from the spelling stack.  */
  
  static void
! pedwarn_init (location_t loc, int opt, const char *gmsgid)
  {
    char *ofwhat;
    bool warned;
  
+   /* Use the location where a macro was expanded rather than where
+      it was defined to make sure macros defined in system headers
+      but used incorrectly elsewhere are diagnosed.  */
+   source_location exploc = expansion_point_location_if_in_system_header (loc);
+ 
    /* The gmsgid may be a format string with %< and %>. */
!   warned = pedwarn (exploc, opt, gmsgid);
    ofwhat = print_spelling ((char *) alloca (spelling_length () + 1));
    if (*ofwhat && warned)
!     inform (exploc, "(near initialization for %qs)", ofwhat);
  }
  
  /* Issue a warning for a bad initializer component.
*************** warning_init (location_t loc, int opt, c
*** 5656,5666 ****
    char *ofwhat;
    bool warned;
  
    /* The gmsgid may be a format string with %< and %>. */
!   warned = warning_at (loc, opt, gmsgid);
    ofwhat = print_spelling ((char *) alloca (spelling_length () + 1));
    if (*ofwhat && warned)
!     inform (loc, "(near initialization for %qs)", ofwhat);
  }
  
  /* If TYPE is an array type and EXPR is a parenthesized string
--- 5661,5676 ----
    char *ofwhat;
    bool warned;
  
+   /* Use the location where a macro was expanded rather than where
+      it was defined to make sure macros defined in system headers
+      but used incorrectly elsewhere are diagnosed.  */
+   source_location exploc = expansion_point_location_if_in_system_header (loc);
+ 
    /* The gmsgid may be a format string with %< and %>. */
!   warned = warning_at (exploc, opt, gmsgid);
    ofwhat = print_spelling ((char *) alloca (spelling_length () + 1));
    if (*ofwhat && warned)
!     inform (exploc, "(near initialization for %qs)", ofwhat);
  }
  
  /* If TYPE is an array type and EXPR is a parenthesized string
*************** set_nonincremental_init_from_string (tre
*** 8238,8243 ****
--- 8248,8255 ----
  
    wchar_bytes = TYPE_PRECISION (TREE_TYPE (TREE_TYPE (str))) / BITS_PER_UNIT;
    charwidth = TYPE_PRECISION (char_type_node);
+   gcc_assert ((size_t) wchar_bytes * charwidth
+ 	      <= ARRAY_SIZE (val) * HOST_BITS_PER_WIDE_INT);
    type = TREE_TYPE (constructor_type);
    p = TREE_STRING_POINTER (str);
    end = p + TREE_STRING_LENGTH (str);
*************** set_nonincremental_init_from_string (tre
*** 8263,8269 ****
  		bitpos = (wchar_bytes - byte - 1) * charwidth;
  	      else
  		bitpos = byte * charwidth;
! 	      val[bitpos % HOST_BITS_PER_WIDE_INT]
  		|= ((unsigned HOST_WIDE_INT) ((unsigned char) *p++))
  		   << (bitpos % HOST_BITS_PER_WIDE_INT);
  	    }
--- 8275,8281 ----
  		bitpos = (wchar_bytes - byte - 1) * charwidth;
  	      else
  		bitpos = byte * charwidth;
! 	      val[bitpos / HOST_BITS_PER_WIDE_INT]
  		|= ((unsigned HOST_WIDE_INT) ((unsigned char) *p++))
  		   << (bitpos % HOST_BITS_PER_WIDE_INT);
  	    }
*************** build_binary_op (location_t location, en
*** 11326,11339 ****
    else if (TREE_CODE (ret) != INTEGER_CST && int_operands
  	   && !in_late_binary_op)
      ret = note_integer_operands (ret);
-   if (semantic_result_type)
-     ret = build1 (EXCESS_PRECISION_EXPR, semantic_result_type, ret);
    protected_set_expr_location (ret, location);
  
    if (instrument_expr != NULL)
      ret = fold_build2 (COMPOUND_EXPR, TREE_TYPE (ret),
  		       instrument_expr, ret);
  
    return ret;
  }
  
--- 11338,11353 ----
    else if (TREE_CODE (ret) != INTEGER_CST && int_operands
  	   && !in_late_binary_op)
      ret = note_integer_operands (ret);
    protected_set_expr_location (ret, location);
  
    if (instrument_expr != NULL)
      ret = fold_build2 (COMPOUND_EXPR, TREE_TYPE (ret),
  		       instrument_expr, ret);
  
+   if (semantic_result_type)
+     ret = build1_loc (location, EXCESS_PRECISION_EXPR,
+ 		      semantic_result_type, ret);
+ 
    return ret;
  }
  
*************** handle_omp_array_sections_1 (tree c, tre
*** 11740,11748 ****
  	  && TREE_CODE (TYPE_MAX_VALUE (TYPE_DOMAIN (type)))
  			== INTEGER_CST)
  	{
! 	  tree size = size_binop (PLUS_EXPR,
! 				  TYPE_MAX_VALUE (TYPE_DOMAIN (type)),
! 				  size_one_node);
  	  if (TREE_CODE (low_bound) == INTEGER_CST)
  	    {
  	      if (tree_int_cst_lt (size, low_bound))
--- 11754,11762 ----
  	  && TREE_CODE (TYPE_MAX_VALUE (TYPE_DOMAIN (type)))
  			== INTEGER_CST)
  	{
! 	  tree size
! 	    = fold_convert (sizetype, TYPE_MAX_VALUE (TYPE_DOMAIN (type)));
! 	  size = size_binop (PLUS_EXPR, size, size_one_node);
  	  if (TREE_CODE (low_bound) == INTEGER_CST)
  	    {
  	      if (tree_int_cst_lt (size, low_bound))
diff -Nrcpad gcc-5.4.0/gcc/c-family/ChangeLog gcc-5.5.0/gcc/c-family/ChangeLog
*** gcc-5.4.0/gcc/c-family/ChangeLog	Fri Jun  3 08:41:59 2016
--- gcc-5.5.0/gcc/c-family/ChangeLog	Tue Oct 10 08:11:01 2017
***************
*** 1,3 ****
--- 1,101 ----
+ 2017-10-10  Release Manager
+ 
+ 	* GCC 5.5.0 released.
+ 
+ 2017-09-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2017-09-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/82112
+ 	* c-common.c (sync_resolve_size): Instead of c_dialect_cxx ()
+ 	assertion check that in the condition.
+ 	(get_atomic_generic_size): Likewise.  Before testing if parameter
+ 	has pointer type, if it has array type, call for C++
+ 	default_conversion to perform array-to-pointer conversion.
+ 
+ 	2017-07-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/45784
+ 	* c-omp.c (c_finish_omp_for): If the condition is wrapped in
+ 	rhs of COMPOUND_EXPR(s), skip them and readd their lhs into
+ 	new COMPOUND_EXPRs around the rhs of the comparison.
+ 
+ 2017-09-15  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-06-28  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/81128
+ 	* c-attribs.c (handle_alias_ifunc_attribute): Append ifunc alias
+ 	to a function declaration.
+ 
+ 2017-09-11  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR c++/81852
+ 	* c-cppbuiltin.c (c_cpp_builtins): Define __cpp_threadsafe_static_init.
+ 
+ 2017-05-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2017-02-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/79641
+ 	* c-common.c (handle_mode_attribute): Use build_qualified_type to
+ 	preserve quals.
+ 
+ 2017-05-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	PR c/79756
+ 	* c-common.c (c_common_mark_addressable_vec): Look through
+ 	C_MAYBE_CONST_EXPR.
+ 
+ 2017-03-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-03-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* c-ada-spec.c (macro_length): Increment value instead of a pointer.
+ 
+ 2017-03-21  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR c++/79548
+ 	* c-common.c (set_underlying_type): Mark type used only when
+ 	original del is declared unused.
+ 
+ 2017-01-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2016-09-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR c/77450
+ 	* c-common.c (c_common_mark_addressable_vec): Handle
+ 	COMPOUND_LITERAL_EXPR.
+ 
+ 2017-01-10  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-01-05  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR pch/78970
+ 	* c-opts.c (c_common_post_options): Reject '-' filename for a precompiled
+ 	header.
+ 
+ 2016-07-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2016-06-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/71498
+ 	* c-gimplify.c (ubsan_walk_array_refs_r): Set *walk_subtrees = 0 on
+ 	all BIND_EXPRs, and on all BIND_EXPRs recurse also on BIND_EXPR_BODY.
+ 
+ 2016-07-05  Markus Trippelsdorf  <markus@trippelsdorf.de>
+ 
+ 	PR c++/71214
+ 	* c-cppbuiltin.c (c_cpp_builtins): Define __cpp_rvalue_references.
+ 
  2016-06-03  Release Manager
  
  	* GCC 5.4.0 released.
diff -Nrcpad gcc-5.4.0/gcc/c-family/c-ada-spec.c gcc-5.5.0/gcc/c-family/c-ada-spec.c
*** gcc-5.4.0/gcc/c-family/c-ada-spec.c	Tue Apr 28 08:54:28 2015
--- gcc-5.5.0/gcc/c-family/c-ada-spec.c	Wed Mar 22 12:29:07 2017
*************** macro_length (const cpp_macro *macro, in
*** 85,91 ****
  
    if (macro->fun_like)
      {
!       param_len++;
        for (i = 0; i < macro->paramc; i++)
  	{
  	  cpp_hashnode *param = macro->params[i];
--- 85,91 ----
  
    if (macro->fun_like)
      {
!       (*param_len)++;
        for (i = 0; i < macro->paramc; i++)
  	{
  	  cpp_hashnode *param = macro->params[i];
diff -Nrcpad gcc-5.4.0/gcc/c-family/c-common.c gcc-5.5.0/gcc/c-family/c-common.c
*** gcc-5.4.0/gcc/c-family/c-common.c	Wed Mar 30 12:29:47 2016
--- gcc-5.5.0/gcc/c-family/c-common.c	Tue Sep 19 08:12:35 2017
*************** handle_mode_attribute (tree *node, tree
*** 7561,7567 ****
  	  return NULL_TREE;
  	}
  
!       *node = typefm;
      }
  
    return NULL_TREE;
--- 7561,7567 ----
  	  return NULL_TREE;
  	}
  
!       *node = build_qualified_type (typefm, TYPE_QUALS (type));
      }
  
    return NULL_TREE;
*************** handle_alias_ifunc_attribute (bool is_al
*** 7940,7948 ****
  	TREE_STATIC (decl) = 1;
  
        if (!is_alias)
! 	/* ifuncs are also aliases, so set that attribute too. */
! 	DECL_ATTRIBUTES (decl)
! 	  = tree_cons (get_identifier ("alias"), args, DECL_ATTRIBUTES (decl));
      }
    else
      {
--- 7940,7953 ----
  	TREE_STATIC (decl) = 1;
  
        if (!is_alias)
! 	{
! 	  /* ifuncs are also aliases, so set that attribute too.  */
! 	  DECL_ATTRIBUTES (decl)
! 	    = tree_cons (get_identifier ("alias"), args,
! 			 DECL_ATTRIBUTES (decl));
! 	  DECL_ATTRIBUTES (decl) = tree_cons (get_identifier ("ifunc"),
! 					      NULL, DECL_ATTRIBUTES (decl));
! 	}
      }
    else
      {
*************** parse_optimize_options (tree args, bool
*** 9321,9327 ****
    bool ret = true;
    unsigned opt_argc;
    unsigned i;
-   int saved_flag_strict_aliasing;
    const char **opt_argv;
    struct cl_decoded_option *decoded_options;
    unsigned int decoded_options_count;
--- 9326,9331 ----
*************** parse_optimize_options (tree args, bool
*** 9414,9421 ****
    for (i = 1; i < opt_argc; i++)
      opt_argv[i] = (*optimize_args)[i];
  
-   saved_flag_strict_aliasing = flag_strict_aliasing;
- 
    /* Now parse the options.  */
    decode_cmdline_options_to_array_default_mask (opt_argc, opt_argv,
  						&decoded_options,
--- 9418,9423 ----
*************** parse_optimize_options (tree args, bool
*** 9426,9434 ****
  
    targetm.override_options_after_change();
  
-   /* Don't allow changing -fstrict-aliasing.  */
-   flag_strict_aliasing = saved_flag_strict_aliasing;
- 
    optimize_args->truncate (0);
    return ret;
  }
--- 9428,9433 ----
*************** complete_array_type (tree *ptype, tree i
*** 10479,10487 ****
  void 
  c_common_mark_addressable_vec (tree t)
  {   
    while (handled_component_p (t))
      t = TREE_OPERAND (t, 0);
!   if (TREE_CODE (t) != VAR_DECL && TREE_CODE (t) != PARM_DECL)
      return;
    TREE_ADDRESSABLE (t) = 1;
  }
--- 10478,10490 ----
  void 
  c_common_mark_addressable_vec (tree t)
  {   
+   if (TREE_CODE (t) == C_MAYBE_CONST_EXPR)
+     t = C_MAYBE_CONST_EXPR_EXPR (t);
    while (handled_component_p (t))
      t = TREE_OPERAND (t, 0);
!   if (!VAR_P (t)
!       && TREE_CODE (t) != PARM_DECL
!       && TREE_CODE (t) != COMPOUND_LITERAL_EXPR)
      return;
    TREE_ADDRESSABLE (t) = 1;
  }
*************** sync_resolve_size (tree function, vec<tr
*** 10518,10527 ****
      }
  
    type = TREE_TYPE ((*params)[0]);
!   if (TREE_CODE (type) == ARRAY_TYPE)
      {
        /* Force array-to-pointer decay for C++.  */
-       gcc_assert (c_dialect_cxx());
        (*params)[0] = default_conversion ((*params)[0]);
        type = TREE_TYPE ((*params)[0]);
      }
--- 10521,10529 ----
      }
  
    type = TREE_TYPE ((*params)[0]);
!   if (TREE_CODE (type) == ARRAY_TYPE && c_dialect_cxx ())
      {
        /* Force array-to-pointer decay for C++.  */
        (*params)[0] = default_conversion ((*params)[0]);
        type = TREE_TYPE ((*params)[0]);
      }
*************** get_atomic_generic_size (location_t loc,
*** 10676,10685 ****
  
    /* Get type of first parameter, and determine its size.  */
    type_0 = TREE_TYPE ((*params)[0]);
!   if (TREE_CODE (type_0) == ARRAY_TYPE)
      {
        /* Force array-to-pointer decay for C++.  */
-       gcc_assert (c_dialect_cxx());
        (*params)[0] = default_conversion ((*params)[0]);
        type_0 = TREE_TYPE ((*params)[0]);
      }
--- 10678,10686 ----
  
    /* Get type of first parameter, and determine its size.  */
    type_0 = TREE_TYPE ((*params)[0]);
!   if (TREE_CODE (type_0) == ARRAY_TYPE && c_dialect_cxx ())
      {
        /* Force array-to-pointer decay for C++.  */
        (*params)[0] = default_conversion ((*params)[0]);
        type_0 = TREE_TYPE ((*params)[0]);
      }
*************** get_atomic_generic_size (location_t loc,
*** 10718,10723 ****
--- 10719,10730 ----
        /* __atomic_compare_exchange has a bool in the 4th position, skip it.  */
        if (n_param == 6 && x == 3)
          continue;
+       if (TREE_CODE (type) == ARRAY_TYPE && c_dialect_cxx ())
+ 	{
+ 	  /* Force array-to-pointer decay for C++.  */
+ 	  (*params)[x] = default_conversion ((*params)[x]);
+ 	  type = TREE_TYPE ((*params)[x]);
+ 	}
        if (!POINTER_TYPE_P (type))
  	{
  	  error_at (loc, "argument %d of %qE must be a pointer type", x + 1,
*************** set_underlying_type (tree x)
*** 11775,11781 ****
        tt = build_variant_type_copy (tt);
        TYPE_STUB_DECL (tt) = TYPE_STUB_DECL (DECL_ORIGINAL_TYPE (x));
        TYPE_NAME (tt) = x;
!       TREE_USED (tt) = TREE_USED (x);
        TREE_TYPE (x) = tt;
      }
  }
--- 11782,11793 ----
        tt = build_variant_type_copy (tt);
        TYPE_STUB_DECL (tt) = TYPE_STUB_DECL (DECL_ORIGINAL_TYPE (x));
        TYPE_NAME (tt) = x;
! 
!       /* Mark the type as used only when its type decl is decorated
! 	 with attribute unused.  */
!       if (lookup_attribute ("unused", DECL_ATTRIBUTES (x)))
! 	TREE_USED (tt) = 1;
! 
        TREE_TYPE (x) = tt;
      }
  }
diff -Nrcpad gcc-5.4.0/gcc/c-family/c-cppbuiltin.c gcc-5.5.0/gcc/c-family/c-cppbuiltin.c
*** gcc-5.4.0/gcc/c-family/c-cppbuiltin.c	Fri Feb 13 05:26:37 2015
--- gcc-5.5.0/gcc/c-family/c-cppbuiltin.c	Mon Sep 11 10:44:11 2017
*************** c_cpp_builtins (cpp_reader *pfile)
*** 856,861 ****
--- 856,862 ----
  	  cpp_define (pfile, "__cpp_decltype=200707");
  	  cpp_define (pfile, "__cpp_attributes=200809");
  	  cpp_define (pfile, "__cpp_rvalue_reference=200610");
+ 	  cpp_define (pfile, "__cpp_rvalue_references=200610");
  	  cpp_define (pfile, "__cpp_variadic_templates=200704");
  	  cpp_define (pfile, "__cpp_initializer_lists=200806");
  	  cpp_define (pfile, "__cpp_delegating_constructors=200604");
*************** c_cpp_builtins (cpp_reader *pfile)
*** 878,883 ****
--- 879,886 ----
  	}
        if (flag_sized_deallocation)
  	cpp_define (pfile, "__cpp_sized_deallocation=201309");
+       if (flag_threadsafe_statics)
+ 	cpp_define (pfile, "__cpp_threadsafe_static_init=200806");
      }
    /* Note that we define this for C as well, so that we know if
       __attribute__((cleanup)) will interface with EH.  */
diff -Nrcpad gcc-5.4.0/gcc/c-family/c-gimplify.c gcc-5.5.0/gcc/c-family/c-gimplify.c
*** gcc-5.4.0/gcc/c-family/c-gimplify.c	Fri Jan  9 20:18:42 2015
--- gcc-5.5.0/gcc/c-family/c-gimplify.c	Thu Jul  7 12:42:43 2016
*************** ubsan_walk_array_refs_r (tree *tp, int *
*** 96,118 ****
  {
    hash_set<tree> *pset = (hash_set<tree> *) data;
  
-   /* Since walk_tree doesn't call the callback function on the decls
-      in BIND_EXPR_VARS, we have to walk them manually.  */
    if (TREE_CODE (*tp) == BIND_EXPR)
      {
        for (tree decl = BIND_EXPR_VARS (*tp); decl; decl = DECL_CHAIN (decl))
  	{
  	  if (TREE_STATIC (decl))
! 	    {
! 	      *walk_subtrees = 0;
! 	      continue;
! 	    }
  	  walk_tree (&DECL_INITIAL (decl), ubsan_walk_array_refs_r, pset,
  		     pset);
  	  walk_tree (&DECL_SIZE (decl), ubsan_walk_array_refs_r, pset, pset);
  	  walk_tree (&DECL_SIZE_UNIT (decl), ubsan_walk_array_refs_r, pset,
  		     pset);
  	}
      }
    else if (TREE_CODE (*tp) == ADDR_EXPR
  	   && TREE_CODE (TREE_OPERAND (*tp, 0)) == ARRAY_REF)
--- 96,118 ----
  {
    hash_set<tree> *pset = (hash_set<tree> *) data;
  
    if (TREE_CODE (*tp) == BIND_EXPR)
      {
+       /* Since walk_tree doesn't call the callback function on the decls
+ 	 in BIND_EXPR_VARS, we have to walk them manually, so we can avoid
+ 	 instrumenting DECL_INITIAL of TREE_STATIC vars.  */
+       *walk_subtrees = 0;
        for (tree decl = BIND_EXPR_VARS (*tp); decl; decl = DECL_CHAIN (decl))
  	{
  	  if (TREE_STATIC (decl))
! 	    continue;
  	  walk_tree (&DECL_INITIAL (decl), ubsan_walk_array_refs_r, pset,
  		     pset);
  	  walk_tree (&DECL_SIZE (decl), ubsan_walk_array_refs_r, pset, pset);
  	  walk_tree (&DECL_SIZE_UNIT (decl), ubsan_walk_array_refs_r, pset,
  		     pset);
  	}
+       walk_tree (&BIND_EXPR_BODY (*tp), ubsan_walk_array_refs_r, pset, pset);
      }
    else if (TREE_CODE (*tp) == ADDR_EXPR
  	   && TREE_CODE (TREE_OPERAND (*tp, 0)) == ARRAY_REF)
diff -Nrcpad gcc-5.4.0/gcc/c-family/c-omp.c gcc-5.5.0/gcc/c-family/c-omp.c
*** gcc-5.4.0/gcc/c-family/c-omp.c	Fri Jul 10 14:12:20 2015
--- gcc-5.5.0/gcc/c-family/c-omp.c	Sat Sep 16 18:36:03 2017
*************** c_finish_omp_for (location_t locus, enum
*** 511,516 ****
--- 511,522 ----
  	{
  	  bool cond_ok = false;
  
+ 	  /* E.g. C sizeof (vla) could add COMPOUND_EXPRs with
+ 	     evaluation of the vla VAR_DECL.  We need to readd
+ 	     them to the non-decl operand.  See PR45784.  */
+ 	  while (TREE_CODE (cond) == COMPOUND_EXPR)
+ 	    cond = TREE_OPERAND (cond, 1);
+ 
  	  if (EXPR_HAS_LOCATION (cond))
  	    elocus = EXPR_LOCATION (cond);
  
*************** c_finish_omp_for (location_t locus, enum
*** 585,590 ****
--- 591,611 ----
  		  else if (code != CILK_SIMD && code != CILK_FOR)
  		    cond_ok = false;
  		}
+ 
+ 	      if (cond_ok && TREE_VEC_ELT (condv, i) != cond)
+ 		{
+ 		  tree ce = NULL_TREE, *pce = &ce;
+ 		  tree type = TREE_TYPE (TREE_OPERAND (cond, 1));
+ 		  for (tree c = TREE_VEC_ELT (condv, i); c != cond;
+ 		       c = TREE_OPERAND (c, 1))
+ 		    {
+ 		      *pce = build2 (COMPOUND_EXPR, type, TREE_OPERAND (c, 0),
+ 				     TREE_OPERAND (cond, 1));
+ 		      pce = &TREE_OPERAND (*pce, 1);
+ 		    }
+ 		  TREE_OPERAND (cond, 1) = ce;
+ 		  TREE_VEC_ELT (condv, i) = cond;
+ 		}
  	    }
  
  	  if (!cond_ok)
diff -Nrcpad gcc-5.4.0/gcc/c-family/c-opts.c gcc-5.5.0/gcc/c-family/c-opts.c
*** gcc-5.4.0/gcc/c-family/c-opts.c	Wed Jul  1 17:06:52 2015
--- gcc-5.5.0/gcc/c-family/c-opts.c	Tue Jan 10 14:07:41 2017
*************** c_common_post_options (const char **pfil
*** 749,755 ****
        in_fnames[0] = "";
      }
    else if (strcmp (in_fnames[0], "-") == 0)
!     in_fnames[0] = "";
  
    if (out_fname == NULL || !strcmp (out_fname, "-"))
      out_fname = "";
--- 749,760 ----
        in_fnames[0] = "";
      }
    else if (strcmp (in_fnames[0], "-") == 0)
!     {
!       if (pch_file)
! 	error ("cannot use %<-%> as input filename for a precompiled header");
! 
!       in_fnames[0] = "";
!     }
  
    if (out_fname == NULL || !strcmp (out_fname, "-"))
      out_fname = "";
diff -Nrcpad gcc-5.4.0/gcc/calls.c gcc-5.5.0/gcc/calls.c
*** gcc-5.4.0/gcc/calls.c	Mon Dec  7 09:11:06 2015
--- gcc-5.5.0/gcc/calls.c	Tue Feb 14 08:03:42 2017
*************** expand_call (tree exp, rtx target, int i
*** 2705,2712 ****
      n_named_args = num_actuals;
  
    /* Make a vector to hold all the information about each arg.  */
!   args = XALLOCAVEC (struct arg_data, num_actuals);
!   memset (args, 0, num_actuals * sizeof (struct arg_data));
  
    /* Build up entries in the ARGS array, compute the size of the
       arguments into ARGS_SIZE, etc.  */
--- 2705,2711 ----
      n_named_args = num_actuals;
  
    /* Make a vector to hold all the information about each arg.  */
!   args = XCNEWVEC (struct arg_data, num_actuals);
  
    /* Build up entries in the ARGS array, compute the size of the
       arguments into ARGS_SIZE, etc.  */
*************** expand_call (tree exp, rtx target, int i
*** 3719,3724 ****
--- 3718,3724 ----
    currently_expanding_call--;
  
    free (stack_usage_map_buf);
+   free (args);
  
    /* Join result with returned bounds so caller may use them if needed.  */
    target = chkp_join_splitted_slot (target, valbnd);
diff -Nrcpad gcc-5.4.0/gcc/cgraph.c gcc-5.5.0/gcc/cgraph.c
*** gcc-5.4.0/gcc/cgraph.c	Mon Mar 21 16:05:37 2016
--- gcc-5.5.0/gcc/cgraph.c	Tue May 30 07:26:00 2017
*************** cgraph_edge::redirect_call_stmt_to_calle
*** 1437,1444 ****
        if (skip_bounds)
  	new_stmt = chkp_copy_call_skip_bounds (new_stmt);
  
        gimple_call_set_fndecl (new_stmt, e->callee->decl);
!       gimple_call_set_fntype (new_stmt, gimple_call_fntype (e->call_stmt));
  
        if (gimple_vdef (new_stmt)
  	  && TREE_CODE (gimple_vdef (new_stmt)) == SSA_NAME)
--- 1437,1459 ----
        if (skip_bounds)
  	new_stmt = chkp_copy_call_skip_bounds (new_stmt);
  
+       tree old_fntype = gimple_call_fntype (e->call_stmt);
        gimple_call_set_fndecl (new_stmt, e->callee->decl);
!       cgraph_node *origin = e->callee;
!       while (origin->clone_of)
! 	origin = origin->clone_of;
! 
!       if ((origin->former_clone_of
! 	   && old_fntype == TREE_TYPE (origin->former_clone_of))
! 	  || old_fntype == TREE_TYPE (origin->decl))
! 	gimple_call_set_fntype (new_stmt, TREE_TYPE (e->callee->decl));
!       else
! 	{
! 	  bitmap skip = e->callee->clone.combined_args_to_skip;
! 	  tree t = cgraph_build_function_type_skip_args (old_fntype, skip,
! 							 false);
! 	  gimple_call_set_fntype (new_stmt, t);
! 	}
  
        if (gimple_vdef (new_stmt)
  	  && TREE_CODE (gimple_vdef (new_stmt)) == SSA_NAME)
*************** cgraph_node::rtl_info (tree decl)
*** 1899,1909 ****
    cgraph_node *node = get (decl);
    if (!node)
      return NULL;
!   node = node->ultimate_alias_target ();
!   if (node->decl != current_function_decl
!       && !TREE_ASM_WRITTEN (node->decl))
      return NULL;
!   return &node->ultimate_alias_target ()->rtl;
  }
  
  /* Return a string describing the failure REASON.  */
--- 1914,1927 ----
    cgraph_node *node = get (decl);
    if (!node)
      return NULL;
!   enum availability avail;
!   node = node->ultimate_alias_target (&avail);
!   if (decl != current_function_decl
!       && (avail < AVAIL_AVAILABLE
! 	  || (node->decl != current_function_decl
! 	      && !TREE_ASM_WRITTEN (node->decl))))
      return NULL;
!   return &node->rtl;
  }
  
  /* Return a string describing the failure REASON.  */
*************** cgraph_node::dump (FILE *f)
*** 2012,2017 ****
--- 2030,2037 ----
      fprintf (f, " only_called_at_exit");
    if (tm_clone)
      fprintf (f, " tm_clone");
+   if (calls_comdat_local)
+     fprintf (f, " calls_comdat_local");
    if (icf_merged)
      fprintf (f, " icf_merged");
    if (nonfreeing_fn)
diff -Nrcpad gcc-5.4.0/gcc/cgraph.h gcc-5.5.0/gcc/cgraph.h
*** gcc-5.4.0/gcc/cgraph.h	Fri Jan  8 12:30:56 2016
--- gcc-5.5.0/gcc/cgraph.h	Tue Apr 11 13:31:16 2017
*************** tree clone_function_name (tree decl, con
*** 2238,2243 ****
--- 2238,2245 ----
  
  void tree_function_versioning (tree, tree, vec<ipa_replace_map *, va_gc> *,
  			       bool, bitmap, bool, bitmap, basic_block);
+ tree cgraph_build_function_type_skip_args (tree orig_type, bitmap args_to_skip,
+ 					   bool skip_return);
  
  /* In cgraphbuild.c  */
  int compute_call_stmt_bb_frequency (tree, basic_block bb);
diff -Nrcpad gcc-5.4.0/gcc/cgraphclones.c gcc-5.5.0/gcc/cgraphclones.c
*** gcc-5.4.0/gcc/cgraphclones.c	Mon Jan 11 12:44:53 2016
--- gcc-5.5.0/gcc/cgraphclones.c	Tue Apr 11 13:31:16 2017
*************** cgraph_edge::clone (cgraph_node *n, gcal
*** 191,199 ****
  /* Build variant of function type ORIG_TYPE skipping ARGS_TO_SKIP and the
     return value if SKIP_RETURN is true.  */
  
! static tree
! build_function_type_skip_args (tree orig_type, bitmap args_to_skip,
! 			       bool skip_return)
  {
    tree new_type = NULL;
    tree args, new_args = NULL;
--- 191,199 ----
  /* Build variant of function type ORIG_TYPE skipping ARGS_TO_SKIP and the
     return value if SKIP_RETURN is true.  */
  
! tree
! cgraph_build_function_type_skip_args (tree orig_type, bitmap args_to_skip,
! 				      bool skip_return)
  {
    tree new_type = NULL;
    tree args, new_args = NULL;
*************** build_function_decl_skip_args (tree orig
*** 258,264 ****
    if (prototype_p (new_type)
        || (skip_return && !VOID_TYPE_P (TREE_TYPE (new_type))))
      new_type
!       = build_function_type_skip_args (new_type, args_to_skip, skip_return);
    TREE_TYPE (new_decl) = new_type;
  
    /* For declarations setting DECL_VINDEX (i.e. methods)
--- 258,265 ----
    if (prototype_p (new_type)
        || (skip_return && !VOID_TYPE_P (TREE_TYPE (new_type))))
      new_type
!       = cgraph_build_function_type_skip_args (new_type, args_to_skip,
! 					      skip_return);
    TREE_TYPE (new_decl) = new_type;
  
    /* For declarations setting DECL_VINDEX (i.e. methods)
diff -Nrcpad gcc-5.4.0/gcc/cgraphunit.c gcc-5.5.0/gcc/cgraphunit.c
*** gcc-5.4.0/gcc/cgraphunit.c	Wed Dec 16 11:12:06 2015
--- gcc-5.5.0/gcc/cgraphunit.c	Mon May 29 09:08:14 2017
*************** cgraph_node::expand_thunk (bool output_a
*** 1673,1678 ****
--- 1673,1682 ----
  	for (; i < nargs; i++, arg = DECL_CHAIN (arg))
  	  {
  	    tree tmp = arg;
+ 	    if (VECTOR_TYPE_P (TREE_TYPE (arg))
+ 		|| TREE_CODE (TREE_TYPE (arg)) == COMPLEX_TYPE)
+ 	      DECL_GIMPLE_REG_P (arg) = 1;
+ 
  	    if (!is_gimple_val (arg))
  	      {
  		tmp = create_tmp_reg (TYPE_MAIN_VARIANT
diff -Nrcpad gcc-5.4.0/gcc/combine.c gcc-5.5.0/gcc/combine.c
*** gcc-5.4.0/gcc/combine.c	Wed Mar 30 12:45:39 2016
--- gcc-5.5.0/gcc/combine.c	Tue May 30 07:40:21 2017
*************** make_extraction (machine_mode mode, rtx
*** 7342,7347 ****
--- 7342,7348 ----
    if (tmode != BLKmode
        && ((pos_rtx == 0 && (pos % BITS_PER_WORD) == 0
  	   && !MEM_P (inner)
+ 	   && (pos == 0 || REG_P (inner))
  	   && (inner_mode == tmode
  	       || !REG_P (inner)
  	       || TRULY_NOOP_TRUNCATION_MODES_P (tmode, inner_mode)
*************** make_extraction (machine_mode mode, rtx
*** 7418,7427 ****
  	}
        else
  	new_rtx = force_to_mode (inner, tmode,
! 			     len >= HOST_BITS_PER_WIDE_INT
! 			     ? ~(unsigned HOST_WIDE_INT) 0
! 			     : ((unsigned HOST_WIDE_INT) 1 << len) - 1,
! 			     0);
  
        /* If this extraction is going into the destination of a SET,
  	 make a STRICT_LOW_PART unless we made a MEM.  */
--- 7419,7427 ----
  	}
        else
  	new_rtx = force_to_mode (inner, tmode,
! 				 len >= HOST_BITS_PER_WIDE_INT
! 				 ? ~(unsigned HOST_WIDE_INT) 0
! 				 : ((unsigned HOST_WIDE_INT) 1 << len) - 1, 0);
  
        /* If this extraction is going into the destination of a SET,
  	 make a STRICT_LOW_PART unless we made a MEM.  */
*************** extract_left_shift (rtx x, int count)
*** 7726,7735 ****
  
     We try, as much as possible, to re-use rtl expressions to save memory.
  
!    IN_CODE says what kind of expression we are processing.  Normally, it is
!    SET.  In a memory address (inside a MEM, PLUS or minus, the latter two
!    being kludges), it is MEM.  When processing the arguments of a comparison
!    or a COMPARE against zero, it is COMPARE.  */
  
  rtx
  make_compound_operation (rtx x, enum rtx_code in_code)
--- 7726,7737 ----
  
     We try, as much as possible, to re-use rtl expressions to save memory.
  
!    IN_CODE says what kind of expression we are processing.  Normally,
!    it is SET.  In a memory address (inside a MEM, PLUS or minus, the
!    latter two being kludges), it is MEM.  When processing the
!    arguments of a comparison or a COMPARE against zero, it is COMPARE,
!    or EQ if more + precisely it is an equality comparison against
!    zero..  */
  
  rtx
  make_compound_operation (rtx x, enum rtx_code in_code)
*************** make_compound_operation (rtx x, enum rtx
*** 7743,7753 ****
--- 7745,7761 ----
    rtx new_rtx = 0;
    rtx tem;
    const char *fmt;
+   bool equality_comparison = false;
  
    /* Select the code to be used in recursive calls.  Once we are inside an
       address, we stay there.  If we have a comparison, set to COMPARE,
       but once inside, go back to our default of SET.  */
  
+   if (in_code == EQ)
+     {
+       equality_comparison = true;
+       in_code = COMPARE;
+     }
    next_code = (code == MEM ? MEM
  	       : ((code == PLUS || code == MINUS)
  		  && SCALAR_INT_MODE_P (mode)) ? MEM
*************** make_compound_operation (rtx x, enum rtx
*** 7935,7945 ****
        /* If we are in a comparison and this is an AND with a power of two,
  	 convert this into the appropriate bit extract.  */
        else if (in_code == COMPARE
! 	       && (i = exact_log2 (UINTVAL (XEXP (x, 1)))) >= 0)
  	new_rtx = make_extraction (mode,
! 			       make_compound_operation (XEXP (x, 0),
! 							next_code),
! 			       i, NULL_RTX, 1, 1, 0, 1);
  
        break;
  
--- 7943,7954 ----
        /* If we are in a comparison and this is an AND with a power of two,
  	 convert this into the appropriate bit extract.  */
        else if (in_code == COMPARE
! 	       && (i = exact_log2 (UINTVAL (XEXP (x, 1)))) >= 0
! 	       && (equality_comparison || i < GET_MODE_PRECISION (mode) - 1))
  	new_rtx = make_extraction (mode,
! 				   make_compound_operation (XEXP (x, 0),
! 							    next_code),
! 				   i, NULL_RTX, 1, 1, 0, 1);
  
        break;
  
*************** simplify_comparison (enum rtx_code code,
*** 12253,12259 ****
       We can never remove a SUBREG for a non-equality comparison because
       the sign bit is in a different place in the underlying object.  */
  
!   op0 = make_compound_operation (op0, op1 == const0_rtx ? COMPARE : SET);
    op1 = make_compound_operation (op1, SET);
  
    if (GET_CODE (op0) == SUBREG && subreg_lowpart_p (op0)
--- 12262,12272 ----
       We can never remove a SUBREG for a non-equality comparison because
       the sign bit is in a different place in the underlying object.  */
  
!   rtx_code op0_mco_code = SET;
!   if (op1 == const0_rtx)
!     op0_mco_code = code == NE || code == EQ ? EQ : COMPARE;
! 
!   op0 = make_compound_operation (op0, op0_mco_code);
    op1 = make_compound_operation (op1, SET);
  
    if (GET_CODE (op0) == SUBREG && subreg_lowpart_p (op0)
*************** get_last_value (const_rtx x)
*** 13041,13046 ****
--- 13054,13065 ----
        && DF_INSN_LUID (rsp->last_set) >= subst_low_luid)
      return 0;
  
+   /* If fewer bits were set than what we are asked for now, we cannot use
+      the value.  */
+   if (GET_MODE_PRECISION (rsp->last_set_mode)
+       < GET_MODE_PRECISION (GET_MODE (x)))
+     return 0;
+ 
    /* If the value has all its registers valid, return it.  */
    if (get_last_value_validate (&value, rsp->last_set, rsp->last_set_label, 0))
      return value;
diff -Nrcpad gcc-5.4.0/gcc/common/config/i386/i386-common.c gcc-5.5.0/gcc/common/config/i386/i386-common.c
*** gcc-5.4.0/gcc/common/config/i386/i386-common.c	Thu Jun 18 10:56:43 2015
--- gcc-5.5.0/gcc/common/config/i386/i386-common.c	Thu Oct 13 21:19:00 2016
*************** along with GCC; see the file COPYING3.
*** 86,92 ****
  #define OPTION_MASK_ISA_XSAVEC_SET \
    (OPTION_MASK_ISA_XSAVEC | OPTION_MASK_ISA_XSAVE)
  #define OPTION_MASK_ISA_CLWB_SET OPTION_MASK_ISA_CLWB
- #define OPTION_MASK_ISA_PCOMMIT_SET OPTION_MASK_ISA_PCOMMIT
  
  /* SSE4 includes both SSE4.1 and SSE4.2. -msse4 should be the same
     as -msse4.2.  */
--- 86,91 ----
*************** along with GCC; see the file COPYING3.
*** 185,191 ****
  #define OPTION_MASK_ISA_CLFLUSHOPT_UNSET OPTION_MASK_ISA_CLFLUSHOPT
  #define OPTION_MASK_ISA_XSAVEC_UNSET OPTION_MASK_ISA_XSAVEC
  #define OPTION_MASK_ISA_XSAVES_UNSET OPTION_MASK_ISA_XSAVES
- #define OPTION_MASK_ISA_PCOMMIT_UNSET OPTION_MASK_ISA_PCOMMIT
  #define OPTION_MASK_ISA_CLWB_UNSET OPTION_MASK_ISA_CLWB
  #define OPTION_MASK_ISA_MWAITX_UNSET OPTION_MASK_ISA_MWAITX
  
--- 184,189 ----
*************** ix86_handle_option (struct gcc_options *
*** 908,926 ****
  	}
        return true;
  
-     case OPT_mpcommit:
-       if (value)
- 	{
- 	  opts->x_ix86_isa_flags |= OPTION_MASK_ISA_PCOMMIT_SET;
- 	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_PCOMMIT_SET;
- 	}
-       else
- 	{
- 	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_PCOMMIT_UNSET;
- 	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_PCOMMIT_UNSET;
- 	}
-       return true;
- 
      case OPT_mclwb:
        if (value)
  	{
--- 906,911 ----
diff -Nrcpad gcc-5.4.0/gcc/common.opt gcc-5.5.0/gcc/common.opt
*** gcc-5.4.0/gcc/common.opt	Mon Jan 11 09:11:11 2016
--- gcc-5.5.0/gcc/common.opt	Thu Jun 22 11:28:22 2017
*************** flow and turn the statement with erroneo
*** 2273,2279 ****
  
  fisolate-erroneous-paths-attribute
  Common Report Var(flag_isolate_erroneous_paths_attribute) Optimization
! Detect paths that trigger erroneous or undefined behavior due 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. 
--- 2273,2279 ----
  
  fisolate-erroneous-paths-attribute
  Common Report Var(flag_isolate_erroneous_paths_attribute) Optimization
! 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. 
diff -Nrcpad gcc-5.4.0/gcc/config/aarch64/aarch64-freebsd.h gcc-5.5.0/gcc/config/aarch64/aarch64-freebsd.h
*** gcc-5.4.0/gcc/config/aarch64/aarch64-freebsd.h	Thu Jan  1 00:00:00 1970
--- gcc-5.5.0/gcc/config/aarch64/aarch64-freebsd.h	Sat Apr  8 19:18:15 2017
***************
*** 0 ****
--- 1,102 ----
+ /* Definitions for AArch64 running FreeBSD
+    Copyright (C) 2016-2017 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_FREEBSD_H
+ #define GCC_AARCH64_FREEBSD_H
+ 
+ #undef  SUBTARGET_CPP_SPEC
+ #define SUBTARGET_CPP_SPEC FBSD_CPP_SPEC
+ 
+ #if TARGET_BIG_ENDIAN_DEFAULT
+ #define TARGET_LINKER_EMULATION  "aarch64fbsdb"
+ #else
+ #define TARGET_LINKER_EMULATION  "aarch64fbsd"
+ #endif
+ 
+ #undef  SUBTARGET_EXTRA_LINK_SPEC
+ #define SUBTARGET_EXTRA_LINK_SPEC " -m" TARGET_LINKER_EMULATION
+ 
+ #undef  FBSD_TARGET_LINK_SPEC
+ #define FBSD_TARGET_LINK_SPEC "                                 \
+     %{p:%nconsider using `-pg' instead of `-p' with gprof (1) } \
+     %{v:-V}                                                     \
+     %{assert*} %{R*} %{rpath*} %{defsym*}                       \
+     %{shared:-Bshareable %{h*} %{soname*}}                      \
+     %{symbolic:-Bsymbolic}                                      \
+     %{static:-Bstatic}                                          \
+     %{!static:                                                  \
+       %{rdynamic:-export-dynamic}                               \
+       %{!shared:-dynamic-linker " FBSD_DYNAMIC_LINKER " }}      \
+     -X" SUBTARGET_EXTRA_LINK_SPEC "                             \
+     %{mbig-endian:-EB} %{mlittle-endian:-EL}"
+ 
+ #if TARGET_FIX_ERR_A53_835769_DEFAULT
+ #define CA53_ERR_835769_SPEC \
+   " %{!mno-fix-cortex-a53-835769:--fix-cortex-a53-835769}"
+ #else
+ #define CA53_ERR_835769_SPEC \
+   " %{mfix-cortex-a53-835769:--fix-cortex-a53-835769}"
+ #endif
+ 
+ #ifdef TARGET_FIX_ERR_A53_843419_DEFAULT
+ #define CA53_ERR_843419_SPEC \
+   " %{!mno-fix-cortex-a53-843419:--fix-cortex-a53-843419}"
+ #else
+ #define CA53_ERR_843419_SPEC \
+   " %{mfix-cortex-a53-843419:--fix-cortex-a53-843419}"
+ #endif
+ 
+ #undef  LINK_SPEC
+ #define LINK_SPEC FBSD_TARGET_LINK_SPEC	\
+                   CA53_ERR_835769_SPEC	\
+                   CA53_ERR_843419_SPEC
+ 
+ #define GNU_USER_TARGET_MATHFILE_SPEC \
+   "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
+ 
+ #undef ENDFILE_SPEC
+ #define ENDFILE_SPEC \
+     GNU_USER_TARGET_MATHFILE_SPEC " " \
+     FBSD_ENDFILE_SPEC
+ 
+ #undef  TARGET_OS_CPP_BUILTINS
+ #define TARGET_OS_CPP_BUILTINS()              \
+   do                                          \
+   {                                           \
+       FBSD_TARGET_OS_CPP_BUILTINS ();         \
+   }                                           \
+   while (false)
+ 
+ #define TARGET_ASM_FILE_END file_end_indicate_exec_stack
+ 
+ /* Uninitialized common symbols in non-PIE executables, even with
+    strong definitions in dependent shared libraries, will resolve
+    to COPY relocated symbol in the executable.  See PR65780.  */
+ #undef TARGET_BINDS_LOCAL_P
+ #define TARGET_BINDS_LOCAL_P default_binds_local_p_2
+ 
+ /* Use the AAPCS type for wchar_t, override the one from
+    config/freebsd.h.  */
+ #undef  WCHAR_TYPE
+ #define WCHAR_TYPE  "unsigned int"
+ 
+ #undef MCOUNT_NAME
+ #define MCOUNT_NAME ".mcount"
+ 
+ #endif  /* GCC_AARCH64_FREEBSD_H */
diff -Nrcpad gcc-5.4.0/gcc/config/aarch64/aarch64-simd.md gcc-5.5.0/gcc/config/aarch64/aarch64-simd.md
*** gcc-5.4.0/gcc/config/aarch64/aarch64-simd.md	Tue May 31 11:23:59 2016
--- gcc-5.5.0/gcc/config/aarch64/aarch64-simd.md	Tue Mar 21 09:47:07 2017
***************
*** 106,112 ****
       case 1: return "str\\t%d1, %0";
       case 2: return "orr\t%0.<Vbtype>, %1.<Vbtype>, %1.<Vbtype>";
       case 3: return "umov\t%0, %1.d[0]";
!      case 4: return "ins\t%0.d[0], %1";
       case 5: return "mov\t%0, %1";
       case 6:
  	return aarch64_output_simd_mov_immediate (operands[1],
--- 106,112 ----
       case 1: return "str\\t%d1, %0";
       case 2: return "orr\t%0.<Vbtype>, %1.<Vbtype>, %1.<Vbtype>";
       case 3: return "umov\t%0, %1.d[0]";
!      case 4: return "fmov\t%d0, %1";
       case 5: return "mov\t%0, %1";
       case 6:
  	return aarch64_output_simd_mov_immediate (operands[1],
***************
*** 115,122 ****
       }
  }
    [(set_attr "type" "neon_load1_1reg<q>, neon_store1_1reg<q>,\
!                      neon_logic<q>, neon_to_gp<q>, neon_from_gp<q>,\
!                      mov_reg, neon_move<q>")]
  )
  
  (define_insn "*aarch64_simd_mov<mode>"
--- 115,122 ----
       }
  }
    [(set_attr "type" "neon_load1_1reg<q>, neon_store1_1reg<q>,\
! 		     neon_logic<q>, neon_to_gp<q>, f_mcr,\
! 		     mov_reg, neon_move<q>")]
  )
  
  (define_insn "*aarch64_simd_mov<mode>"
diff -Nrcpad gcc-5.4.0/gcc/config/aarch64/aarch64.c gcc-5.5.0/gcc/config/aarch64/aarch64.c
*** gcc-5.4.0/gcc/config/aarch64/aarch64.c	Thu Apr 14 13:45:34 2016
--- gcc-5.5.0/gcc/config/aarch64/aarch64.c	Tue May 30 07:48:57 2017
*************** aarch64_classify_symbol (rtx x, rtx offs
*** 7069,7077 ****
  
    if (GET_CODE (x) == SYMBOL_REF)
      {
-       if (aarch64_cmodel == AARCH64_CMODEL_LARGE)
- 	  return SYMBOL_FORCE_TO_MEM;
- 
        if (aarch64_tls_symbol_p (x))
  	return aarch64_classify_tls_symbol (x);
  
--- 7069,7074 ----
*************** aarch64_classify_symbol (rtx x, rtx offs
*** 7110,7115 ****
--- 7107,7115 ----
  	    return SYMBOL_SMALL_GOT;
  	  return SYMBOL_SMALL_ABSOLUTE;
  
+ 	case AARCH64_CMODEL_LARGE:
+ 	  return SYMBOL_FORCE_TO_MEM;
+ 
  	default:
  	  gcc_unreachable ();
  	}
diff -Nrcpad gcc-5.4.0/gcc/config/aarch64/aarch64.md gcc-5.5.0/gcc/config/aarch64/aarch64.md
*** gcc-5.4.0/gcc/config/aarch64/aarch64.md	Mon Feb  1 07:06:53 2016
--- gcc-5.5.0/gcc/config/aarch64/aarch64.md	Fri Aug 26 09:37:20 2016
***************
*** 687,692 ****
--- 687,699 ----
         && (GET_CODE (XEXP (operands[0], 0)) != SYMBOL_REF))
       XEXP (operands[0], 0) = force_reg (Pmode, XEXP (operands[0], 0));
  
+     /* This is a band-aid.  An SImode symbol reference is sometimes generated
+        by expand_expr_addr_expr.  See PR 64971.  */
+     if (TARGET_ILP32
+ 	&& GET_CODE (XEXP (operands[0], 0)) == SYMBOL_REF
+ 	&& GET_MODE (XEXP (operands[0], 0)) == SImode)
+       XEXP (operands[0], 0) = convert_memory_address (Pmode,
+ 						      XEXP (operands[0], 0));
      if (operands[2] == NULL_RTX)
        operands[2] = const0_rtx;
  
***************
*** 717,722 ****
--- 724,737 ----
         && (GET_CODE (XEXP (operands[1], 0)) != SYMBOL_REF))
       XEXP (operands[1], 0) = force_reg (Pmode, XEXP (operands[1], 0));
  
+     /* This is a band-aid.  An SImode symbol reference is sometimes generated
+        by expand_expr_addr_expr.  See PR 64971.  */
+     if (TARGET_ILP32
+ 	&& GET_CODE (XEXP (operands[1], 0)) == SYMBOL_REF
+ 	&& GET_MODE (XEXP (operands[1], 0)) == SImode)
+       XEXP (operands[1], 0) = convert_memory_address (Pmode,
+ 						      XEXP (operands[1], 0));
+ 
      if (operands[3] == NULL_RTX)
        operands[3] = const0_rtx;
  
diff -Nrcpad gcc-5.4.0/gcc/config/aarch64/t-aarch64-freebsd gcc-5.5.0/gcc/config/aarch64/t-aarch64-freebsd
*** gcc-5.4.0/gcc/config/aarch64/t-aarch64-freebsd	Thu Jan  1 00:00:00 1970
--- gcc-5.5.0/gcc/config/aarch64/t-aarch64-freebsd	Mon Jan  9 21:06:20 2017
***************
*** 0 ****
--- 1,21 ----
+ # Machine description for AArch64 architecture.
+ #  Copyright (C) 2016-2017 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/>.
+ 
+ LIB1ASMSRC   = aarch64/lib1funcs.asm
+ LIB1ASMFUNCS = _aarch64_sync_cache_range
diff -Nrcpad gcc-5.4.0/gcc/config/arm/arm-builtins.c gcc-5.5.0/gcc/config/arm/arm-builtins.c
*** gcc-5.4.0/gcc/config/arm/arm-builtins.c	Wed Feb 10 18:40:54 2016
--- gcc-5.5.0/gcc/config/arm/arm-builtins.c	Fri Jun 23 16:15:56 2017
*************** arm_init_builtins (void)
*** 1747,1756 ****
  	= build_function_type_list (unsigned_type_node, NULL);
  
        arm_builtin_decls[ARM_BUILTIN_GET_FPSCR]
! 	= add_builtin_function ("__builtin_arm_ldfscr", ftype_get_fpscr,
  				ARM_BUILTIN_GET_FPSCR, BUILT_IN_MD, NULL, NULL_TREE);
        arm_builtin_decls[ARM_BUILTIN_SET_FPSCR]
! 	= add_builtin_function ("__builtin_arm_stfscr", ftype_set_fpscr,
  				ARM_BUILTIN_SET_FPSCR, BUILT_IN_MD, NULL, NULL_TREE);
      }
  }
--- 1747,1756 ----
  	= build_function_type_list (unsigned_type_node, NULL);
  
        arm_builtin_decls[ARM_BUILTIN_GET_FPSCR]
! 	= add_builtin_function ("__builtin_arm_get_fpscr", ftype_get_fpscr,
  				ARM_BUILTIN_GET_FPSCR, BUILT_IN_MD, NULL, NULL_TREE);
        arm_builtin_decls[ARM_BUILTIN_SET_FPSCR]
! 	= add_builtin_function ("__builtin_arm_set_fpscr", ftype_set_fpscr,
  				ARM_BUILTIN_SET_FPSCR, BUILT_IN_MD, NULL, NULL_TREE);
      }
  }
diff -Nrcpad gcc-5.4.0/gcc/config/arm/arm-protos.h gcc-5.5.0/gcc/config/arm/arm-protos.h
*** gcc-5.4.0/gcc/config/arm/arm-protos.h	Wed Aug 26 13:49:00 2015
--- gcc-5.5.0/gcc/config/arm/arm-protos.h	Tue Apr 11 15:26:20 2017
*************** extern bool arm_is_constant_pool_ref (rt
*** 343,349 ****
  #define FL_STRONG     (1 << 8)	      /* StrongARM */
  #define FL_ARCH5E     (1 << 9)        /* DSP extensions to v5 */
  #define FL_XSCALE     (1 << 10)	      /* XScale */
! /* spare	      (1 << 11)	*/
  #define FL_ARCH6      (1 << 12)       /* Architecture rel 6.  Adds
  					 media instructions.  */
  #define FL_VFPV2      (1 << 13)       /* Vector Floating Point V2.  */
--- 343,349 ----
  #define FL_STRONG     (1 << 8)	      /* StrongARM */
  #define FL_ARCH5E     (1 << 9)        /* DSP extensions to v5 */
  #define FL_XSCALE     (1 << 10)	      /* XScale */
! #define FL_LPAE       (1 << 11)       /* ARMv7-A LPAE.  */
  #define FL_ARCH6      (1 << 12)       /* Architecture rel 6.  Adds
  					 media instructions.  */
  #define FL_VFPV2      (1 << 13)       /* Vector Floating Point V2.  */
*************** extern bool arm_is_constant_pool_ref (rt
*** 392,398 ****
  #define FL_FOR_ARCH6M	(FL_FOR_ARCH6 & ~FL_NOTM)
  #define FL_FOR_ARCH7	((FL_FOR_ARCH6T2 & ~FL_NOTM) | FL_ARCH7)
  #define FL_FOR_ARCH7A	(FL_FOR_ARCH7 | FL_NOTM | FL_ARCH6K)
! #define FL_FOR_ARCH7VE	(FL_FOR_ARCH7A | FL_THUMB_DIV | FL_ARM_DIV)
  #define FL_FOR_ARCH7R	(FL_FOR_ARCH7A | FL_THUMB_DIV)
  #define FL_FOR_ARCH7M	(FL_FOR_ARCH7 | FL_THUMB_DIV)
  #define FL_FOR_ARCH7EM  (FL_FOR_ARCH7M | FL_ARCH7EM)
--- 392,398 ----
  #define FL_FOR_ARCH6M	(FL_FOR_ARCH6 & ~FL_NOTM)
  #define FL_FOR_ARCH7	((FL_FOR_ARCH6T2 & ~FL_NOTM) | FL_ARCH7)
  #define FL_FOR_ARCH7A	(FL_FOR_ARCH7 | FL_NOTM | FL_ARCH6K)
! #define FL_FOR_ARCH7VE	(FL_FOR_ARCH7A | FL_THUMB_DIV | FL_ARM_DIV | FL_LPAE)
  #define FL_FOR_ARCH7R	(FL_FOR_ARCH7A | FL_THUMB_DIV)
  #define FL_FOR_ARCH7M	(FL_FOR_ARCH7 | FL_THUMB_DIV)
  #define FL_FOR_ARCH7EM  (FL_FOR_ARCH7M | FL_ARCH7EM)
*************** extern int arm_arch_thumb2;
*** 487,492 ****
--- 487,495 ----
  extern int arm_arch_arm_hwdiv;
  extern int arm_arch_thumb_hwdiv;
  
+ /* Nonzero if this chip supports the Large Physical Address Extension.  */
+ extern int arm_arch_lpae;
+ 
  /* Nonzero if chip disallows volatile memory access in IT block.  */
  extern int arm_arch_no_volatile_ce;
  
diff -Nrcpad gcc-5.4.0/gcc/config/arm/arm.c gcc-5.5.0/gcc/config/arm/arm.c
*** gcc-5.4.0/gcc/config/arm/arm.c	Fri May 20 20:50:45 2016
--- gcc-5.5.0/gcc/config/arm/arm.c	Fri Apr 21 09:23:59 2017
*************** int arm_arch_thumb2;
*** 866,871 ****
--- 866,874 ----
  int arm_arch_arm_hwdiv;
  int arm_arch_thumb_hwdiv;
  
+ /* Nonzero if this chip supports the Large Physical Address Extension.  */
+ int arm_arch_lpae;
+ 
  /* Nonzero if chip disallows volatile memory access in IT block.  */
  int arm_arch_no_volatile_ce;
  
*************** arm_option_override (void)
*** 2862,2867 ****
--- 2865,2871 ----
    arm_arch_iwmmxt2 = (insn_flags & FL_IWMMXT2) != 0;
    arm_arch_thumb_hwdiv = (insn_flags & FL_THUMB_DIV) != 0;
    arm_arch_arm_hwdiv = (insn_flags & FL_ARM_DIV) != 0;
+   arm_arch_lpae = (insn_flags & FL_LPAE) != 0;
    arm_arch_no_volatile_ce = (insn_flags & FL_NO_VOLATILE_CE) != 0;
    arm_tune_cortex_a9 = (arm_tune == cortexa9) != 0;
    arm_arch_crc = (insn_flags & FL_CRC32) != 0;
*************** arm_function_ok_for_sibcall (tree decl,
*** 6481,6487 ****
  
    /* The PIC register is live on entry to VxWorks PLT entries, so we
       must make the call before restoring the PIC register.  */
!   if (TARGET_VXWORKS_RTP && flag_pic && !targetm.binds_local_p (decl))
      return false;
  
    /* If we are interworking and the function is not declared static
--- 6485,6491 ----
  
    /* The PIC register is live on entry to VxWorks PLT entries, so we
       must make the call before restoring the PIC register.  */
!   if (TARGET_VXWORKS_RTP && flag_pic && decl && !targetm.binds_local_p (decl))
      return false;
  
    /* If we are interworking and the function is not declared static
*************** arm_function_ok_for_sibcall (tree decl,
*** 6503,6510 ****
  	 a VFP register but then need to transfer it to a core
  	 register.  */
        rtx a, b;
  
!       a = arm_function_value (TREE_TYPE (exp), decl, false);
        b = arm_function_value (TREE_TYPE (DECL_RESULT (cfun->decl)),
  			      cfun->decl, false);
        if (!rtx_equal_p (a, b))
--- 6507,6519 ----
  	 a VFP register but then need to transfer it to a core
  	 register.  */
        rtx a, b;
+       tree decl_or_type = decl;
  
!       /* If it is an indirect function pointer, get the function type.  */
!       if (!decl)
! 	decl_or_type = TREE_TYPE (TREE_TYPE (CALL_EXPR_FN (exp)));
! 
!       a = arm_function_value (TREE_TYPE (exp), decl_or_type, false);
        b = arm_function_value (TREE_TYPE (DECL_RESULT (cfun->decl)),
  			      cfun->decl, false);
        if (!rtx_equal_p (a, b))
*************** legitimize_pic_address (rtx orig, machin
*** 6631,6639 ****
  	 same segment as the GOT.  Unfortunately, the flexibility of linker
  	 scripts means that we can't be sure of that in general, so assume
  	 that GOTOFF is never valid on VxWorks.  */
        if ((GET_CODE (orig) == LABEL_REF
! 	   || (GET_CODE (orig) == SYMBOL_REF &&
! 	       SYMBOL_REF_LOCAL_P (orig)))
  	  && NEED_GOT_RELOC
  	  && arm_pic_data_is_text_relative)
  	insn = arm_pic_static_addr (orig, reg);
--- 6640,6652 ----
  	 same segment as the GOT.  Unfortunately, the flexibility of linker
  	 scripts means that we can't be sure of that in general, so assume
  	 that GOTOFF is never valid on VxWorks.  */
+       /* References to weak symbols cannot be resolved locally: they
+ 	 may be overridden by a non-weak definition at link time.  */
        if ((GET_CODE (orig) == LABEL_REF
! 	   || (GET_CODE (orig) == SYMBOL_REF
! 	       && SYMBOL_REF_LOCAL_P (orig)
! 	       && (SYMBOL_REF_DECL (orig)
! 		   ? !DECL_WEAK (SYMBOL_REF_DECL (orig)) : 1)))
  	  && NEED_GOT_RELOC
  	  && arm_pic_data_is_text_relative)
  	insn = arm_pic_static_addr (orig, reg);
*************** arm_assemble_integer (rtx x, unsigned in
*** 22438,22445 ****
  	{
  	  /* See legitimize_pic_address for an explanation of the
  	     TARGET_VXWORKS_RTP check.  */
  	  if (!arm_pic_data_is_text_relative
! 	      || (GET_CODE (x) == SYMBOL_REF && !SYMBOL_REF_LOCAL_P (x)))
  	    fputs ("(GOT)", asm_out_file);
  	  else
  	    fputs ("(GOTOFF)", asm_out_file);
--- 22451,22464 ----
  	{
  	  /* See legitimize_pic_address for an explanation of the
  	     TARGET_VXWORKS_RTP check.  */
+ 	  /* References to weak symbols cannot be resolved locally:
+ 	     they may be overridden by a non-weak definition at link
+ 	     time.  */
  	  if (!arm_pic_data_is_text_relative
! 	      || (GET_CODE (x) == SYMBOL_REF
! 		  && (!SYMBOL_REF_LOCAL_P (x)
! 		      || (SYMBOL_REF_DECL (x)
! 			  ? DECL_WEAK (SYMBOL_REF_DECL (x)) : 0))))
  	    fputs ("(GOT)", asm_out_file);
  	  else
  	    fputs ("(GOTOFF)", asm_out_file);
*************** thumb1_expand_prologue (void)
*** 24457,24462 ****
--- 24476,24482 ----
    unsigned long live_regs_mask;
    unsigned long l_mask;
    unsigned high_regs_pushed = 0;
+   bool lr_needs_saving;
  
    func_type = arm_current_func_type ();
  
*************** thumb1_expand_prologue (void)
*** 24479,24484 ****
--- 24499,24505 ----
  
    offsets = arm_get_frame_offsets ();
    live_regs_mask = offsets->saved_regs_mask;
+   lr_needs_saving = live_regs_mask & (1 << LR_REGNUM);
  
    /* Extract a mask of the ones we can give to the Thumb's push instruction.  */
    l_mask = live_regs_mask & 0x40ff;
*************** thumb1_expand_prologue (void)
*** 24545,24550 ****
--- 24566,24572 ----
  	{
  	  insn = thumb1_emit_multi_reg_push (l_mask, l_mask);
  	  RTX_FRAME_RELATED_P (insn) = 1;
+ 	  lr_needs_saving = false;
  
  	  offset = bit_count (l_mask) * UNITS_PER_WORD;
  	}
*************** thumb1_expand_prologue (void)
*** 24609,24620 ****
       be a push of LR and we can combine it with the push of the first high
       register.  */
    else if ((l_mask & 0xff) != 0
! 	   || (high_regs_pushed == 0 && l_mask))
      {
        unsigned long mask = l_mask;
        mask |= (1 << thumb1_extra_regs_pushed (offsets, true)) - 1;
        insn = thumb1_emit_multi_reg_push (mask, mask);
        RTX_FRAME_RELATED_P (insn) = 1;
      }
  
    if (high_regs_pushed)
--- 24631,24643 ----
       be a push of LR and we can combine it with the push of the first high
       register.  */
    else if ((l_mask & 0xff) != 0
! 	   || (high_regs_pushed == 0 && lr_needs_saving))
      {
        unsigned long mask = l_mask;
        mask |= (1 << thumb1_extra_regs_pushed (offsets, true)) - 1;
        insn = thumb1_emit_multi_reg_push (mask, mask);
        RTX_FRAME_RELATED_P (insn) = 1;
+       lr_needs_saving = false;
      }
  
    if (high_regs_pushed)
*************** thumb1_expand_prologue (void)
*** 24632,24638 ****
        /* Here we need to mask out registers used for passing arguments
  	 even if they can be pushed.  This is to avoid using them to stash the high
  	 registers.  Such kind of stash may clobber the use of arguments.  */
!       pushable_regs = l_mask & (~arg_regs_mask) & 0xff;
  
        if (pushable_regs == 0)
  	pushable_regs = 1 << thumb_find_work_register (live_regs_mask);
--- 24655,24663 ----
        /* Here we need to mask out registers used for passing arguments
  	 even if they can be pushed.  This is to avoid using them to stash the high
  	 registers.  Such kind of stash may clobber the use of arguments.  */
!       pushable_regs = l_mask & (~arg_regs_mask);
!       if (lr_needs_saving)
! 	pushable_regs &= ~(1 << LR_REGNUM);
  
        if (pushable_regs == 0)
  	pushable_regs = 1 << thumb_find_work_register (live_regs_mask);
*************** thumb1_expand_prologue (void)
*** 24640,24647 ****
        while (high_regs_pushed > 0)
  	{
  	  unsigned long real_regs_mask = 0;
  
! 	  for (regno = LAST_LO_REGNUM; regno >= 0; regno --)
  	    {
  	      if (pushable_regs & (1 << regno))
  		{
--- 24665,24673 ----
        while (high_regs_pushed > 0)
  	{
  	  unsigned long real_regs_mask = 0;
+ 	  unsigned long push_mask = 0;
  
! 	  for (regno = LR_REGNUM; regno >= 0; regno --)
  	    {
  	      if (pushable_regs & (1 << regno))
  		{
*************** thumb1_expand_prologue (void)
*** 24650,24655 ****
--- 24676,24682 ----
  
  		  high_regs_pushed --;
  		  real_regs_mask |= (1 << next_hi_reg);
+ 		  push_mask |= (1 << regno);
  
  		  if (high_regs_pushed)
  		    {
*************** thumb1_expand_prologue (void)
*** 24659,24681 ****
  			  break;
  		    }
  		  else
! 		    {
! 		      pushable_regs &= ~((1 << regno) - 1);
! 		      break;
! 		    }
  		}
  	    }
  
  	  /* If we had to find a work register and we have not yet
  	     saved the LR then add it to the list of regs to push.  */
! 	  if (l_mask == (1 << LR_REGNUM))
  	    {
! 	      pushable_regs |= l_mask;
! 	      real_regs_mask |= l_mask;
! 	      l_mask = 0;
  	    }
  
! 	  insn = thumb1_emit_multi_reg_push (pushable_regs, real_regs_mask);
  	  RTX_FRAME_RELATED_P (insn) = 1;
  	}
      }
--- 24686,24705 ----
  			  break;
  		    }
  		  else
! 		    break;
  		}
  	    }
  
  	  /* If we had to find a work register and we have not yet
  	     saved the LR then add it to the list of regs to push.  */
! 	  if (lr_needs_saving)
  	    {
! 	      push_mask |= 1 << LR_REGNUM;
! 	      real_regs_mask |= 1 << LR_REGNUM;
! 	      lr_needs_saving = false;
  	    }
  
! 	  insn = thumb1_emit_multi_reg_push (push_mask, real_regs_mask);
  	  RTX_FRAME_RELATED_P (insn) = 1;
  	}
      }
diff -Nrcpad gcc-5.4.0/gcc/config/arm/arm.h gcc-5.5.0/gcc/config/arm/arm.h
*** gcc-5.4.0/gcc/config/arm/arm.h	Tue Mar 29 13:28:34 2016
--- gcc-5.5.0/gcc/config/arm/arm.h	Tue Apr 11 15:26:20 2017
*************** extern void (*arm_lang_output_object_att
*** 370,377 ****
  #define TARGET_HAVE_LDREX	((arm_arch6 && TARGET_ARM) || arm_arch7)
  
  /* Nonzero if this chip supports LPAE.  */
! #define TARGET_HAVE_LPAE						\
!   (arm_arch7 && ((insn_flags & FL_FOR_ARCH7VE) == FL_FOR_ARCH7VE))
  
  /* Nonzero if this chip supports ldrex{bh} and strex{bh}.  */
  #define TARGET_HAVE_LDREXBH	((arm_arch6k && TARGET_ARM) || arm_arch7)
--- 370,376 ----
  #define TARGET_HAVE_LDREX	((arm_arch6 && TARGET_ARM) || arm_arch7)
  
  /* Nonzero if this chip supports LPAE.  */
! #define TARGET_HAVE_LPAE	(arm_arch_lpae)
  
  /* Nonzero if this chip supports ldrex{bh} and strex{bh}.  */
  #define TARGET_HAVE_LDREXBH	((arm_arch6k && TARGET_ARM) || arm_arch7)
diff -Nrcpad gcc-5.4.0/gcc/config/arm/arm.md gcc-5.5.0/gcc/config/arm/arm.md
*** gcc-5.4.0/gcc/config/arm/arm.md	Fri Jan  8 10:36:37 2016
--- gcc-5.5.0/gcc/config/arm/arm.md	Wed Dec  7 17:51:00 2016
***************
*** 567,575 ****
  ;;  (plus (reg rN) (reg sp)) into (reg rN).  In this case reload will
  ;; put the duplicated register first, and not try the commutative version.
  (define_insn_and_split "*arm_addsi3"
!   [(set (match_operand:SI          0 "s_register_operand" "=rk,l,l ,l ,r ,k ,r,r ,k ,r ,k,k,r ,k ,r")
!         (plus:SI (match_operand:SI 1 "s_register_operand" "%0 ,l,0 ,l ,rk,k ,r,rk,k ,rk,k,r,rk,k ,rk")
!                  (match_operand:SI 2 "reg_or_int_operand" "rk ,l,Py,Pd,rI,rI,k,Pj,Pj,L ,L,L,PJ,PJ,?n")))]
    "TARGET_32BIT"
    "@
     add%?\\t%0, %0, %2
--- 567,575 ----
  ;;  (plus (reg rN) (reg sp)) into (reg rN).  In this case reload will
  ;; put the duplicated register first, and not try the commutative version.
  (define_insn_and_split "*arm_addsi3"
!   [(set (match_operand:SI          0 "s_register_operand" "=rk,l,l ,l ,r ,k ,r,k ,r ,k ,r ,k,k,r ,k ,r")
! 	(plus:SI (match_operand:SI 1 "s_register_operand" "%0 ,l,0 ,l ,rk,k ,r,r ,rk,k ,rk,k,r,rk,k ,rk")
! 		 (match_operand:SI 2 "reg_or_int_operand" "rk ,l,Py,Pd,rI,rI,k,rI,Pj,Pj,L ,L,L,PJ,PJ,?n")))]
    "TARGET_32BIT"
    "@
     add%?\\t%0, %0, %2
***************
*** 579,584 ****
--- 579,585 ----
     add%?\\t%0, %1, %2
     add%?\\t%0, %1, %2
     add%?\\t%0, %2, %1
+    add%?\\t%0, %1, %2
     addw%?\\t%0, %1, %2
     addw%?\\t%0, %1, %2
     sub%?\\t%0, %1, #%n2
***************
*** 598,607 ****
  		      operands[1], 0);
    DONE;
    "
!   [(set_attr "length" "2,4,4,4,4,4,4,4,4,4,4,4,4,4,16")
     (set_attr "predicable" "yes")
!    (set_attr "predicable_short_it" "yes,yes,yes,yes,no,no,no,no,no,no,no,no,no,no,no")
!    (set_attr "arch" "t2,t2,t2,t2,*,*,*,t2,t2,*,*,a,t2,t2,*")
     (set (attr "type") (if_then_else (match_operand 2 "const_int_operand" "")
  		      (const_string "alu_imm")
  		      (const_string "alu_sreg")))
--- 599,608 ----
  		      operands[1], 0);
    DONE;
    "
!   [(set_attr "length" "2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,16")
     (set_attr "predicable" "yes")
!    (set_attr "predicable_short_it" "yes,yes,yes,yes,no,no,no,no,no,no,no,no,no,no,no,no")
!    (set_attr "arch" "t2,t2,t2,t2,*,*,*,a,t2,t2,*,*,a,t2,t2,*")
     (set (attr "type") (if_then_else (match_operand 2 "const_int_operand" "")
  		      (const_string "alu_imm")
  		      (const_string "alu_sreg")))
diff -Nrcpad gcc-5.4.0/gcc/config/arm/freebsd.h gcc-5.5.0/gcc/config/arm/freebsd.h
*** gcc-5.4.0/gcc/config/arm/freebsd.h	Fri Jan  9 14:06:02 2015
--- gcc-5.5.0/gcc/config/arm/freebsd.h	Wed Jun 15 19:19:08 2016
***************
*** 120,130 ****
--- 120,134 ----
  #define SUBTARGET_CPU_DEFAULT   TARGET_CPU_arm9
  #endif
  
+ /* FreeBSD 10 does not support unaligned access for armv6 and up.
+    Unaligned access support was added in FreeBSD 11.  */
+ #if FBSD_MAJOR < 11
  #define SUBTARGET_OVERRIDE_OPTIONS		\
  do {						\
      if (unaligned_access)			\
  	unaligned_access = 0;			\
  } while (0)
+ #endif
  
  #undef MAX_SYNC_LIBFUNC_SIZE
  #define MAX_SYNC_LIBFUNC_SIZE 4 /* UNITS_PER_WORD not defined yet.  */
diff -Nrcpad gcc-5.4.0/gcc/config/arm/neon.md gcc-5.5.0/gcc/config/arm/neon.md
*** gcc-5.4.0/gcc/config/arm/neon.md	Mon Jan  5 12:33:28 2015
--- gcc-5.5.0/gcc/config/arm/neon.md	Tue Jan 24 14:14:12 2017
***************
*** 1015,1026 ****
  )
  
  (define_insn_and_split "ashldi3_neon"
!   [(set (match_operand:DI 0 "s_register_operand"	    "= w, w,?&r,?r, ?w,w")
! 	(ashift:DI (match_operand:DI 1 "s_register_operand" " 0w, w, 0r, r, 0w,w")
! 		   (match_operand:SI 2 "general_operand"    "rUm, i,  r, i,rUm,i")))
!    (clobber (match_scratch:SI 3				    "= X, X,?&r, X,  X,X"))
!    (clobber (match_scratch:SI 4				    "= X, X,?&r, X,  X,X"))
!    (clobber (match_scratch:DI 5				    "=&w, X,  X, X, &w,X"))
     (clobber (reg:CC_C CC_REGNUM))]
    "TARGET_NEON"
    "#"
--- 1015,1026 ----
  )
  
  (define_insn_and_split "ashldi3_neon"
!   [(set (match_operand:DI 0 "s_register_operand"	    "= w, w,?&r,?r,?&r, ?w,w")
! 	(ashift:DI (match_operand:DI 1 "s_register_operand" " 0w, w, 0r, 0,  r, 0w,w")
! 		   (match_operand:SI 2 "general_operand"    "rUm, i,  r, i,  i,rUm,i")))
!    (clobber (match_scratch:SI 3				    "= X, X,?&r, X,  X,  X,X"))
!    (clobber (match_scratch:SI 4				    "= X, X,?&r, X,  X,  X,X"))
!    (clobber (match_scratch:DI 5				    "=&w, X,  X, X,  X, &w,X"))
     (clobber (reg:CC_C CC_REGNUM))]
    "TARGET_NEON"
    "#"
***************
*** 1052,1060 ****
        }
      else
        {
! 	if (CONST_INT_P (operands[2]) && INTVAL (operands[2]) == 1
! 	    && (!reg_overlap_mentioned_p (operands[0], operands[1])
! 		|| REGNO (operands[0]) == REGNO (operands[1])))
  	  /* This clobbers CC.  */
  	  emit_insn (gen_arm_ashldi3_1bit (operands[0], operands[1]));
  	else
--- 1052,1062 ----
        }
      else
        {
! 	/* The shift expanders support either full overlap or no overlap.  */
! 	gcc_assert (!reg_overlap_mentioned_p (operands[0], operands[1])
! 		    || REGNO (operands[0]) == REGNO (operands[1]));
! 
! 	if (operands[2] == CONST1_RTX (SImode))
  	  /* This clobbers CC.  */
  	  emit_insn (gen_arm_ashldi3_1bit (operands[0], operands[1]));
  	else
***************
*** 1063,1070 ****
        }
      DONE;
    }"
!   [(set_attr "arch" "neon_for_64bits,neon_for_64bits,*,*,avoid_neon_for_64bits,avoid_neon_for_64bits")
!    (set_attr "opt" "*,*,speed,speed,*,*")
     (set_attr "type" "multiple")]
  )
  
--- 1065,1072 ----
        }
      DONE;
    }"
!   [(set_attr "arch" "neon_for_64bits,neon_for_64bits,*,*,*,avoid_neon_for_64bits,avoid_neon_for_64bits")
!    (set_attr "opt" "*,*,speed,speed,speed,*,*")
     (set_attr "type" "multiple")]
  )
  
***************
*** 1113,1124 ****
  ;; ashrdi3_neon
  ;; lshrdi3_neon
  (define_insn_and_split "<shift>di3_neon"
!   [(set (match_operand:DI 0 "s_register_operand"	     "= w, w,?&r,?r,?w,?w")
! 	(rshifts:DI (match_operand:DI 1 "s_register_operand" " 0w, w, 0r, r,0w, w")
! 		    (match_operand:SI 2 "reg_or_int_operand" "  r, i,  r, i, r, i")))
!    (clobber (match_scratch:SI 3				     "=2r, X, &r, X,2r, X"))
!    (clobber (match_scratch:SI 4				     "= X, X, &r, X, X, X"))
!    (clobber (match_scratch:DI 5				     "=&w, X,  X, X,&w, X"))
     (clobber (reg:CC CC_REGNUM))]
    "TARGET_NEON"
    "#"
--- 1115,1126 ----
  ;; ashrdi3_neon
  ;; lshrdi3_neon
  (define_insn_and_split "<shift>di3_neon"
!   [(set (match_operand:DI 0 "s_register_operand"	     "= w, w,?&r,?r,?&r,?w,?w")
! 	(rshifts:DI (match_operand:DI 1 "s_register_operand" " 0w, w, 0r, 0,  r,0w, w")
! 		    (match_operand:SI 2 "reg_or_int_operand" "  r, i,  r, i,  i, r, i")))
!    (clobber (match_scratch:SI 3				     "=2r, X, &r, X,  X,2r, X"))
!    (clobber (match_scratch:SI 4				     "= X, X, &r, X,  X, X, X"))
!    (clobber (match_scratch:DI 5				     "=&w, X,  X, X, X,&w, X"))
     (clobber (reg:CC CC_REGNUM))]
    "TARGET_NEON"
    "#"
***************
*** 1154,1162 ****
        }
      else
        {
! 	if (CONST_INT_P (operands[2]) && INTVAL (operands[2]) == 1
! 	    && (!reg_overlap_mentioned_p (operands[0], operands[1])
! 		|| REGNO (operands[0]) == REGNO (operands[1])))
  	  /* This clobbers CC.  */
  	  emit_insn (gen_arm_<shift>di3_1bit (operands[0], operands[1]));
  	else
--- 1156,1166 ----
        }
      else
        {
! 	/* The shift expanders support either full overlap or no overlap.  */
! 	gcc_assert (!reg_overlap_mentioned_p (operands[0], operands[1])
! 		    || REGNO (operands[0]) == REGNO (operands[1]));
! 
! 	if (operands[2] == CONST1_RTX (SImode))
  	  /* This clobbers CC.  */
  	  emit_insn (gen_arm_<shift>di3_1bit (operands[0], operands[1]));
  	else
***************
*** 1167,1174 ****
  
      DONE;
    }"
!   [(set_attr "arch" "neon_for_64bits,neon_for_64bits,*,*,avoid_neon_for_64bits,avoid_neon_for_64bits")
!    (set_attr "opt" "*,*,speed,speed,*,*")
     (set_attr "type" "multiple")]
  )
  
--- 1171,1178 ----
  
      DONE;
    }"
!   [(set_attr "arch" "neon_for_64bits,neon_for_64bits,*,*,*,avoid_neon_for_64bits,avoid_neon_for_64bits")
!    (set_attr "opt" "*,*,speed,speed,speed,*,*")
     (set_attr "type" "multiple")]
  )
  
diff -Nrcpad gcc-5.4.0/gcc/config/arm/t-phoenix gcc-5.5.0/gcc/config/arm/t-phoenix
*** gcc-5.4.0/gcc/config/arm/t-phoenix	Thu Jan  1 00:00:00 1970
--- gcc-5.5.0/gcc/config/arm/t-phoenix	Wed Aug 31 09:38:42 2016
***************
*** 0 ****
--- 1,29 ----
+ # Copyright (C) 2016 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/>.
+ 
+ MULTILIB_OPTIONS     = marm/mthumb
+ MULTILIB_DIRNAMES    = arm thumb
+ MULTILIB_EXCEPTIONS  =
+ MULTILIB_MATCHES     =
+ 
+ MULTILIB_OPTIONS     += mfloat-abi=hard
+ MULTILIB_DIRNAMES    += fpu
+ MULTILIB_MATCHES     += mfloat-abi?hard=mhard-float
+ 
+ MULTILIB_OPTIONS     += mno-thumb-interwork/mthumb-interwork
+ MULTILIB_DIRNAMES    += normal interwork
diff -Nrcpad gcc-5.4.0/gcc/config/avr/avr.c gcc-5.5.0/gcc/config/avr/avr.c
*** gcc-5.4.0/gcc/config/avr/avr.c	Thu Aug 20 14:15:30 2015
--- gcc-5.5.0/gcc/config/avr/avr.c	Tue Aug 22 10:01:38 2017
***************
*** 21,30 ****
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
  #include "tm.h"
  #include "rtl.h"
  #include "regs.h"
- #include "hard-reg-set.h"
  #include "insn-config.h"
  #include "conditions.h"
  #include "insn-attr.h"
--- 21,40 ----
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
+ #include "hash-table.h"
  #include "tm.h"
+ #include "hard-reg-set.h"
  #include "rtl.h"
+ #include "hash-set.h"
+ #include "symtab.h"
+ #include "inchash.h"
+ #include "tree.h"
+ #include "function.h"
+ #include "hash-map.h"
+ #include "plugin-api.h"
+ #include "ipa-ref.h"
+ #include "cgraph.h"
  #include "regs.h"
  #include "insn-config.h"
  #include "conditions.h"
  #include "insn-attr.h"
*************** avr_set_current_function (tree decl)
*** 759,770 ****
  
        name = default_strip_name_encoding (name);
  
-       /* Silently ignore 'signal' if 'interrupt' is present.  AVR-LibC startet
-          using this when it switched from SIGNAL and INTERRUPT to ISR.  */
- 
-       if (cfun->machine->is_interrupt)
-         cfun->machine->is_signal = 0;
- 
        /* Interrupt handlers must be  void __vector (void)  functions.  */
  
        if (args && TREE_CODE (TREE_VALUE (args)) != VOID_TYPE)
--- 769,774 ----
*************** avr_set_current_function (tree decl)
*** 773,787 ****
        if (TREE_CODE (ret) != VOID_TYPE)
          error_at (loc, "%qs function cannot return a value", isr);
  
        /* If the function has the 'signal' or 'interrupt' attribute, ensure
           that the name of the function is "__vector_NN" so as to catch
           when the user misspells the vector name.  */
  
        if (!STR_PREFIX_P (name, "__vector"))
!         warning_at (loc, 0, "%qs appears to be a misspelled %s handler",
!                     name, isr);
      }
  
    /* Don't print the above diagnostics more than once.  */
  
    cfun->machine->attributes_checked_p = 1;
--- 777,813 ----
        if (TREE_CODE (ret) != VOID_TYPE)
          error_at (loc, "%qs function cannot return a value", isr);
  
+ #if defined WITH_AVRLIBC
+       /* Silently ignore 'signal' if 'interrupt' is present.  AVR-LibC startet
+          using this when it switched from SIGNAL and INTERRUPT to ISR.  */
+ 
+       if (cfun->machine->is_interrupt)
+         cfun->machine->is_signal = 0;
+ 
        /* If the function has the 'signal' or 'interrupt' attribute, ensure
           that the name of the function is "__vector_NN" so as to catch
           when the user misspells the vector name.  */
  
        if (!STR_PREFIX_P (name, "__vector"))
!         warning_at (loc, OPT_Wmisspelled_isr, "%qs appears to be a misspelled "
!                     "%qs handler, missing %<__vector%> prefix", name, isr);
! #endif // AVR-LibC naming conventions
      }
  
+ #if defined WITH_AVRLIBC
+   // Common problem is using "ISR" without first including avr/interrupt.h.
+   const char *name = IDENTIFIER_POINTER (DECL_NAME (decl));
+   name = default_strip_name_encoding (name);
+   if (0 == strcmp ("ISR", name)
+       || 0 == strcmp ("INTERRUPT", name)
+       || 0 == strcmp ("SIGNAL", name))
+     {
+       warning_at (loc, OPT_Wmisspelled_isr, "%qs is a reserved identifier"
+                   " in AVR-LibC.  Consider %<#include <avr/interrupt.h>%>"
+                   " before using the %qs macro", name, name);
+     }
+ #endif // AVR-LibC naming conventions
+ 
    /* Don't print the above diagnostics more than once.  */
  
    cfun->machine->attributes_checked_p = 1;
*************** avr_notice_update_cc (rtx body ATTRIBUTE
*** 2526,2533 ****
        break;
  
      case CC_NONE:
!       /* Insn does not affect CC at all.  */
!       break;
  
      case CC_SET_N:
        CC_STATUS_INIT;
--- 2552,2595 ----
        break;
  
      case CC_NONE:
!       /* Insn does not affect CC at all, but it might set some registers
!          that are stored in cc_status.  If such a register is affected by
!          the current insn, for example by means of a SET or a CLOBBER,
!          then we must reset cc_status; cf. PR77326.
! 
!          Unfortunately, set_of cannot be used as reg_overlap_mentioned_p
!          will abort on COMPARE (which might be found in cc_status.value1/2).
!          Thus work out the registers set by the insn and regs mentioned
!          in cc_status.value1/2.  */
! 
!       if (cc_status.value1
!           || cc_status.value2)
!         {
!           HARD_REG_SET regs_used;
!           HARD_REG_SET regs_set;
!           CLEAR_HARD_REG_SET (regs_used);
! 
!           if (cc_status.value1
!               && !CONSTANT_P (cc_status.value1))
!             {
!               find_all_hard_regs (cc_status.value1, &regs_used);
!             }
! 
!           if (cc_status.value2
!               && !CONSTANT_P (cc_status.value2))
!             {
!               find_all_hard_regs (cc_status.value2, &regs_used);
!             }
! 
!           find_all_hard_reg_sets (insn, &regs_set, false);
! 
!           if (hard_reg_set_intersect_p (regs_used, regs_set))
!             {
!               CC_STATUS_INIT;
!             }
!         }
! 
!       break; // CC_NONE
  
      case CC_SET_N:
        CC_STATUS_INIT;
*************** out_movqi_r_mr (rtx_insn *insn, rtx op[]
*** 3458,3464 ****
    if (CONSTANT_ADDRESS_P (x))
      {
        int n_words = AVR_TINY ? 1 : 2;
!       return optimize > 0 && io_address_operand (x, QImode)
          ? avr_asm_len ("in %0,%i1", op, plen, -1)
          : avr_asm_len ("lds %0,%m1", op, plen, -n_words);
      }
--- 3520,3526 ----
    if (CONSTANT_ADDRESS_P (x))
      {
        int n_words = AVR_TINY ? 1 : 2;
!       return io_address_operand (x, QImode)
          ? avr_asm_len ("in %0,%i1", op, plen, -1)
          : avr_asm_len ("lds %0,%m1", op, plen, -n_words);
      }
*************** out_movhi_r_mr (rtx_insn *insn, rtx op[]
*** 3713,3719 ****
    else if (CONSTANT_ADDRESS_P (base))
      {
        int n_words = AVR_TINY ? 2 : 4;
!       return optimize > 0 && io_address_operand (base, HImode)
          ? avr_asm_len ("in %A0,%i1" CR_TAB
                         "in %B0,%i1+1", op, plen, -2)
  
--- 3775,3781 ----
    else if (CONSTANT_ADDRESS_P (base))
      {
        int n_words = AVR_TINY ? 2 : 4;
!       return io_address_operand (base, HImode)
          ? avr_asm_len ("in %A0,%i1" CR_TAB
                         "in %B0,%i1+1", op, plen, -2)
  
*************** out_movqi_mr_r (rtx_insn *insn, rtx op[]
*** 4841,4847 ****
    if (CONSTANT_ADDRESS_P (x))
      {
        int n_words = AVR_TINY ? 1 : 2;
!       return optimize > 0 && io_address_operand (x, QImode)
          ? avr_asm_len ("out %i0,%1", op, plen, -1)
          : avr_asm_len ("sts %m0,%1", op, plen, -n_words);
      }
--- 4903,4909 ----
    if (CONSTANT_ADDRESS_P (x))
      {
        int n_words = AVR_TINY ? 1 : 2;
!       return io_address_operand (x, QImode)
          ? avr_asm_len ("out %i0,%1", op, plen, -1)
          : avr_asm_len ("sts %m0,%1", op, plen, -n_words);
      }
*************** avr_out_movhi_mr_r_xmega (rtx_insn *insn
*** 4917,4929 ****
  
    if (CONSTANT_ADDRESS_P (base))
      {
!       int n_words = AVR_TINY ? 2 : 4;
!       return optimize > 0 && io_address_operand (base, HImode)
          ? avr_asm_len ("out %i0,%A1" CR_TAB
                         "out %i0+1,%B1", op, plen, -2)
  
          : avr_asm_len ("sts %m0,%A1" CR_TAB
!                        "sts %m0+1,%B1", op, plen, -n_words);
      }
  
    if (reg_base > 0)
--- 4979,4990 ----
  
    if (CONSTANT_ADDRESS_P (base))
      {
!       return io_address_operand (base, HImode)
          ? avr_asm_len ("out %i0,%A1" CR_TAB
                         "out %i0+1,%B1", op, plen, -2)
  
          : avr_asm_len ("sts %m0,%A1" CR_TAB
!                        "sts %m0+1,%B1", op, plen, -4);
      }
  
    if (reg_base > 0)
*************** out_movhi_mr_r (rtx_insn *insn, rtx op[]
*** 5100,5106 ****
    if (CONSTANT_ADDRESS_P (base))
      {
        int n_words = AVR_TINY ? 2 : 4;
!       return optimize > 0 && io_address_operand (base, HImode)
          ? avr_asm_len ("out %i0+1,%B1" CR_TAB
                         "out %i0,%A1", op, plen, -2)
  
--- 5161,5167 ----
    if (CONSTANT_ADDRESS_P (base))
      {
        int n_words = AVR_TINY ? 2 : 4;
!       return io_address_operand (base, HImode)
          ? avr_asm_len ("out %i0+1,%B1" CR_TAB
                         "out %i0,%A1", op, plen, -2)
  
*************** avr_handle_addr_attribute (tree *node, t
*** 9023,9032 ****
    bool io_p = (strncmp (IDENTIFIER_POINTER (name), "io", 2) == 0);
    location_t loc = DECL_SOURCE_LOCATION (*node);
  
!   if (TREE_CODE (*node) != VAR_DECL)
      {
!       warning_at (loc, 0, "%qE attribute only applies to variables", name);
        *no_add = true;
      }
  
    if (args != NULL_TREE)
--- 9084,9095 ----
    bool io_p = (strncmp (IDENTIFIER_POINTER (name), "io", 2) == 0);
    location_t loc = DECL_SOURCE_LOCATION (*node);
  
!   if (!VAR_P (*node))
      {
!       warning_at (loc, OPT_Wattributes, "%qE attribute only applies to "
! 		  "variables", name);
        *no_add = true;
+       return NULL_TREE;
      }
  
    if (args != NULL_TREE)
*************** avr_handle_addr_attribute (tree *node, t
*** 9036,9043 ****
        tree arg = TREE_VALUE (args);
        if (TREE_CODE (arg) != INTEGER_CST)
  	{
! 	  warning (0, "%qE attribute allows only an integer constant argument",
! 		   name);
  	  *no_add = true;
  	}
        else if (io_p
--- 9099,9106 ----
        tree arg = TREE_VALUE (args);
        if (TREE_CODE (arg) != INTEGER_CST)
  	{
! 	  warning_at (loc, OPT_Wattributes, "%qE attribute allows only an "
! 		      "integer constant argument", name);
  	  *no_add = true;
  	}
        else if (io_p
*************** avr_handle_addr_attribute (tree *node, t
*** 9046,9064 ****
  			? low_io_address_operand : io_address_operand)
  			 (GEN_INT (TREE_INT_CST_LOW (arg)), QImode)))
  	{
! 	  warning_at (loc, 0, "%qE attribute address out of range", name);
  	  *no_add = true;
  	}
        else
  	{
  	  tree attribs = DECL_ATTRIBUTES (*node);
! 	  const char *names[] = { "io", "io_low", "address", NULL } ;
  	  for (const char **p = names; *p; p++)
  	    {
  	      tree other = lookup_attribute (*p, attribs);
  	      if (other && TREE_VALUE (other))
  		{
! 		  warning_at (loc, 0,
  			      "both %s and %qE attribute provide address",
  			      *p, name);
  		  *no_add = true;
--- 9109,9128 ----
  			? low_io_address_operand : io_address_operand)
  			 (GEN_INT (TREE_INT_CST_LOW (arg)), QImode)))
  	{
! 	  warning_at (loc, OPT_Wattributes, "%qE attribute address "
! 		      "out of range", name);
  	  *no_add = true;
  	}
        else
  	{
  	  tree attribs = DECL_ATTRIBUTES (*node);
! 	  const char *names[] = { "io", "io_low", "address", NULL };
  	  for (const char **p = names; *p; p++)
  	    {
  	      tree other = lookup_attribute (*p, attribs);
  	      if (other && TREE_VALUE (other))
  		{
! 		  warning_at (loc, OPT_Wattributes,
  			      "both %s and %qE attribute provide address",
  			      *p, name);
  		  *no_add = true;
*************** avr_handle_addr_attribute (tree *node, t
*** 9069,9075 ****
      }
  
    if (*no_add == false && io_p && !TREE_THIS_VOLATILE (*node))
!     warning_at (loc, 0, "%qE attribute on non-volatile variable", name);
  
    return NULL_TREE;
  }
--- 9133,9140 ----
      }
  
    if (*no_add == false && io_p && !TREE_THIS_VOLATILE (*node))
!     warning_at (loc, OPT_Wattributes, "%qE attribute on non-volatile variable",
! 		name);
  
    return NULL_TREE;
  }
*************** avr_eval_addr_attrib (rtx x)
*** 9086,9091 ****
--- 9151,9158 ----
        if (SYMBOL_REF_FLAGS (x) & SYMBOL_FLAG_IO)
  	{
  	  attr = lookup_attribute ("io", DECL_ATTRIBUTES (decl));
+ 	  if (!attr || !TREE_VALUE (attr))
+ 	    attr = lookup_attribute ("io_low", DECL_ATTRIBUTES (decl));
  	  gcc_assert (attr);
  	}
        if (!attr || !TREE_VALUE (attr))
*************** avr_attribute_table[] =
*** 9115,9125 ****
      false },
    { "OS_main",   0, 0, false, true,  true,   avr_handle_fntype_attribute,
      false },
!   { "io",        0, 1, false, false, false,  avr_handle_addr_attribute,
      false },
!   { "io_low",    0, 1, false, false, false,  avr_handle_addr_attribute,
      false },
!   { "address",   1, 1, false, false, false,  avr_handle_addr_attribute,
      false },
    { NULL,        0, 0, false, false, false, NULL, false }
  };
--- 9182,9192 ----
      false },
    { "OS_main",   0, 0, false, true,  true,   avr_handle_fntype_attribute,
      false },
!   { "io",        0, 1, true, false, false,  avr_handle_addr_attribute,
      false },
!   { "io_low",    0, 1, true, false, false,  avr_handle_addr_attribute,
      false },
!   { "address",   1, 1, true, false, false,  avr_handle_addr_attribute,
      false },
    { NULL,        0, 0, false, false, false, NULL, false }
  };
*************** avr_encode_section_info (tree decl, rtx
*** 9634,9646 ****
  
    if (new_decl_p
        && decl && DECL_P (decl)
-       && NULL_TREE == DECL_INITIAL (decl)
        && !DECL_EXTERNAL (decl)
        && avr_progmem_p (decl, DECL_ATTRIBUTES (decl)))
      {
!       warning (OPT_Wuninitialized,
!                "uninitialized variable %q+D put into "
!                "program memory area", decl);
      }
  
    default_encode_section_info (decl, rtl, new_decl_p);
--- 9701,9726 ----
  
    if (new_decl_p
        && decl && DECL_P (decl)
        && !DECL_EXTERNAL (decl)
        && avr_progmem_p (decl, DECL_ATTRIBUTES (decl)))
      {
!       if (!TREE_READONLY (decl))
!         {
!           // This might happen with C++ if stuff needs constructing.
!           error ("variable %q+D with dynamic initialization put "
!                  "into program memory area", decl);
!         }
!       else if (NULL_TREE == DECL_INITIAL (decl))
!         {
!           // Don't warn for (implicit) aliases like in PR80462.
!           tree asmname = DECL_ASSEMBLER_NAME (decl);
!           varpool_node *node = varpool_node::get_for_asmname (asmname);
!           bool alias_p = node && node->alias;
! 
!           if (!alias_p)
!             warning (OPT_Wuninitialized, "uninitialized variable %q+D put "
!                      "into program memory area", decl);
!         }
      }
  
    default_encode_section_info (decl, rtl, new_decl_p);
*************** avr_rtx_costs_1 (rtx x, int codearg, int
*** 10199,10204 ****
--- 10279,10285 ----
            break;
  
  	case SImode:
+ 	case DImode:
  	  if (AVR_HAVE_MUL)
              {
                if (!speed)
*************** avr_rtx_costs_1 (rtx x, int codearg, int
*** 10224,10230 ****
                  *total = COSTS_N_INSNS (AVR_HAVE_JMP_CALL ? 5 : 4);
              }
  
!           return true;
  
  	default:
  	  return false;
--- 10305,10314 ----
                  *total = COSTS_N_INSNS (AVR_HAVE_JMP_CALL ? 5 : 4);
              }
  
! 	   if (mode == DImode)
! 	     *total *= 2;
! 
! 	   return true;
  
  	default:
  	  return false;
*************** avr_address_cost (rtx x, machine_mode mo
*** 10801,10813 ****
        && (REG_P (XEXP (x, 0))
            || GET_CODE (XEXP (x, 0)) == SUBREG))
      {
!       if (INTVAL (XEXP (x, 1)) >= 61)
          cost = 18;
      }
    else if (CONSTANT_ADDRESS_P (x))
      {
!       if (optimize > 0
!           && io_address_operand (x, QImode))
          cost = 2;
      }
  
--- 10885,10896 ----
        && (REG_P (XEXP (x, 0))
            || GET_CODE (XEXP (x, 0)) == SUBREG))
      {
!       if (INTVAL (XEXP (x, 1)) > MAX_LD_OFFSET(mode))
          cost = 18;
      }
    else if (CONSTANT_ADDRESS_P (x))
      {
!       if (io_address_operand (x, QImode))
          cost = 2;
      }
  
diff -Nrcpad gcc-5.4.0/gcc/config/avr/avr.md gcc-5.5.0/gcc/config/avr/avr.md
*** gcc-5.4.0/gcc/config/avr/avr.md	Thu Feb 26 19:43:54 2015
--- gcc-5.5.0/gcc/config/avr/avr.md	Mon Aug  1 12:44:18 2016
***************
*** 112,123 ****
  (define_attr "length" ""
    (cond [(eq_attr "type" "branch")
           (if_then_else (and (ge (minus (pc) (match_dup 0))
!                                 (const_int -63))
                              (le (minus (pc) (match_dup 0))
                                  (const_int 62)))
                         (const_int 1)
                         (if_then_else (and (ge (minus (pc) (match_dup 0))
!                                               (const_int -2045))
                                            (le (minus (pc) (match_dup 0))
                                                (const_int 2045)))
                                       (const_int 2)
--- 112,123 ----
  (define_attr "length" ""
    (cond [(eq_attr "type" "branch")
           (if_then_else (and (ge (minus (pc) (match_dup 0))
!                                 (const_int -62))
                              (le (minus (pc) (match_dup 0))
                                  (const_int 62)))
                         (const_int 1)
                         (if_then_else (and (ge (minus (pc) (match_dup 0))
!                                               (const_int -2044))
                                            (le (minus (pc) (match_dup 0))
                                                (const_int 2045)))
                                       (const_int 2)
***************
*** 641,646 ****
--- 641,662 ----
      if (avr_mem_flash_p (dest))
        DONE;
  
+     if (QImode == <MODE>mode
+         && SUBREG_P (src)
+         && CONSTANT_ADDRESS_P (SUBREG_REG (src))
+         && can_create_pseudo_p())
+       {
+         // store_bitfield may want to store a SYMBOL_REF or CONST in a
+         // structure that's represented as PSImode.  As the upper 16 bits
+         // of PSImode cannot be expressed as an HImode subreg, the rhs is
+         // decomposed into QImode (word_mode) subregs of SYMBOL_REF,
+         // CONST or LABEL_REF; cf. PR71103.
+ 
+         rtx const_addr = SUBREG_REG (src);
+         operands[1] = src = copy_rtx (src);
+         SUBREG_REG (src) = copy_to_mode_reg (GET_MODE (const_addr), const_addr);
+       }
+ 
      /* One of the operands has to be in a register.  */
      if (!register_operand (dest, <MODE>mode)
          && !reg_or_0_operand (src, <MODE>mode))
diff -Nrcpad gcc-5.4.0/gcc/config/avr/avr.opt gcc-5.5.0/gcc/config/avr/avr.opt
*** gcc-5.4.0/gcc/config/avr/avr.opt	Wed Apr 22 16:14:50 2015
--- gcc-5.5.0/gcc/config/avr/avr.opt	Tue Aug 22 09:48:48 2017
*************** Waddr-space-convert
*** 91,96 ****
--- 91,100 ----
  Warning C Report Var(avr_warn_addr_space_convert) Init(0)
  Warn if the address space of an address is changed.
  
+ Wmisspelled-isr
+ Warning C C++ Report Var(avr_warn_misspelled_isr) Init(1)
+ Warn if the ISR is misspelled, i.e. without __vector prefix. Enabled by default.
+ 
  mfract-convert-truncate
  Target Report Mask(FRACT_CONV_TRUNC)
  Allow to use truncation instead of rounding towards 0 for fractional int types
diff -Nrcpad gcc-5.4.0/gcc/config/avr/gen-avr-mmcu-specs.c gcc-5.5.0/gcc/config/avr/gen-avr-mmcu-specs.c
*** gcc-5.4.0/gcc/config/avr/gen-avr-mmcu-specs.c	Mon Apr 27 11:49:42 2015
--- gcc-5.5.0/gcc/config/avr/gen-avr-mmcu-specs.c	Tue Jun 21 10:43:12 2016
***************
*** 27,33 ****
  
  #include "avr-devices.c"
  
! // Get rid of "defaults.h".  We just need tm.h for `WITH_AVRLIBS' and
  // and `WITH_RTEMS'.  */
  #define GCC_DEFAULTS_H
  
--- 27,33 ----
  
  #include "avr-devices.c"
  
! // Get rid of "defaults.h".  We just need tm.h for `WITH_AVRLIBC' and
  // and `WITH_RTEMS'.  */
  #define GCC_DEFAULTS_H
  
*************** print_mcu (const avr_mcu_t *mcu)
*** 242,253 ****
        fprintf (f, "*link_data_start:\n");
        if (mcu->data_section_start
            != arch->default_data_section_start)
!         fprintf (f, "\t-Tdata 0x%lX", 0x800000UL + mcu->data_section_start);
        fprintf (f, "\n\n");
  
        fprintf (f, "*link_text_start:\n");
        if (mcu->text_section_start != 0x0)
!         fprintf (f, "\t-Ttext 0x%lX", 0UL + mcu->text_section_start);
        fprintf (f, "\n\n");
      }
  
--- 242,254 ----
        fprintf (f, "*link_data_start:\n");
        if (mcu->data_section_start
            != arch->default_data_section_start)
!         fprintf (f, "\t%%{!Tdata:-Tdata 0x%lX}",
!                  0x800000UL + mcu->data_section_start);
        fprintf (f, "\n\n");
  
        fprintf (f, "*link_text_start:\n");
        if (mcu->text_section_start != 0x0)
!         fprintf (f, "\t%%{!Ttext:-Ttext 0x%lX}", 0UL + mcu->text_section_start);
        fprintf (f, "\n\n");
      }
  
diff -Nrcpad gcc-5.4.0/gcc/config/avr/gen-avr-mmcu-texi.c gcc-5.5.0/gcc/config/avr/gen-avr-mmcu-texi.c
*** gcc-5.4.0/gcc/config/avr/gen-avr-mmcu-texi.c	Tue Mar 10 09:50:41 2015
--- gcc-5.5.0/gcc/config/avr/gen-avr-mmcu-texi.c	Mon Oct 10 14:27:07 2016
***************
*** 19,24 ****
--- 19,25 ----
  
  #include <stdlib.h>
  #include <stdio.h>
+ #include <string.h>
  
  #define IN_GEN_AVR_MMCU_TEXI
  
diff -Nrcpad gcc-5.4.0/gcc/config/i386/avx2intrin.h gcc-5.5.0/gcc/config/i386/avx2intrin.h
*** gcc-5.4.0/gcc/config/i386/avx2intrin.h	Fri Jan 16 11:01:08 2015
--- gcc-5.5.0/gcc/config/i386/avx2intrin.h	Thu Jun  1 21:51:51 2017
*************** _mm_srlv_epi64 (__m128i __X, __m128i __Y
*** 1246,1667 ****
  #ifdef __OPTIMIZE__
  extern __inline __m128d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_i32gather_pd (double const *base, __m128i index, const int scale)
  {
!   __v2df zero = _mm_setzero_pd ();
!   __v2df mask = _mm_cmpeq_pd (zero, zero);
  
    return (__m128d) __builtin_ia32_gathersiv2df (_mm_undefined_pd (),
! 						base,
! 						(__v4si)index,
! 						mask,
! 						scale);
  }
  
  extern __inline __m128d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_i32gather_pd (__m128d src, double const *base, __m128i index,
! 		       __m128d mask, const int scale)
  {
!   return (__m128d) __builtin_ia32_gathersiv2df ((__v2df)src,
! 						base,
! 						(__v4si)index,
! 						(__v2df)mask,
! 						scale);
  }
  
  extern __inline __m256d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_i32gather_pd (double const *base, __m128i index, const int scale)
  {
!   __v4df zero = _mm256_setzero_pd ();
!   __v4df mask = _mm256_cmp_pd (zero, zero, _CMP_EQ_OQ);
  
    return (__m256d) __builtin_ia32_gathersiv4df (_mm256_undefined_pd (),
! 						base,
! 						(__v4si)index,
! 						mask,
! 						scale);
  }
  
  extern __inline __m256d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_i32gather_pd (__m256d src, double const *base,
! 			  __m128i index, __m256d mask, const int scale)
  {
!   return (__m256d) __builtin_ia32_gathersiv4df ((__v4df)src,
! 						base,
! 						(__v4si)index,
! 						(__v4df)mask,
! 						scale);
  }
  
  extern __inline __m128d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_i64gather_pd (double const *base, __m128i index, const int scale)
  {
!   __v2df src = _mm_setzero_pd ();
!   __v2df mask = _mm_cmpeq_pd (src, src);
  
!   return (__m128d) __builtin_ia32_gatherdiv2df (src,
! 						base,
! 						(__v2di)index,
! 						mask,
! 						scale);
  }
  
  extern __inline __m128d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_i64gather_pd (__m128d src, double const *base, __m128i index,
! 		       __m128d mask, const int scale)
  {
!   return (__m128d) __builtin_ia32_gatherdiv2df ((__v2df)src,
! 						base,
! 						(__v2di)index,
! 						(__v2df)mask,
! 						scale);
  }
  
  extern __inline __m256d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_i64gather_pd (double const *base, __m256i index, const int scale)
  {
!   __v4df src = _mm256_setzero_pd ();
!   __v4df mask = _mm256_cmp_pd (src, src, _CMP_EQ_OQ);
  
!   return (__m256d) __builtin_ia32_gatherdiv4df (src,
! 						base,
! 						(__v4di)index,
! 						mask,
! 						scale);
  }
  
  extern __inline __m256d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_i64gather_pd (__m256d src, double const *base,
! 			  __m256i index, __m256d mask, const int scale)
  {
!   return (__m256d) __builtin_ia32_gatherdiv4df ((__v4df)src,
! 						base,
! 						(__v4di)index,
! 						(__v4df)mask,
! 						scale);
  }
  
  extern __inline __m128
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_i32gather_ps (float const *base, __m128i index, const int scale)
  {
!   __v4sf src = _mm_setzero_ps ();
!   __v4sf mask = _mm_cmpeq_ps (src, src);
  
!   return (__m128) __builtin_ia32_gathersiv4sf (src,
! 					       base,
! 					       (__v4si)index,
! 					       mask,
! 					       scale);
  }
  
  extern __inline __m128
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_i32gather_ps (__m128 src, float const *base, __m128i index,
! 		       __m128 mask, const int scale)
  {
!   return (__m128) __builtin_ia32_gathersiv4sf ((__v4sf)src,
! 					       base,
! 					       (__v4si)index,
! 					       (__v4sf)mask,
! 					       scale);
  }
  
  extern __inline __m256
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_i32gather_ps (float const *base, __m256i index, const int scale)
  {
!   __v8sf src = _mm256_setzero_ps ();
!   __v8sf mask = _mm256_cmp_ps (src, src, _CMP_EQ_OQ);
  
!   return (__m256) __builtin_ia32_gathersiv8sf (src,
! 					       base,
! 					       (__v8si)index,
! 					       mask,
! 					       scale);
  }
  
  extern __inline __m256
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_i32gather_ps (__m256 src, float const *base,
! 			  __m256i index, __m256 mask, const int scale)
  {
!   return (__m256) __builtin_ia32_gathersiv8sf ((__v8sf)src,
! 					       base,
! 					       (__v8si)index,
! 					       (__v8sf)mask,
! 					       scale);
  }
  
  extern __inline __m128
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_i64gather_ps (float const *base, __m128i index, const int scale)
  {
!   __v4sf src = _mm_setzero_ps ();
!   __v4sf mask = _mm_cmpeq_ps (src, src);
  
!   return (__m128) __builtin_ia32_gatherdiv4sf (src,
! 					       base,
! 					       (__v2di)index,
! 					       mask,
! 					       scale);
  }
  
  extern __inline __m128
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_i64gather_ps (__m128 src, float const *base, __m128i index,
! 		       __m128 mask, const int scale)
  {
!   return (__m128) __builtin_ia32_gatherdiv4sf ((__v4sf)src,
! 						base,
! 						(__v2di)index,
! 						(__v4sf)mask,
! 						scale);
  }
  
  extern __inline __m128
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_i64gather_ps (float const *base, __m256i index, const int scale)
  {
!   __v4sf src = _mm_setzero_ps ();
!   __v4sf mask = _mm_cmpeq_ps (src, src);
  
!   return (__m128) __builtin_ia32_gatherdiv4sf256 (src,
! 						  base,
! 						  (__v4di)index,
! 						  mask,
! 						  scale);
  }
  
  extern __inline __m128
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_i64gather_ps (__m128 src, float const *base,
! 			  __m256i index, __m128 mask, const int scale)
  {
!   return (__m128) __builtin_ia32_gatherdiv4sf256 ((__v4sf)src,
! 						  base,
! 						  (__v4di)index,
! 						  (__v4sf)mask,
! 						  scale);
  }
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_i32gather_epi64 (long long int const *base,
! 		     __m128i index, const int scale)
  {
!   __v2di src = __extension__ (__v2di){ 0, 0 };
!   __v2di mask = __extension__ (__v2di){ ~0, ~0 };
  
!   return (__m128i) __builtin_ia32_gathersiv2di (src,
! 						base,
! 						(__v4si)index,
! 						mask,
! 						scale);
  }
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_i32gather_epi64 (__m128i src, long long int const *base,
! 			  __m128i index, __m128i mask, const int scale)
  {
!   return (__m128i) __builtin_ia32_gathersiv2di ((__v2di)src,
! 						base,
! 						(__v4si)index,
! 						(__v2di)mask,
! 						scale);
  }
  
  extern __inline __m256i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_i32gather_epi64 (long long int const *base,
! 			__m128i index, const int scale)
  {
!   __v4di src = __extension__ (__v4di){ 0, 0, 0, 0 };
!   __v4di mask = __extension__ (__v4di){ ~0, ~0, ~0, ~0 };
  
!   return (__m256i) __builtin_ia32_gathersiv4di (src,
! 						base,
! 						(__v4si)index,
! 						mask,
! 						scale);
  }
  
  extern __inline __m256i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_i32gather_epi64 (__m256i src, long long int const *base,
! 			     __m128i index, __m256i mask, const int scale)
  {
!   return (__m256i) __builtin_ia32_gathersiv4di ((__v4di)src,
! 						base,
! 						(__v4si)index,
! 						(__v4di)mask,
! 						scale);
  }
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_i64gather_epi64 (long long int const *base,
! 		     __m128i index, const int scale)
  {
!   __v2di src = __extension__ (__v2di){ 0, 0 };
!   __v2di mask = __extension__ (__v2di){ ~0, ~0 };
  
!   return (__m128i) __builtin_ia32_gatherdiv2di (src,
! 						base,
! 						(__v2di)index,
! 						mask,
! 						scale);
  }
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_i64gather_epi64 (__m128i src, long long int const *base, __m128i index,
! 			  __m128i mask, const int scale)
  {
!   return (__m128i) __builtin_ia32_gatherdiv2di ((__v2di)src,
! 						base,
! 						(__v2di)index,
! 						(__v2di)mask,
! 						scale);
  }
  
  extern __inline __m256i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_i64gather_epi64 (long long int const *base,
! 			__m256i index, const int scale)
  {
!   __v4di src = __extension__ (__v4di){ 0, 0, 0, 0 };
!   __v4di mask = __extension__ (__v4di){ ~0, ~0, ~0, ~0 };
  
!   return (__m256i) __builtin_ia32_gatherdiv4di (src,
! 						base,
! 						(__v4di)index,
! 						mask,
! 						scale);
  }
  
  extern __inline __m256i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_i64gather_epi64 (__m256i src, long long int const *base,
! 			     __m256i index, __m256i mask, const int scale)
  {
!   return (__m256i) __builtin_ia32_gatherdiv4di ((__v4di)src,
! 						base,
! 						(__v4di)index,
! 						(__v4di)mask,
! 						scale);
  }
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_i32gather_epi32 (int const *base, __m128i index, const int scale)
  {
!   __v4si src = __extension__ (__v4si){ 0, 0, 0, 0 };
!   __v4si mask = __extension__ (__v4si){ ~0, ~0, ~0, ~0 };
  
!   return (__m128i) __builtin_ia32_gathersiv4si (src,
! 					       base,
! 					       (__v4si)index,
! 					       mask,
! 					       scale);
  }
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_i32gather_epi32 (__m128i src, int const *base, __m128i index,
! 			  __m128i mask, const int scale)
  {
!   return (__m128i) __builtin_ia32_gathersiv4si ((__v4si)src,
! 						base,
! 						(__v4si)index,
! 						(__v4si)mask,
! 						scale);
  }
  
  extern __inline __m256i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_i32gather_epi32 (int const *base, __m256i index, const int scale)
  {
!   __v8si src = __extension__ (__v8si){ 0, 0, 0, 0, 0, 0, 0, 0 };
!   __v8si mask = __extension__ (__v8si){ ~0, ~0, ~0, ~0, ~0, ~0, ~0, ~0 };
  
!   return (__m256i) __builtin_ia32_gathersiv8si (src,
! 						base,
! 						(__v8si)index,
! 						mask,
! 						scale);
  }
  
  extern __inline __m256i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_i32gather_epi32 (__m256i src, int const *base,
! 			     __m256i index, __m256i mask, const int scale)
  {
!   return (__m256i) __builtin_ia32_gathersiv8si ((__v8si)src,
! 						base,
! 						(__v8si)index,
! 						(__v8si)mask,
! 						scale);
  }
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_i64gather_epi32 (int const *base, __m128i index, const int scale)
  {
!   __v4si src = __extension__ (__v4si){ 0, 0, 0, 0 };
!   __v4si mask = __extension__ (__v4si){ ~0, ~0, ~0, ~0 };
  
!   return (__m128i) __builtin_ia32_gatherdiv4si (src,
! 						base,
! 						(__v2di)index,
! 						mask,
! 						scale);
  }
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_i64gather_epi32 (__m128i src, int const *base, __m128i index,
! 			  __m128i mask, const int scale)
  {
!   return (__m128i) __builtin_ia32_gatherdiv4si ((__v4si)src,
! 						base,
! 						(__v2di)index,
! 						(__v4si)mask,
! 						scale);
  }
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_i64gather_epi32 (int const *base, __m256i index, const int scale)
  {
!   __v4si src = __extension__ (__v4si){ 0, 0, 0, 0 };
!   __v4si mask = __extension__ (__v4si){ ~0, ~0, ~0, ~0 };
  
!   return (__m128i) __builtin_ia32_gatherdiv4si256 (src,
! 						  base,
! 						  (__v4di)index,
! 						  mask,
! 						  scale);
  }
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_i64gather_epi32 (__m128i src, int const *base,
! 			     __m256i index, __m128i mask, const int scale)
  {
!   return (__m128i) __builtin_ia32_gatherdiv4si256 ((__v4si)src,
! 						   base,
! 						   (__v4di)index,
! 						   (__v4si)mask,
! 						   scale);
  }
  #else /* __OPTIMIZE__ */
  #define _mm_i32gather_pd(BASE, INDEX, SCALE)				\
--- 1246,1671 ----
  #ifdef __OPTIMIZE__
  extern __inline __m128d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_i32gather_pd (double const *__base, __m128i __index, const int __scale)
  {
!   __v2df __zero = _mm_setzero_pd ();
!   __v2df __mask = _mm_cmpeq_pd (__zero, __zero);
  
    return (__m128d) __builtin_ia32_gathersiv2df (_mm_undefined_pd (),
! 						__base,
! 						(__v4si)__index,
! 						__mask,
! 						__scale);
  }
  
  extern __inline __m128d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_i32gather_pd (__m128d __src, double const *__base, __m128i __index,
! 		       __m128d __mask, const int __scale)
  {
!   return (__m128d) __builtin_ia32_gathersiv2df ((__v2df)__src,
! 						__base,
! 						(__v4si)__index,
! 						(__v2df)__mask,
! 						__scale);
  }
  
  extern __inline __m256d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_i32gather_pd (double const *__base, __m128i __index, const int __scale)
  {
!   __v4df __zero = _mm256_setzero_pd ();
!   __v4df __mask = _mm256_cmp_pd (__zero, __zero, _CMP_EQ_OQ);
  
    return (__m256d) __builtin_ia32_gathersiv4df (_mm256_undefined_pd (),
! 						__base,
! 						(__v4si)__index,
! 						__mask,
! 						__scale);
  }
  
  extern __inline __m256d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_i32gather_pd (__m256d __src, double const *__base,
! 			  __m128i __index, __m256d __mask, const int __scale)
  {
!   return (__m256d) __builtin_ia32_gathersiv4df ((__v4df)__src,
! 						__base,
! 						(__v4si)__index,
! 						(__v4df)__mask,
! 						__scale);
  }
  
  extern __inline __m128d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_i64gather_pd (double const *__base, __m128i __index, const int __scale)
  {
!   __v2df __src = _mm_setzero_pd ();
!   __v2df __mask = _mm_cmpeq_pd (__src, __src);
  
!   return (__m128d) __builtin_ia32_gatherdiv2df (__src,
! 						__base,
! 						(__v2di)__index,
! 						__mask,
! 						__scale);
  }
  
  extern __inline __m128d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_i64gather_pd (__m128d __src, double const *__base, __m128i __index,
! 		       __m128d __mask, const int __scale)
  {
!   return (__m128d) __builtin_ia32_gatherdiv2df ((__v2df)__src,
! 						__base,
! 						(__v2di)__index,
! 						(__v2df)__mask,
! 						__scale);
  }
  
  extern __inline __m256d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_i64gather_pd (double const *__base, __m256i __index, const int __scale)
  {
!   __v4df __src = _mm256_setzero_pd ();
!   __v4df __mask = _mm256_cmp_pd (__src, __src, _CMP_EQ_OQ);
  
!   return (__m256d) __builtin_ia32_gatherdiv4df (__src,
! 						__base,
! 						(__v4di)__index,
! 						__mask,
! 						__scale);
  }
  
  extern __inline __m256d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_i64gather_pd (__m256d __src, double const *__base,
! 			  __m256i __index, __m256d __mask, const int __scale)
  {
!   return (__m256d) __builtin_ia32_gatherdiv4df ((__v4df)__src,
! 						__base,
! 						(__v4di)__index,
! 						(__v4df)__mask,
! 						__scale);
  }
  
  extern __inline __m128
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_i32gather_ps (float const *__base, __m128i __index, const int __scale)
  {
!   __v4sf __src = _mm_setzero_ps ();
!   __v4sf __mask = _mm_cmpeq_ps (__src, __src);
  
!   return (__m128) __builtin_ia32_gathersiv4sf (__src,
! 					       __base,
! 					       (__v4si)__index,
! 					       __mask,
! 					       __scale);
  }
  
  extern __inline __m128
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_i32gather_ps (__m128 __src, float const *__base, __m128i __index,
! 		       __m128 __mask, const int __scale)
  {
!   return (__m128) __builtin_ia32_gathersiv4sf ((__v4sf)__src,
! 					       __base,
! 					       (__v4si)__index,
! 					       (__v4sf)__mask,
! 					       __scale);
  }
  
  extern __inline __m256
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_i32gather_ps (float const *__base, __m256i __index, const int __scale)
  {
!   __v8sf __src = _mm256_setzero_ps ();
!   __v8sf __mask = _mm256_cmp_ps (__src, __src, _CMP_EQ_OQ);
  
!   return (__m256) __builtin_ia32_gathersiv8sf (__src,
! 					       __base,
! 					       (__v8si)__index,
! 					       __mask,
! 					       __scale);
  }
  
  extern __inline __m256
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_i32gather_ps (__m256 __src, float const *__base,
! 			  __m256i __index, __m256 __mask, const int __scale)
  {
!   return (__m256) __builtin_ia32_gathersiv8sf ((__v8sf)__src,
! 					       __base,
! 					       (__v8si)__index,
! 					       (__v8sf)__mask,
! 					       __scale);
  }
  
  extern __inline __m128
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_i64gather_ps (float const *__base, __m128i __index, const int __scale)
  {
!   __v4sf __src = _mm_setzero_ps ();
!   __v4sf __mask = _mm_cmpeq_ps (__src, __src);
  
!   return (__m128) __builtin_ia32_gatherdiv4sf (__src,
! 					       __base,
! 					       (__v2di)__index,
! 					       __mask,
! 					       __scale);
  }
  
  extern __inline __m128
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_i64gather_ps (__m128 __src, float const *__base, __m128i __index,
! 		       __m128 __mask, const int __scale)
  {
!   return (__m128) __builtin_ia32_gatherdiv4sf ((__v4sf)__src,
! 						__base,
! 						(__v2di)__index,
! 						(__v4sf)__mask,
! 						__scale);
  }
  
  extern __inline __m128
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_i64gather_ps (float const *__base, __m256i __index, const int __scale)
  {
!   __v4sf __src = _mm_setzero_ps ();
!   __v4sf __mask = _mm_cmpeq_ps (__src, __src);
  
!   return (__m128) __builtin_ia32_gatherdiv4sf256 (__src,
! 						  __base,
! 						  (__v4di)__index,
! 						  __mask,
! 						  __scale);
  }
  
  extern __inline __m128
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_i64gather_ps (__m128 __src, float const *__base,
! 			  __m256i __index, __m128 __mask, const int __scale)
  {
!   return (__m128) __builtin_ia32_gatherdiv4sf256 ((__v4sf)__src,
! 						  __base,
! 						  (__v4di)__index,
! 						  (__v4sf)__mask,
! 						  __scale);
  }
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_i32gather_epi64 (long long int const *__base,
! 		     __m128i __index, const int __scale)
  {
!   __v2di __src = __extension__ (__v2di){ 0, 0 };
!   __v2di __mask = __extension__ (__v2di){ ~0, ~0 };
  
!   return (__m128i) __builtin_ia32_gathersiv2di (__src,
! 						__base,
! 						(__v4si)__index,
! 						__mask,
! 						__scale);
  }
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_i32gather_epi64 (__m128i __src, long long int const *__base,
! 			  __m128i __index, __m128i __mask, const int __scale)
  {
!   return (__m128i) __builtin_ia32_gathersiv2di ((__v2di)__src,
! 						__base,
! 						(__v4si)__index,
! 						(__v2di)__mask,
! 						__scale);
  }
  
  extern __inline __m256i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_i32gather_epi64 (long long int const *__base,
! 			__m128i __index, const int __scale)
  {
!   __v4di __src = __extension__ (__v4di){ 0, 0, 0, 0 };
!   __v4di __mask = __extension__ (__v4di){ ~0, ~0, ~0, ~0 };
  
!   return (__m256i) __builtin_ia32_gathersiv4di (__src,
! 						__base,
! 						(__v4si)__index,
! 						__mask,
! 						__scale);
  }
  
  extern __inline __m256i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_i32gather_epi64 (__m256i __src, long long int const *__base,
! 			     __m128i __index, __m256i __mask,
! 			     const int __scale)
  {
!   return (__m256i) __builtin_ia32_gathersiv4di ((__v4di)__src,
! 						__base,
! 						(__v4si)__index,
! 						(__v4di)__mask,
! 						__scale);
  }
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_i64gather_epi64 (long long int const *__base,
! 		     __m128i __index, const int __scale)
  {
!   __v2di __src = __extension__ (__v2di){ 0, 0 };
!   __v2di __mask = __extension__ (__v2di){ ~0, ~0 };
  
!   return (__m128i) __builtin_ia32_gatherdiv2di (__src,
! 						__base,
! 						(__v2di)__index,
! 						__mask,
! 						__scale);
  }
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_i64gather_epi64 (__m128i __src, long long int const *__base,
! 			  __m128i __index, __m128i __mask, const int __scale)
  {
!   return (__m128i) __builtin_ia32_gatherdiv2di ((__v2di)__src,
! 						__base,
! 						(__v2di)__index,
! 						(__v2di)__mask,
! 						__scale);
  }
  
  extern __inline __m256i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_i64gather_epi64 (long long int const *__base,
! 			__m256i __index, const int __scale)
  {
!   __v4di __src = __extension__ (__v4di){ 0, 0, 0, 0 };
!   __v4di __mask = __extension__ (__v4di){ ~0, ~0, ~0, ~0 };
  
!   return (__m256i) __builtin_ia32_gatherdiv4di (__src,
! 						__base,
! 						(__v4di)__index,
! 						__mask,
! 						__scale);
  }
  
  extern __inline __m256i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_i64gather_epi64 (__m256i __src, long long int const *__base,
! 			     __m256i __index, __m256i __mask,
! 			     const int __scale)
  {
!   return (__m256i) __builtin_ia32_gatherdiv4di ((__v4di)__src,
! 						__base,
! 						(__v4di)__index,
! 						(__v4di)__mask,
! 						__scale);
  }
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_i32gather_epi32 (int const *__base, __m128i __index, const int __scale)
  {
!   __v4si __src = __extension__ (__v4si){ 0, 0, 0, 0 };
!   __v4si __mask = __extension__ (__v4si){ ~0, ~0, ~0, ~0 };
  
!   return (__m128i) __builtin_ia32_gathersiv4si (__src,
! 						__base,
! 						(__v4si)__index,
! 						__mask,
! 						__scale);
  }
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_i32gather_epi32 (__m128i __src, int const *__base, __m128i __index,
! 			  __m128i __mask, const int __scale)
  {
!   return (__m128i) __builtin_ia32_gathersiv4si ((__v4si)__src,
! 						__base,
! 						(__v4si)__index,
! 						(__v4si)__mask,
! 						__scale);
  }
  
  extern __inline __m256i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_i32gather_epi32 (int const *__base, __m256i __index, const int __scale)
  {
!   __v8si __src = __extension__ (__v8si){ 0, 0, 0, 0, 0, 0, 0, 0 };
!   __v8si __mask = __extension__ (__v8si){ ~0, ~0, ~0, ~0, ~0, ~0, ~0, ~0 };
  
!   return (__m256i) __builtin_ia32_gathersiv8si (__src,
! 						__base,
! 						(__v8si)__index,
! 						__mask,
! 						__scale);
  }
  
  extern __inline __m256i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_i32gather_epi32 (__m256i __src, int const *__base,
! 			     __m256i __index, __m256i __mask,
! 			     const int __scale)
  {
!   return (__m256i) __builtin_ia32_gathersiv8si ((__v8si)__src,
! 						__base,
! 						(__v8si)__index,
! 						(__v8si)__mask,
! 						__scale);
  }
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_i64gather_epi32 (int const *__base, __m128i __index, const int __scale)
  {
!   __v4si __src = __extension__ (__v4si){ 0, 0, 0, 0 };
!   __v4si __mask = __extension__ (__v4si){ ~0, ~0, ~0, ~0 };
  
!   return (__m128i) __builtin_ia32_gatherdiv4si (__src,
! 						__base,
! 						(__v2di)__index,
! 						__mask,
! 						__scale);
  }
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_i64gather_epi32 (__m128i __src, int const *__base, __m128i __index,
! 			  __m128i __mask, const int __scale)
  {
!   return (__m128i) __builtin_ia32_gatherdiv4si ((__v4si)__src,
! 						__base,
! 						(__v2di)__index,
! 						(__v4si)__mask,
! 						__scale);
  }
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_i64gather_epi32 (int const *__base, __m256i __index, const int __scale)
  {
!   __v4si __src = __extension__ (__v4si){ 0, 0, 0, 0 };
!   __v4si __mask = __extension__ (__v4si){ ~0, ~0, ~0, ~0 };
  
!   return (__m128i) __builtin_ia32_gatherdiv4si256 (__src,
! 						   __base,
! 						   (__v4di)__index,
! 						   __mask,
! 						   __scale);
  }
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_i64gather_epi32 (__m128i __src, int const *__base,
! 			     __m256i __index, __m128i __mask,
! 			     const int __scale)
  {
!   return (__m128i) __builtin_ia32_gatherdiv4si256 ((__v4si)__src,
! 						   __base,
! 						   (__v4di)__index,
! 						   (__v4si)__mask,
! 						   __scale);
  }
  #else /* __OPTIMIZE__ */
  #define _mm_i32gather_pd(BASE, INDEX, SCALE)				\
diff -Nrcpad gcc-5.4.0/gcc/config/i386/avx512bwintrin.h gcc-5.5.0/gcc/config/i386/avx512bwintrin.h
*** gcc-5.4.0/gcc/config/i386/avx512bwintrin.h	Mon Jan  5 12:33:28 2015
--- gcc-5.5.0/gcc/config/i386/avx512bwintrin.h	Tue May 30 08:08:59 2017
*************** __attribute__ ((__gnu_inline__, __always
*** 270,278 ****
  _mm512_broadcastb_epi8 (__m128i __A)
  {
    return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A,
! 						       (__v64qi)_mm512_undefined_si512(),
! 						       (__mmask64) -
! 						       1);
  }
  
  extern __inline __m512i
--- 270,277 ----
  _mm512_broadcastb_epi8 (__m128i __A)
  {
    return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A,
! 						       (__v64qi)_mm512_undefined_epi32(),
! 						       (__mmask64) -1);
  }
  
  extern __inline __m512i
*************** __attribute__ ((__gnu_inline__, __always
*** 318,325 ****
  _mm512_broadcastw_epi16 (__m128i __A)
  {
    return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A,
! 						       (__v32hi)_mm512_undefined_si512(),
! 						       (__mmask32)-1);
  }
  
  extern __inline __m512i
--- 317,324 ----
  _mm512_broadcastw_epi16 (__m128i __A)
  {
    return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A,
! 						       (__v32hi)_mm512_undefined_epi32(),
! 						       (__mmask32) -1);
  }
  
  extern __inline __m512i
*************** _mm512_permutex2var_epi16 (__m512i __A,
*** 588,595 ****
  							/* idx */ ,
  							(__v32hi) __A,
  							(__v32hi) __B,
! 							(__mmask32) -
! 							1);
  }
  
  extern __inline __m512i
--- 587,593 ----
  							/* idx */ ,
  							(__v32hi) __A,
  							(__v32hi) __B,
! 							(__mmask32) -1);
  }
  
  extern __inline __m512i
*************** _mm512_cmpneq_epu8_mask (__m512i __X, __
*** 2284,2290 ****
  {
    return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
  						   (__v64qi) __Y, 4,
! 						   (__mmask64) - 1);
  }
  
  extern __inline __mmask64
--- 2282,2288 ----
  {
    return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
  						   (__v64qi) __Y, 4,
! 						   (__mmask64) -1);
  }
  
  extern __inline __mmask64
*************** _mm512_cmplt_epu8_mask (__m512i __X, __m
*** 2293,2299 ****
  {
    return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
  						   (__v64qi) __Y, 1,
! 						   (__mmask64) - 1);
  }
  
  extern __inline __mmask64
--- 2291,2297 ----
  {
    return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
  						   (__v64qi) __Y, 1,
! 						   (__mmask64) -1);
  }
  
  extern __inline __mmask64
*************** _mm512_cmpge_epu8_mask (__m512i __X, __m
*** 2302,2308 ****
  {
    return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
  						   (__v64qi) __Y, 5,
! 						   (__mmask64) - 1);
  }
  
  extern __inline __mmask64
--- 2300,2306 ----
  {
    return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
  						   (__v64qi) __Y, 5,
! 						   (__mmask64) -1);
  }
  
  extern __inline __mmask64
*************** _mm512_cmple_epu8_mask (__m512i __X, __m
*** 2311,2317 ****
  {
    return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
  						   (__v64qi) __Y, 2,
! 						   (__mmask64) - 1);
  }
  
  extern __inline __mmask32
--- 2309,2315 ----
  {
    return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
  						   (__v64qi) __Y, 2,
! 						   (__mmask64) -1);
  }
  
  extern __inline __mmask32
*************** _mm512_cmpneq_epu16_mask (__m512i __X, _
*** 2320,2326 ****
  {
    return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
  						   (__v32hi) __Y, 4,
! 						   (__mmask32) - 1);
  }
  
  extern __inline __mmask32
--- 2318,2324 ----
  {
    return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
  						   (__v32hi) __Y, 4,
! 						   (__mmask32) -1);
  }
  
  extern __inline __mmask32
*************** _mm512_cmplt_epu16_mask (__m512i __X, __
*** 2329,2335 ****
  {
    return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
  						   (__v32hi) __Y, 1,
! 						   (__mmask32) - 1);
  }
  
  extern __inline __mmask32
--- 2327,2333 ----
  {
    return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
  						   (__v32hi) __Y, 1,
! 						   (__mmask32) -1);
  }
  
  extern __inline __mmask32
*************** _mm512_cmpge_epu16_mask (__m512i __X, __
*** 2338,2344 ****
  {
    return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
  						   (__v32hi) __Y, 5,
! 						   (__mmask32) - 1);
  }
  
  extern __inline __mmask32
--- 2336,2342 ----
  {
    return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
  						   (__v32hi) __Y, 5,
! 						   (__mmask32) -1);
  }
  
  extern __inline __mmask32
*************** _mm512_cmple_epu16_mask (__m512i __X, __
*** 2347,2353 ****
  {
    return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
  						   (__v32hi) __Y, 2,
! 						   (__mmask32) - 1);
  }
  
  extern __inline __mmask64
--- 2345,2351 ----
  {
    return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
  						   (__v32hi) __Y, 2,
! 						   (__mmask32) -1);
  }
  
  extern __inline __mmask64
*************** _mm512_cmpneq_epi8_mask (__m512i __X, __
*** 2356,2362 ****
  {
    return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
  						  (__v64qi) __Y, 4,
! 						  (__mmask64) - 1);
  }
  
  extern __inline __mmask64
--- 2354,2360 ----
  {
    return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
  						  (__v64qi) __Y, 4,
! 						  (__mmask64) -1);
  }
  
  extern __inline __mmask64
*************** _mm512_cmplt_epi8_mask (__m512i __X, __m
*** 2365,2371 ****
  {
    return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
  						  (__v64qi) __Y, 1,
! 						  (__mmask64) - 1);
  }
  
  extern __inline __mmask64
--- 2363,2369 ----
  {
    return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
  						  (__v64qi) __Y, 1,
! 						  (__mmask64) -1);
  }
  
  extern __inline __mmask64
*************** _mm512_cmpge_epi8_mask (__m512i __X, __m
*** 2374,2380 ****
  {
    return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
  						  (__v64qi) __Y, 5,
! 						  (__mmask64) - 1);
  }
  
  extern __inline __mmask64
--- 2372,2378 ----
  {
    return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
  						  (__v64qi) __Y, 5,
! 						  (__mmask64) -1);
  }
  
  extern __inline __mmask64
*************** _mm512_cmple_epi8_mask (__m512i __X, __m
*** 2383,2389 ****
  {
    return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
  						  (__v64qi) __Y, 2,
! 						  (__mmask64) - 1);
  }
  
  extern __inline __mmask32
--- 2381,2387 ----
  {
    return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
  						  (__v64qi) __Y, 2,
! 						  (__mmask64) -1);
  }
  
  extern __inline __mmask32
*************** _mm512_cmpneq_epi16_mask (__m512i __X, _
*** 2392,2398 ****
  {
    return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
  						  (__v32hi) __Y, 4,
! 						  (__mmask32) - 1);
  }
  
  extern __inline __mmask32
--- 2390,2396 ----
  {
    return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
  						  (__v32hi) __Y, 4,
! 						  (__mmask32) -1);
  }
  
  extern __inline __mmask32
*************** _mm512_cmplt_epi16_mask (__m512i __X, __
*** 2401,2407 ****
  {
    return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
  						  (__v32hi) __Y, 1,
! 						  (__mmask32) - 1);
  }
  
  extern __inline __mmask32
--- 2399,2405 ----
  {
    return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
  						  (__v32hi) __Y, 1,
! 						  (__mmask32) -1);
  }
  
  extern __inline __mmask32
*************** _mm512_cmpge_epi16_mask (__m512i __X, __
*** 2410,2416 ****
  {
    return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
  						  (__v32hi) __Y, 5,
! 						  (__mmask32) - 1);
  }
  
  extern __inline __mmask32
--- 2408,2414 ----
  {
    return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
  						  (__v32hi) __Y, 5,
! 						  (__mmask32) -1);
  }
  
  extern __inline __mmask32
*************** _mm512_cmple_epi16_mask (__m512i __X, __
*** 2419,2425 ****
  {
    return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
  						  (__v32hi) __Y, 2,
! 						  (__mmask32) - 1);
  }
  
  #ifdef __OPTIMIZE__
--- 2417,2489 ----
  {
    return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
  						  (__v32hi) __Y, 2,
! 						  (__mmask32) -1);
! }
! 
! extern __inline __m512i
! __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_packs_epi32 (__m512i __A, __m512i __B)
! {
!   return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
! 						    (__v16si) __B,
! 						    (__v32hi)
! 						    _mm512_setzero_hi (),
! 						    (__mmask32) -1);
! }
! 
! extern __inline __m512i
! __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_maskz_packs_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
! {
!   return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
! 						    (__v16si) __B,
! 						    (__v32hi)
! 						    _mm512_setzero_hi (),
! 						    __M);
! }
! 
! extern __inline __m512i
! __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_packs_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
! 			 __m512i __B)
! {
!   return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
! 						    (__v16si) __B,
! 						    (__v32hi) __W,
! 						    __M);
! }
! 
! extern __inline __m512i
! __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_packus_epi32 (__m512i __A, __m512i __B)
! {
!   return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
! 						    (__v16si) __B,
! 						    (__v32hi)
! 						    _mm512_setzero_hi (),
! 						    (__mmask32) -1);
! }
! 
! extern __inline __m512i
! __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_maskz_packus_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
! {
!   return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
! 						    (__v16si) __B,
! 						    (__v32hi)
! 						    _mm512_setzero_hi (),
! 						    __M);
! }
! 
! extern __inline __m512i
! __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_packus_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
! 			  __m512i __B)
! {
!   return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
! 						    (__v16si) __B,
! 						    (__v32hi) __W,
! 						    __M);
  }
  
  #ifdef __OPTIMIZE__
*************** _mm512_cmp_epu8_mask (__m512i __X, __m51
*** 2746,2817 ****
  }
  
  extern __inline __m512i
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm512_packs_epi32 (__m512i __A, __m512i __B)
- {
-   return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
- 						    (__v16si) __B,
- 						    (__v32hi)
- 						    _mm512_setzero_hi (),
- 						    (__mmask32) -1);
- }
- 
- extern __inline __m512i
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm512_maskz_packs_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
- {
-   return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
- 						    (__v16si) __B,
- 						    (__v32hi)
- 						    _mm512_setzero_hi(),
- 						    __M);
- }
- 
- extern __inline __m512i
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm512_mask_packs_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
- 			 __m512i __B)
- {
-   return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
- 						    (__v16si) __B,
- 						    (__v32hi) __W,
- 						    __M);
- }
- 
- extern __inline __m512i
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm512_packus_epi32 (__m512i __A, __m512i __B)
- {
-   return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
- 						    (__v16si) __B,
- 						    (__v32hi)
- 						    _mm512_setzero_hi (),
- 						    (__mmask32) -1);
- }
- 
- extern __inline __m512i
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm512_maskz_packus_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
- {
-   return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
- 						    (__v16si) __B,
- 						    (__v32hi)
- 						    _mm512_setzero_hi(),
- 						    __M);
- }
- 
- extern __inline __m512i
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm512_mask_packus_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
- 			  __m512i __B)
- {
-   return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
- 						    (__v16si) __B,
- 						    (__v32hi) __W,
- 						    __M);
- }
- 
- extern __inline __m512i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_bslli_epi128 (__m512i __A, const int __N)
  {
--- 2810,2815 ----
diff -Nrcpad gcc-5.4.0/gcc/config/i386/avx512dqintrin.h gcc-5.5.0/gcc/config/i386/avx512dqintrin.h
*** gcc-5.4.0/gcc/config/i386/avx512dqintrin.h	Mon Jan  5 12:33:28 2015
--- gcc-5.5.0/gcc/config/i386/avx512dqintrin.h	Mon Aug 22 18:57:37 2016
*************** _mm512_broadcast_f64x2 (__m128d __A)
*** 41,48 ****
    return (__m512d) __builtin_ia32_broadcastf64x2_512_mask ((__v2df)
  							   __A,
  							   _mm512_undefined_pd(),
! 							   (__mmask8) -
! 							   1);
  }
  
  extern __inline __m512d
--- 41,47 ----
    return (__m512d) __builtin_ia32_broadcastf64x2_512_mask ((__v2df)
  							   __A,
  							   _mm512_undefined_pd(),
! 							   (__mmask8) -1);
  }
  
  extern __inline __m512d
*************** _mm512_broadcast_i64x2 (__m128i __A)
*** 72,80 ****
  {
    return (__m512i) __builtin_ia32_broadcasti64x2_512_mask ((__v2di)
  							   __A,
! 							   _mm512_undefined_si512(),
! 							   (__mmask8) -
! 							   1);
  }
  
  extern __inline __m512i
--- 71,78 ----
  {
    return (__m512i) __builtin_ia32_broadcasti64x2_512_mask ((__v2di)
  							   __A,
! 							   _mm512_undefined_epi32(),
! 							   (__mmask8) -1);
  }
  
  extern __inline __m512i
*************** _mm512_broadcast_f32x2 (__m128 __A)
*** 104,111 ****
  {
    return (__m512) __builtin_ia32_broadcastf32x2_512_mask ((__v4sf) __A,
  							  (__v16sf)_mm512_undefined_ps(),
! 							  (__mmask16) -
! 							  1);
  }
  
  extern __inline __m512
--- 102,108 ----
  {
    return (__m512) __builtin_ia32_broadcastf32x2_512_mask ((__v4sf) __A,
  							  (__v16sf)_mm512_undefined_ps(),
! 							  (__mmask16) -1);
  }
  
  extern __inline __m512
*************** _mm512_broadcast_i32x2 (__m128i __A)
*** 133,141 ****
  {
    return (__m512i) __builtin_ia32_broadcasti32x2_512_mask ((__v4si)
  							   __A,
! 							   (__v16si)_mm512_undefined_si512(),
! 							   (__mmask16)
! 							   -1);
  }
  
  extern __inline __m512i
--- 130,137 ----
  {
    return (__m512i) __builtin_ia32_broadcasti32x2_512_mask ((__v4si)
  							   __A,
! 							   (__v16si)_mm512_undefined_epi32(),
! 							   (__mmask16) -1);
  }
  
  extern __inline __m512i
*************** _mm512_broadcast_f32x8 (__m256 __A)
*** 165,172 ****
  {
    return (__m512) __builtin_ia32_broadcastf32x8_512_mask ((__v8sf) __A,
  							  _mm512_undefined_ps(),
! 							  (__mmask16) -
! 							  1);
  }
  
  extern __inline __m512
--- 161,167 ----
  {
    return (__m512) __builtin_ia32_broadcastf32x8_512_mask ((__v8sf) __A,
  							  _mm512_undefined_ps(),
! 							  (__mmask16) -1);
  }
  
  extern __inline __m512
*************** _mm512_broadcast_i32x8 (__m256i __A)
*** 194,202 ****
  {
    return (__m512i) __builtin_ia32_broadcasti32x8_512_mask ((__v8si)
  							   __A,
! 							   (__v16si)_mm512_undefined_si512(),
! 							   (__mmask16)
! 							   -1);
  }
  
  extern __inline __m512i
--- 189,196 ----
  {
    return (__m512i) __builtin_ia32_broadcasti32x8_512_mask ((__v8si)
  							   __A,
! 							   (__v16si)_mm512_undefined_epi32(),
! 							   (__mmask16) -1);
  }
  
  extern __inline __m512i
*************** _mm512_extractf64x2_pd (__m512d __A, con
*** 1569,1576 ****
  							 __imm,
  							 (__v2df)
  							 _mm_setzero_pd (),
! 							 (__mmask8) -
! 							 1);
  }
  
  extern __inline __m128d
--- 1563,1569 ----
  							 __imm,
  							 (__v2df)
  							 _mm_setzero_pd (),
! 							 (__mmask8) -1);
  }
  
  extern __inline __m128d
*************** _mm512_extracti64x2_epi64 (__m512i __A,
*** 1640,1647 ****
  							 __imm,
  							 (__v2di)
  							 _mm_setzero_di (),
! 							 (__mmask8) -
! 							 1);
  }
  
  extern __inline __m128i
--- 1633,1639 ----
  							 __imm,
  							 (__v2di)
  							 _mm_setzero_di (),
! 							 (__mmask8) -1);
  }
  
  extern __inline __m128i
*************** _mm512_inserti64x2 (__m512i __A, __m128i
*** 1829,1836 ****
  							__imm,
  							(__v8di)
  							_mm512_setzero_si512 (),
! 							(__mmask8) -
! 							1);
  }
  
  extern __inline __m512i
--- 1821,1827 ----
  							__imm,
  							(__v8di)
  							_mm512_setzero_si512 (),
! 							(__mmask8) -1);
  }
  
  extern __inline __m512i
*************** _mm512_insertf64x2 (__m512d __A, __m128d
*** 1869,1876 ****
  							__imm,
  							(__v8df)
  							_mm512_setzero_pd (),
! 							(__mmask8) -
! 							1);
  }
  
  extern __inline __m512d
--- 1860,1866 ----
  							__imm,
  							(__v8df)
  							_mm512_setzero_pd (),
! 							(__mmask8) -1);
  }
  
  extern __inline __m512d
*************** _mm512_fpclass_ps_mask (__m512 __A, cons
*** 1933,1940 ****
  {
    return (__mmask16) __builtin_ia32_fpclassps512_mask ((__v16sf) __A,
  						       __imm,
! 						       (__mmask16) -
! 						       1);
  }
  
  #else
--- 1923,1929 ----
  {
    return (__mmask16) __builtin_ia32_fpclassps512_mask ((__v16sf) __A,
  						       __imm,
! 						       (__mmask16) -1);
  }
  
  #else
diff -Nrcpad gcc-5.4.0/gcc/config/i386/avx512fintrin.h gcc-5.5.0/gcc/config/i386/avx512fintrin.h
*** gcc-5.4.0/gcc/config/i386/avx512fintrin.h	Mon Jan  5 12:33:28 2015
--- gcc-5.5.0/gcc/config/i386/avx512fintrin.h	Thu Jun  1 21:51:51 2017
*************** _mm512_undefined_pd (void)
*** 130,141 ****
  
  extern __inline __m512i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_undefined_si512 (void)
  {
    __m512i __Y = __Y;
    return __Y;
  }
  
  extern __inline __m512i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_set1_epi8 (char __A)
--- 130,143 ----
  
  extern __inline __m512i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_undefined_epi32 (void)
  {
    __m512i __Y = __Y;
    return __Y;
  }
  
+ #define _mm512_undefined_si512 _mm512_undefined_epi32
+ 
  extern __inline __m512i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_set1_epi8 (char __A)
*************** _mm512_sllv_epi32 (__m512i __X, __m512i
*** 549,555 ****
    return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
  						  (__v16si) __Y,
  						  (__v16si)
! 						  _mm512_undefined_si512 (),
  						  (__mmask16) -1);
  }
  
--- 551,557 ----
    return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
  						  (__v16si) __Y,
  						  (__v16si)
! 						  _mm512_undefined_epi32 (),
  						  (__mmask16) -1);
  }
  
*************** _mm512_srav_epi32 (__m512i __X, __m512i
*** 581,587 ****
    return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
  						  (__v16si) __Y,
  						  (__v16si)
! 						  _mm512_undefined_si512 (),
  						  (__mmask16) -1);
  }
  
--- 583,589 ----
    return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
  						  (__v16si) __Y,
  						  (__v16si)
! 						  _mm512_undefined_epi32 (),
  						  (__mmask16) -1);
  }
  
*************** _mm512_srlv_epi32 (__m512i __X, __m512i
*** 613,619 ****
    return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
  						  (__v16si) __Y,
  						  (__v16si)
! 						  _mm512_undefined_si512 (),
  						  (__mmask16) -1);
  }
  
--- 615,621 ----
    return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
  						  (__v16si) __Y,
  						  (__v16si)
! 						  _mm512_undefined_epi32 (),
  						  (__mmask16) -1);
  }
  
*************** _mm512_srav_epi64 (__m512i __X, __m512i
*** 733,739 ****
    return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
  						 (__v8di) __Y,
  						 (__v8di)
! 						 _mm512_undefined_si512 (),
  						 (__mmask8) -1);
  }
  
--- 735,741 ----
    return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
  						 (__v8di) __Y,
  						 (__v8di)
! 						 _mm512_undefined_epi32 (),
  						 (__mmask8) -1);
  }
  
*************** _mm512_srlv_epi64 (__m512i __X, __m512i
*** 765,771 ****
    return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
  						 (__v8di) __Y,
  						 (__v8di)
! 						 _mm512_undefined_si512 (),
  						 (__mmask8) -1);
  }
  
--- 767,773 ----
    return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
  						 (__v8di) __Y,
  						 (__v8di)
! 						 _mm512_undefined_epi32 (),
  						 (__mmask8) -1);
  }
  
*************** _mm512_mul_epi32 (__m512i __X, __m512i _
*** 825,831 ****
    return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
  						  (__v16si) __Y,
  						  (__v8di)
! 						  _mm512_undefined_si512 (),
  						  (__mmask8) -1);
  }
  
--- 827,833 ----
    return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
  						  (__v16si) __Y,
  						  (__v8di)
! 						  _mm512_undefined_epi32 (),
  						  (__mmask8) -1);
  }
  
*************** _mm512_mul_epu32 (__m512i __X, __m512i _
*** 884,890 ****
    return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
  						   (__v16si) __Y,
  						   (__v8di)
! 						   _mm512_undefined_si512 (),
  						   (__mmask8) -1);
  }
  
--- 886,892 ----
    return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
  						   (__v16si) __Y,
  						   (__v8di)
! 						   _mm512_undefined_epi32 (),
  						   (__mmask8) -1);
  }
  
*************** _mm512_slli_epi64 (__m512i __A, unsigned
*** 915,921 ****
  {
    return (__m512i) __builtin_ia32_psllqi512_mask ((__v8di) __A, __B,
  						  (__v8di)
! 						  _mm512_undefined_si512 (),
  						  (__mmask8) -1);
  }
  
--- 917,923 ----
  {
    return (__m512i) __builtin_ia32_psllqi512_mask ((__v8di) __A, __B,
  						  (__v8di)
! 						  _mm512_undefined_epi32 (),
  						  (__mmask8) -1);
  }
  
*************** _mm512_maskz_slli_epi64 (__mmask8 __U, _
*** 941,947 ****
  #else
  #define _mm512_slli_epi64(X, C)						   \
    ((__m512i) __builtin_ia32_psllqi512_mask ((__v8di)(__m512i)(X), (int)(C),\
!     (__v8di)(__m512i)_mm512_undefined_si512 (),\
      (__mmask8)-1))
  
  #define _mm512_mask_slli_epi64(W, U, X, C)				   \
--- 943,949 ----
  #else
  #define _mm512_slli_epi64(X, C)						   \
    ((__m512i) __builtin_ia32_psllqi512_mask ((__v8di)(__m512i)(X), (int)(C),\
!     (__v8di)(__m512i)_mm512_undefined_epi32 (),\
      (__mmask8)-1))
  
  #define _mm512_mask_slli_epi64(W, U, X, C)				   \
*************** _mm512_sll_epi64 (__m512i __A, __m128i _
*** 962,968 ****
    return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
  						 (__v2di) __B,
  						 (__v8di)
! 						 _mm512_undefined_si512 (),
  						 (__mmask8) -1);
  }
  
--- 964,970 ----
    return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
  						 (__v2di) __B,
  						 (__v8di)
! 						 _mm512_undefined_epi32 (),
  						 (__mmask8) -1);
  }
  
*************** _mm512_srli_epi64 (__m512i __A, unsigned
*** 994,1000 ****
  {
    return (__m512i) __builtin_ia32_psrlqi512_mask ((__v8di) __A, __B,
  						  (__v8di)
! 						  _mm512_undefined_si512 (),
  						  (__mmask8) -1);
  }
  
--- 996,1002 ----
  {
    return (__m512i) __builtin_ia32_psrlqi512_mask ((__v8di) __A, __B,
  						  (__v8di)
! 						  _mm512_undefined_epi32 (),
  						  (__mmask8) -1);
  }
  
*************** _mm512_maskz_srli_epi64 (__mmask8 __U, _
*** 1020,1026 ****
  #else
  #define _mm512_srli_epi64(X, C)						   \
    ((__m512i) __builtin_ia32_psrlqi512_mask ((__v8di)(__m512i)(X), (int)(C),\
!     (__v8di)(__m512i)_mm512_undefined_si512 (),\
      (__mmask8)-1))
  
  #define _mm512_mask_srli_epi64(W, U, X, C)				   \
--- 1022,1028 ----
  #else
  #define _mm512_srli_epi64(X, C)						   \
    ((__m512i) __builtin_ia32_psrlqi512_mask ((__v8di)(__m512i)(X), (int)(C),\
!     (__v8di)(__m512i)_mm512_undefined_epi32 (),\
      (__mmask8)-1))
  
  #define _mm512_mask_srli_epi64(W, U, X, C)				   \
*************** _mm512_srl_epi64 (__m512i __A, __m128i _
*** 1041,1047 ****
    return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
  						 (__v2di) __B,
  						 (__v8di)
! 						 _mm512_undefined_si512 (),
  						 (__mmask8) -1);
  }
  
--- 1043,1049 ----
    return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
  						 (__v2di) __B,
  						 (__v8di)
! 						 _mm512_undefined_epi32 (),
  						 (__mmask8) -1);
  }
  
*************** _mm512_srai_epi64 (__m512i __A, unsigned
*** 1073,1079 ****
  {
    return (__m512i) __builtin_ia32_psraqi512_mask ((__v8di) __A, __B,
  						  (__v8di)
! 						  _mm512_undefined_si512 (),
  						  (__mmask8) -1);
  }
  
--- 1075,1081 ----
  {
    return (__m512i) __builtin_ia32_psraqi512_mask ((__v8di) __A, __B,
  						  (__v8di)
! 						  _mm512_undefined_epi32 (),
  						  (__mmask8) -1);
  }
  
*************** _mm512_maskz_srai_epi64 (__mmask8 __U, _
*** 1099,1105 ****
  #else
  #define _mm512_srai_epi64(X, C)						   \
    ((__m512i) __builtin_ia32_psraqi512_mask ((__v8di)(__m512i)(X), (int)(C),\
!     (__v8di)(__m512i)_mm512_undefined_si512 (),\
      (__mmask8)-1))
  
  #define _mm512_mask_srai_epi64(W, U, X, C)				   \
--- 1101,1107 ----
  #else
  #define _mm512_srai_epi64(X, C)						   \
    ((__m512i) __builtin_ia32_psraqi512_mask ((__v8di)(__m512i)(X), (int)(C),\
!     (__v8di)(__m512i)_mm512_undefined_epi32 (),\
      (__mmask8)-1))
  
  #define _mm512_mask_srai_epi64(W, U, X, C)				   \
*************** _mm512_sra_epi64 (__m512i __A, __m128i _
*** 1120,1126 ****
    return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
  						 (__v2di) __B,
  						 (__v8di)
! 						 _mm512_undefined_si512 (),
  						 (__mmask8) -1);
  }
  
--- 1122,1128 ----
    return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
  						 (__v2di) __B,
  						 (__v8di)
! 						 _mm512_undefined_epi32 (),
  						 (__mmask8) -1);
  }
  
*************** _mm512_slli_epi32 (__m512i __A, unsigned
*** 1152,1158 ****
  {
    return (__m512i) __builtin_ia32_pslldi512_mask ((__v16si) __A, __B,
  						  (__v16si)
! 						  _mm512_undefined_si512 (),
  						  (__mmask16) -1);
  }
  
--- 1154,1160 ----
  {
    return (__m512i) __builtin_ia32_pslldi512_mask ((__v16si) __A, __B,
  						  (__v16si)
! 						  _mm512_undefined_epi32 (),
  						  (__mmask16) -1);
  }
  
*************** _mm512_maskz_slli_epi32 (__mmask16 __U,
*** 1178,1184 ****
  #else
  #define _mm512_slli_epi32(X, C)						    \
    ((__m512i) __builtin_ia32_pslldi512_mask ((__v16si)(__m512i)(X), (int)(C),\
!     (__v16si)(__m512i)_mm512_undefined_si512 (),\
      (__mmask16)-1))
  
  #define _mm512_mask_slli_epi32(W, U, X, C)                                  \
--- 1180,1186 ----
  #else
  #define _mm512_slli_epi32(X, C)						    \
    ((__m512i) __builtin_ia32_pslldi512_mask ((__v16si)(__m512i)(X), (int)(C),\
!     (__v16si)(__m512i)_mm512_undefined_epi32 (),\
      (__mmask16)-1))
  
  #define _mm512_mask_slli_epi32(W, U, X, C)                                  \
*************** _mm512_sll_epi32 (__m512i __A, __m128i _
*** 1199,1205 ****
    return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
  						 (__v4si) __B,
  						 (__v16si)
! 						 _mm512_undefined_si512 (),
  						 (__mmask16) -1);
  }
  
--- 1201,1207 ----
    return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
  						 (__v4si) __B,
  						 (__v16si)
! 						 _mm512_undefined_epi32 (),
  						 (__mmask16) -1);
  }
  
*************** _mm512_srli_epi32 (__m512i __A, unsigned
*** 1231,1237 ****
  {
    return (__m512i) __builtin_ia32_psrldi512_mask ((__v16si) __A, __B,
  						  (__v16si)
! 						  _mm512_undefined_si512 (),
  						  (__mmask16) -1);
  }
  
--- 1233,1239 ----
  {
    return (__m512i) __builtin_ia32_psrldi512_mask ((__v16si) __A, __B,
  						  (__v16si)
! 						  _mm512_undefined_epi32 (),
  						  (__mmask16) -1);
  }
  
*************** _mm512_maskz_srli_epi32 (__mmask16 __U,
*** 1257,1263 ****
  #else
  #define _mm512_srli_epi32(X, C)						    \
    ((__m512i) __builtin_ia32_psrldi512_mask ((__v16si)(__m512i)(X), (int)(C),\
!     (__v16si)(__m512i)_mm512_undefined_si512 (),\
      (__mmask16)-1))
  
  #define _mm512_mask_srli_epi32(W, U, X, C)                                  \
--- 1259,1265 ----
  #else
  #define _mm512_srli_epi32(X, C)						    \
    ((__m512i) __builtin_ia32_psrldi512_mask ((__v16si)(__m512i)(X), (int)(C),\
!     (__v16si)(__m512i)_mm512_undefined_epi32 (),\
      (__mmask16)-1))
  
  #define _mm512_mask_srli_epi32(W, U, X, C)                                  \
*************** _mm512_srl_epi32 (__m512i __A, __m128i _
*** 1278,1284 ****
    return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
  						 (__v4si) __B,
  						 (__v16si)
! 						 _mm512_undefined_si512 (),
  						 (__mmask16) -1);
  }
  
--- 1280,1286 ----
    return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
  						 (__v4si) __B,
  						 (__v16si)
! 						 _mm512_undefined_epi32 (),
  						 (__mmask16) -1);
  }
  
*************** _mm512_srai_epi32 (__m512i __A, unsigned
*** 1310,1316 ****
  {
    return (__m512i) __builtin_ia32_psradi512_mask ((__v16si) __A, __B,
  						  (__v16si)
! 						  _mm512_undefined_si512 (),
  						  (__mmask16) -1);
  }
  
--- 1312,1318 ----
  {
    return (__m512i) __builtin_ia32_psradi512_mask ((__v16si) __A, __B,
  						  (__v16si)
! 						  _mm512_undefined_epi32 (),
  						  (__mmask16) -1);
  }
  
*************** _mm512_maskz_srai_epi32 (__mmask16 __U,
*** 1336,1342 ****
  #else
  #define _mm512_srai_epi32(X, C)						    \
    ((__m512i) __builtin_ia32_psradi512_mask ((__v16si)(__m512i)(X), (int)(C),\
!     (__v16si)(__m512i)_mm512_undefined_si512 (),\
      (__mmask16)-1))
  
  #define _mm512_mask_srai_epi32(W, U, X, C)				    \
--- 1338,1344 ----
  #else
  #define _mm512_srai_epi32(X, C)						    \
    ((__m512i) __builtin_ia32_psradi512_mask ((__v16si)(__m512i)(X), (int)(C),\
!     (__v16si)(__m512i)_mm512_undefined_epi32 (),\
      (__mmask16)-1))
  
  #define _mm512_mask_srai_epi32(W, U, X, C)				    \
*************** _mm512_sra_epi32 (__m512i __A, __m128i _
*** 1357,1363 ****
    return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
  						 (__v4si) __B,
  						 (__v16si)
! 						 _mm512_undefined_si512 (),
  						 (__mmask16) -1);
  }
  
--- 1359,1365 ----
    return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
  						 (__v4si) __B,
  						 (__v16si)
! 						 _mm512_undefined_epi32 (),
  						 (__mmask16) -1);
  }
  
*************** _mm_sub_round_ss (__m128 __A, __m128 __B
*** 1436,1501 ****
  #ifdef __OPTIMIZE__
  extern __inline __m512i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_ternarylogic_epi64 (__m512i __A, __m512i __B, __m512i __C, const int imm)
  {
    return (__m512i) __builtin_ia32_pternlogq512_mask ((__v8di) __A,
  						     (__v8di) __B,
! 						     (__v8di) __C, imm,
  						     (__mmask8) -1);
  }
  
  extern __inline __m512i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_mask_ternarylogic_epi64 (__m512i __A, __mmask8 __U, __m512i __B,
! 				__m512i __C, const int imm)
  {
    return (__m512i) __builtin_ia32_pternlogq512_mask ((__v8di) __A,
  						     (__v8di) __B,
! 						     (__v8di) __C, imm,
  						     (__mmask8) __U);
  }
  
  extern __inline __m512i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_maskz_ternarylogic_epi64 (__mmask8 __U, __m512i __A, __m512i __B,
! 				 __m512i __C, const int imm)
  {
    return (__m512i) __builtin_ia32_pternlogq512_maskz ((__v8di) __A,
  						      (__v8di) __B,
  						      (__v8di) __C,
! 						      imm, (__mmask8) __U);
  }
  
  extern __inline __m512i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_ternarylogic_epi32 (__m512i __A, __m512i __B, __m512i __C, const int imm)
  {
    return (__m512i) __builtin_ia32_pternlogd512_mask ((__v16si) __A,
  						     (__v16si) __B,
  						     (__v16si) __C,
! 						     imm, (__mmask16) -1);
  }
  
  extern __inline __m512i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_mask_ternarylogic_epi32 (__m512i __A, __mmask16 __U, __m512i __B,
! 				__m512i __C, const int imm)
  {
    return (__m512i) __builtin_ia32_pternlogd512_mask ((__v16si) __A,
  						     (__v16si) __B,
  						     (__v16si) __C,
! 						     imm, (__mmask16) __U);
  }
  
  extern __inline __m512i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_maskz_ternarylogic_epi32 (__mmask16 __U, __m512i __A, __m512i __B,
! 				 __m512i __C, const int imm)
  {
    return (__m512i) __builtin_ia32_pternlogd512_maskz ((__v16si) __A,
  						      (__v16si) __B,
  						      (__v16si) __C,
! 						      imm, (__mmask16) __U);
  }
  #else
  #define _mm512_ternarylogic_epi64(A, B, C, I)				\
--- 1438,1505 ----
  #ifdef __OPTIMIZE__
  extern __inline __m512i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_ternarylogic_epi64 (__m512i __A, __m512i __B, __m512i __C,
! 			   const int __imm)
  {
    return (__m512i) __builtin_ia32_pternlogq512_mask ((__v8di) __A,
  						     (__v8di) __B,
! 						     (__v8di) __C, __imm,
  						     (__mmask8) -1);
  }
  
  extern __inline __m512i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_mask_ternarylogic_epi64 (__m512i __A, __mmask8 __U, __m512i __B,
! 				__m512i __C, const int __imm)
  {
    return (__m512i) __builtin_ia32_pternlogq512_mask ((__v8di) __A,
  						     (__v8di) __B,
! 						     (__v8di) __C, __imm,
  						     (__mmask8) __U);
  }
  
  extern __inline __m512i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_maskz_ternarylogic_epi64 (__mmask8 __U, __m512i __A, __m512i __B,
! 				 __m512i __C, const int __imm)
  {
    return (__m512i) __builtin_ia32_pternlogq512_maskz ((__v8di) __A,
  						      (__v8di) __B,
  						      (__v8di) __C,
! 						      __imm, (__mmask8) __U);
  }
  
  extern __inline __m512i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_ternarylogic_epi32 (__m512i __A, __m512i __B, __m512i __C,
! 			   const int __imm)
  {
    return (__m512i) __builtin_ia32_pternlogd512_mask ((__v16si) __A,
  						     (__v16si) __B,
  						     (__v16si) __C,
! 						     __imm, (__mmask16) -1);
  }
  
  extern __inline __m512i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_mask_ternarylogic_epi32 (__m512i __A, __mmask16 __U, __m512i __B,
! 				__m512i __C, const int __imm)
  {
    return (__m512i) __builtin_ia32_pternlogd512_mask ((__v16si) __A,
  						     (__v16si) __B,
  						     (__v16si) __C,
! 						     __imm, (__mmask16) __U);
  }
  
  extern __inline __m512i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_maskz_ternarylogic_epi32 (__mmask16 __U, __m512i __A, __m512i __B,
! 				 __m512i __C, const int __imm)
  {
    return (__m512i) __builtin_ia32_pternlogd512_maskz ((__v16si) __A,
  						      (__v16si) __B,
  						      (__v16si) __C,
! 						      __imm, (__mmask16) __U);
  }
  #else
  #define _mm512_ternarylogic_epi64(A, B, C, I)				\
*************** _mm512_cvtepi8_epi32 (__m128i __A)
*** 1778,1784 ****
  {
    return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
  						    (__v16si)
! 						    _mm512_undefined_si512 (),
  						    (__mmask16) -1);
  }
  
--- 1782,1788 ----
  {
    return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
  						    (__v16si)
! 						    _mm512_undefined_epi32 (),
  						    (__mmask16) -1);
  }
  
*************** _mm512_cvtepi8_epi64 (__m128i __A)
*** 1807,1813 ****
  {
    return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
  						    (__v8di)
! 						    _mm512_undefined_si512 (),
  						    (__mmask8) -1);
  }
  
--- 1811,1817 ----
  {
    return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
  						    (__v8di)
! 						    _mm512_undefined_epi32 (),
  						    (__mmask8) -1);
  }
  
*************** _mm512_cvtepi16_epi32 (__m256i __A)
*** 1836,1842 ****
  {
    return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
  						    (__v16si)
! 						    _mm512_undefined_si512 (),
  						    (__mmask16) -1);
  }
  
--- 1840,1846 ----
  {
    return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
  						    (__v16si)
! 						    _mm512_undefined_epi32 (),
  						    (__mmask16) -1);
  }
  
*************** _mm512_cvtepi16_epi64 (__m128i __A)
*** 1865,1871 ****
  {
    return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
  						    (__v8di)
! 						    _mm512_undefined_si512 (),
  						    (__mmask8) -1);
  }
  
--- 1869,1875 ----
  {
    return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
  						    (__v8di)
! 						    _mm512_undefined_epi32 (),
  						    (__mmask8) -1);
  }
  
*************** _mm512_cvtepi32_epi64 (__m256i __X)
*** 1894,1900 ****
  {
    return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
  						    (__v8di)
! 						    _mm512_undefined_si512 (),
  						    (__mmask8) -1);
  }
  
--- 1898,1904 ----
  {
    return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
  						    (__v8di)
! 						    _mm512_undefined_epi32 (),
  						    (__mmask8) -1);
  }
  
*************** _mm512_cvtepu8_epi32 (__m128i __A)
*** 1923,1929 ****
  {
    return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
  						    (__v16si)
! 						    _mm512_undefined_si512 (),
  						    (__mmask16) -1);
  }
  
--- 1927,1933 ----
  {
    return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
  						    (__v16si)
! 						    _mm512_undefined_epi32 (),
  						    (__mmask16) -1);
  }
  
*************** _mm512_cvtepu8_epi64 (__m128i __A)
*** 1952,1958 ****
  {
    return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
  						    (__v8di)
! 						    _mm512_undefined_si512 (),
  						    (__mmask8) -1);
  }
  
--- 1956,1962 ----
  {
    return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
  						    (__v8di)
! 						    _mm512_undefined_epi32 (),
  						    (__mmask8) -1);
  }
  
*************** _mm512_cvtepu16_epi32 (__m256i __A)
*** 1981,1987 ****
  {
    return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
  						    (__v16si)
! 						    _mm512_undefined_si512 (),
  						    (__mmask16) -1);
  }
  
--- 1985,1991 ----
  {
    return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
  						    (__v16si)
! 						    _mm512_undefined_epi32 (),
  						    (__mmask16) -1);
  }
  
*************** _mm512_cvtepu16_epi64 (__m128i __A)
*** 2010,2016 ****
  {
    return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
  						    (__v8di)
! 						    _mm512_undefined_si512 (),
  						    (__mmask8) -1);
  }
  
--- 2014,2020 ----
  {
    return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
  						    (__v8di)
! 						    _mm512_undefined_epi32 (),
  						    (__mmask8) -1);
  }
  
*************** _mm512_cvtepu32_epi64 (__m256i __X)
*** 2039,2045 ****
  {
    return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
  						    (__v8di)
! 						    _mm512_undefined_si512 (),
  						    (__mmask8) -1);
  }
  
--- 2043,2049 ----
  {
    return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
  						    (__v8di)
! 						    _mm512_undefined_epi32 (),
  						    (__mmask8) -1);
  }
  
*************** _mm512_abs_epi64 (__m512i __A)
*** 3407,3413 ****
  {
    return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
  						 (__v8di)
! 						 _mm512_undefined_si512 (),
  						 (__mmask8) -1);
  }
  
--- 3411,3417 ----
  {
    return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
  						 (__v8di)
! 						 _mm512_undefined_epi32 (),
  						 (__mmask8) -1);
  }
  
*************** _mm512_abs_epi32 (__m512i __A)
*** 3436,3442 ****
  {
    return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
  						 (__v16si)
! 						 _mm512_undefined_si512 (),
  						 (__mmask16) -1);
  }
  
--- 3440,3446 ----
  {
    return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
  						 (__v16si)
! 						 _mm512_undefined_epi32 (),
  						 (__mmask16) -1);
  }
  
*************** _mm512_broadcastd_epi32 (__m128i __A)
*** 3521,3527 ****
  {
    return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
  						  (__v16si)
! 						  _mm512_undefined_si512 (),
  						  (__mmask16) -1);
  }
  
--- 3525,3531 ----
  {
    return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
  						  (__v16si)
! 						  _mm512_undefined_epi32 (),
  						  (__mmask16) -1);
  }
  
*************** _mm512_set1_epi32 (int __A)
*** 3549,3555 ****
  {
    return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A,
  							   (__v16si)
! 							   _mm512_undefined_si512 (),
  							   (__mmask16)(-1));
  }
  
--- 3553,3559 ----
  {
    return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A,
  							   (__v16si)
! 							   _mm512_undefined_epi32 (),
  							   (__mmask16)(-1));
  }
  
*************** _mm512_broadcastq_epi64 (__m128i __A)
*** 3577,3583 ****
  {
    return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
  						  (__v8di)
! 						  _mm512_undefined_si512 (),
  						  (__mmask8) -1);
  }
  
--- 3581,3587 ----
  {
    return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
  						  (__v8di)
! 						  _mm512_undefined_epi32 (),
  						  (__mmask8) -1);
  }
  
*************** _mm512_set1_epi64 (long long __A)
*** 3605,3611 ****
  {
    return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A,
  							   (__v8di)
! 							   _mm512_undefined_si512 (),
  							   (__mmask8)(-1));
  }
  
--- 3609,3615 ----
  {
    return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A,
  							   (__v8di)
! 							   _mm512_undefined_epi32 (),
  							   (__mmask8)(-1));
  }
  
*************** _mm512_broadcast_i32x4 (__m128i __A)
*** 3662,3668 ****
  {
    return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
  						      (__v16si)
! 						      _mm512_undefined_si512 (),
  						      (__mmask16) -1);
  }
  
--- 3666,3672 ----
  {
    return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
  						      (__v16si)
! 						      _mm512_undefined_epi32 (),
  						      (__mmask16) -1);
  }
  
*************** _mm512_broadcast_i64x4 (__m256i __A)
*** 3720,3726 ****
  {
    return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
  						      (__v8di)
! 						      _mm512_undefined_si512 (),
  						      (__mmask8) -1);
  }
  
--- 3724,3730 ----
  {
    return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
  						      (__v8di)
! 						      _mm512_undefined_epi32 (),
  						      (__mmask8) -1);
  }
  
*************** _mm512_shuffle_epi32 (__m512i __A, _MM_P
*** 3841,3847 ****
    return (__m512i) __builtin_ia32_pshufd512_mask ((__v16si) __A,
  						  __mask,
  						  (__v16si)
! 						  _mm512_undefined_si512 (),
  						  (__mmask16) -1);
  }
  
--- 3845,3851 ----
    return (__m512i) __builtin_ia32_pshufd512_mask ((__v16si) __A,
  						  __mask,
  						  (__v16si)
! 						  _mm512_undefined_epi32 (),
  						  (__mmask16) -1);
  }
  
*************** _mm512_shuffle_i64x2 (__m512i __A, __m51
*** 3874,3880 ****
    return (__m512i) __builtin_ia32_shuf_i64x2_mask ((__v8di) __A,
  						   (__v8di) __B, __imm,
  						   (__v8di)
! 						   _mm512_undefined_si512 (),
  						   (__mmask8) -1);
  }
  
--- 3878,3884 ----
    return (__m512i) __builtin_ia32_shuf_i64x2_mask ((__v8di) __A,
  						   (__v8di) __B, __imm,
  						   (__v8di)
! 						   _mm512_undefined_epi32 (),
  						   (__mmask8) -1);
  }
  
*************** _mm512_shuffle_i32x4 (__m512i __A, __m51
*** 3909,3915 ****
  						   (__v16si) __B,
  						   __imm,
  						   (__v16si)
! 						   _mm512_undefined_si512 (),
  						   (__mmask16) -1);
  }
  
--- 3913,3919 ----
  						   (__v16si) __B,
  						   __imm,
  						   (__v16si)
! 						   _mm512_undefined_epi32 (),
  						   (__mmask16) -1);
  }
  
*************** _mm512_maskz_shuffle_f32x4 (__mmask16 __
*** 4009,4015 ****
  #else
  #define _mm512_shuffle_epi32(X, C)                                      \
    ((__m512i)  __builtin_ia32_pshufd512_mask ((__v16si)(__m512i)(X), (int)(C),\
!     (__v16si)(__m512i)_mm512_undefined_si512 (),\
      (__mmask16)-1))
  
  #define _mm512_mask_shuffle_epi32(W, U, X, C)                           \
--- 4013,4019 ----
  #else
  #define _mm512_shuffle_epi32(X, C)                                      \
    ((__m512i)  __builtin_ia32_pshufd512_mask ((__v16si)(__m512i)(X), (int)(C),\
!     (__v16si)(__m512i)_mm512_undefined_epi32 (),\
      (__mmask16)-1))
  
  #define _mm512_mask_shuffle_epi32(W, U, X, C)                           \
*************** _mm512_maskz_shuffle_f32x4 (__mmask16 __
*** 4025,4031 ****
  #define _mm512_shuffle_i64x2(X, Y, C)                                   \
    ((__m512i)  __builtin_ia32_shuf_i64x2_mask ((__v8di)(__m512i)(X),     \
        (__v8di)(__m512i)(Y), (int)(C),\
!     (__v8di)(__m512i)_mm512_undefined_si512 (),\
      (__mmask8)-1))
  
  #define _mm512_mask_shuffle_i64x2(W, U, X, Y, C)                        \
--- 4029,4035 ----
  #define _mm512_shuffle_i64x2(X, Y, C)                                   \
    ((__m512i)  __builtin_ia32_shuf_i64x2_mask ((__v8di)(__m512i)(X),     \
        (__v8di)(__m512i)(Y), (int)(C),\
!     (__v8di)(__m512i)_mm512_undefined_epi32 (),\
      (__mmask8)-1))
  
  #define _mm512_mask_shuffle_i64x2(W, U, X, Y, C)                        \
*************** _mm512_maskz_shuffle_f32x4 (__mmask16 __
*** 4043,4049 ****
  #define _mm512_shuffle_i32x4(X, Y, C)                                   \
    ((__m512i)  __builtin_ia32_shuf_i32x4_mask ((__v16si)(__m512i)(X),    \
        (__v16si)(__m512i)(Y), (int)(C),\
!     (__v16si)(__m512i)_mm512_undefined_si512 (),\
      (__mmask16)-1))
  
  #define _mm512_mask_shuffle_i32x4(W, U, X, Y, C)                        \
--- 4047,4053 ----
  #define _mm512_shuffle_i32x4(X, Y, C)                                   \
    ((__m512i)  __builtin_ia32_shuf_i32x4_mask ((__v16si)(__m512i)(X),    \
        (__v16si)(__m512i)(Y), (int)(C),\
!     (__v16si)(__m512i)_mm512_undefined_epi32 (),\
      (__mmask16)-1))
  
  #define _mm512_mask_shuffle_i32x4(W, U, X, Y, C)                        \
*************** _mm512_rolv_epi32 (__m512i __A, __m512i
*** 4102,4108 ****
    return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
  						  (__v16si) __B,
  						  (__v16si)
! 						  _mm512_undefined_si512 (),
  						  (__mmask16) -1);
  }
  
--- 4106,4112 ----
    return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
  						  (__v16si) __B,
  						  (__v16si)
! 						  _mm512_undefined_epi32 (),
  						  (__mmask16) -1);
  }
  
*************** _mm512_rorv_epi32 (__m512i __A, __m512i
*** 4134,4140 ****
    return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
  						  (__v16si) __B,
  						  (__v16si)
! 						  _mm512_undefined_si512 (),
  						  (__mmask16) -1);
  }
  
--- 4138,4144 ----
    return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
  						  (__v16si) __B,
  						  (__v16si)
! 						  _mm512_undefined_epi32 (),
  						  (__mmask16) -1);
  }
  
*************** _mm512_rolv_epi64 (__m512i __A, __m512i
*** 4166,4172 ****
    return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
  						  (__v8di) __B,
  						  (__v8di)
! 						  _mm512_undefined_si512 (),
  						  (__mmask8) -1);
  }
  
--- 4170,4176 ----
    return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
  						  (__v8di) __B,
  						  (__v8di)
! 						  _mm512_undefined_epi32 (),
  						  (__mmask8) -1);
  }
  
*************** _mm512_rorv_epi64 (__m512i __A, __m512i
*** 4198,4204 ****
    return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
  						  (__v8di) __B,
  						  (__v8di)
! 						  _mm512_undefined_si512 (),
  						  (__mmask8) -1);
  }
  
--- 4202,4208 ----
    return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
  						  (__v8di) __B,
  						  (__v8di)
! 						  _mm512_undefined_epi32 (),
  						  (__mmask8) -1);
  }
  
*************** _mm512_cvtt_roundps_epi32 (__m512 __A, c
*** 4390,4396 ****
  {
    return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
  						     (__v16si)
! 						     _mm512_undefined_si512 (),
  						     (__mmask16) -1, __R);
  }
  
--- 4394,4400 ----
  {
    return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
  						     (__v16si)
! 						     _mm512_undefined_epi32 (),
  						     (__mmask16) -1, __R);
  }
  
*************** _mm512_cvtt_roundps_epu32 (__m512 __A, c
*** 4420,4426 ****
  {
    return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
  						      (__v16si)
! 						      _mm512_undefined_si512 (),
  						      (__mmask16) -1, __R);
  }
  
--- 4424,4430 ----
  {
    return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
  						      (__v16si)
! 						      _mm512_undefined_epi32 (),
  						      (__mmask16) -1, __R);
  }
  
*************** _mm512_maskz_cvtt_roundps_epu32 (__mmask
*** 4445,4451 ****
  }
  #else
  #define _mm512_cvtt_roundps_epi32(A, B)		     \
!     ((__m512i)__builtin_ia32_cvttps2dq512_mask(A, (__v16si)_mm512_undefined_si512 (), -1, B))
  
  #define _mm512_mask_cvtt_roundps_epi32(W, U, A, B)   \
      ((__m512i)__builtin_ia32_cvttps2dq512_mask(A, (__v16si)(W), U, B))
--- 4449,4455 ----
  }
  #else
  #define _mm512_cvtt_roundps_epi32(A, B)		     \
!     ((__m512i)__builtin_ia32_cvttps2dq512_mask(A, (__v16si)_mm512_undefined_epi32 (), -1, B))
  
  #define _mm512_mask_cvtt_roundps_epi32(W, U, A, B)   \
      ((__m512i)__builtin_ia32_cvttps2dq512_mask(A, (__v16si)(W), U, B))
*************** _mm512_maskz_cvtt_roundps_epu32 (__mmask
*** 4454,4460 ****
      ((__m512i)__builtin_ia32_cvttps2dq512_mask(A, (__v16si)_mm512_setzero_si512 (), U, B))
  
  #define _mm512_cvtt_roundps_epu32(A, B)		     \
!     ((__m512i)__builtin_ia32_cvttps2udq512_mask(A, (__v16si)_mm512_undefined_si512 (), -1, B))
  
  #define _mm512_mask_cvtt_roundps_epu32(W, U, A, B)   \
      ((__m512i)__builtin_ia32_cvttps2udq512_mask(A, (__v16si)(W), U, B))
--- 4458,4464 ----
      ((__m512i)__builtin_ia32_cvttps2dq512_mask(A, (__v16si)_mm512_setzero_si512 (), U, B))
  
  #define _mm512_cvtt_roundps_epu32(A, B)		     \
!     ((__m512i)__builtin_ia32_cvttps2udq512_mask(A, (__v16si)_mm512_undefined_epi32 (), -1, B))
  
  #define _mm512_mask_cvtt_roundps_epu32(W, U, A, B)   \
      ((__m512i)__builtin_ia32_cvttps2udq512_mask(A, (__v16si)(W), U, B))
*************** _mm512_cvt_roundps_epi32 (__m512 __A, co
*** 4470,4476 ****
  {
    return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
  						    (__v16si)
! 						    _mm512_undefined_si512 (),
  						    (__mmask16) -1, __R);
  }
  
--- 4474,4480 ----
  {
    return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
  						    (__v16si)
! 						    _mm512_undefined_epi32 (),
  						    (__mmask16) -1, __R);
  }
  
*************** _mm512_cvt_roundps_epu32 (__m512 __A, co
*** 4500,4506 ****
  {
    return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
  						     (__v16si)
! 						     _mm512_undefined_si512 (),
  						     (__mmask16) -1, __R);
  }
  
--- 4504,4510 ----
  {
    return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
  						     (__v16si)
! 						     _mm512_undefined_epi32 (),
  						     (__mmask16) -1, __R);
  }
  
*************** _mm512_maskz_cvt_roundps_epu32 (__mmask1
*** 4525,4531 ****
  }
  #else
  #define _mm512_cvt_roundps_epi32(A, B)		    \
!     ((__m512i)__builtin_ia32_cvtps2dq512_mask(A, (__v16si)_mm512_undefined_si512 (), -1, B))
  
  #define _mm512_mask_cvt_roundps_epi32(W, U, A, B)   \
      ((__m512i)__builtin_ia32_cvtps2dq512_mask(A, (__v16si)(W), U, B))
--- 4529,4535 ----
  }
  #else
  #define _mm512_cvt_roundps_epi32(A, B)		    \
!     ((__m512i)__builtin_ia32_cvtps2dq512_mask(A, (__v16si)_mm512_undefined_epi32 (), -1, B))
  
  #define _mm512_mask_cvt_roundps_epi32(W, U, A, B)   \
      ((__m512i)__builtin_ia32_cvtps2dq512_mask(A, (__v16si)(W), U, B))
*************** _mm512_maskz_cvt_roundps_epu32 (__mmask1
*** 4534,4540 ****
      ((__m512i)__builtin_ia32_cvtps2dq512_mask(A, (__v16si)_mm512_setzero_si512 (), U, B))
  
  #define _mm512_cvt_roundps_epu32(A, B)		    \
!     ((__m512i)__builtin_ia32_cvtps2udq512_mask(A, (__v16si)_mm512_undefined_si512 (), -1, B))
  
  #define _mm512_mask_cvt_roundps_epu32(W, U, A, B)   \
      ((__m512i)__builtin_ia32_cvtps2udq512_mask(A, (__v16si)(W), U, B))
--- 4538,4544 ----
      ((__m512i)__builtin_ia32_cvtps2dq512_mask(A, (__v16si)_mm512_setzero_si512 (), U, B))
  
  #define _mm512_cvt_roundps_epu32(A, B)		    \
!     ((__m512i)__builtin_ia32_cvtps2udq512_mask(A, (__v16si)_mm512_undefined_epi32 (), -1, B))
  
  #define _mm512_mask_cvt_roundps_epu32(W, U, A, B)   \
      ((__m512i)__builtin_ia32_cvtps2udq512_mask(A, (__v16si)(W), U, B))
*************** extern __inline __m256i
*** 4903,4909 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_cvtsepi64_epi32 (__m512i __A)
  {
-   __v8si __O;
    return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
  						   (__v8si)
  						   _mm256_undefined_si256 (),
--- 4907,4912 ----
*************** _mm512_inserti64x4 (__m512i __A, __m256i
*** 5556,5562 ****
  						    (__v4di) __B,
  						    __imm,
  						    (__v8di)
! 						    _mm512_undefined_si512 (),
  						    (__mmask8) -1);
  }
  
--- 5559,5565 ----
  						    (__v4di) __B,
  						    __imm,
  						    (__v8di)
! 						    _mm512_undefined_epi32 (),
  						    (__mmask8) -1);
  }
  
*************** _mm512_maskz_insertf64x4 (__mmask8 __U,
*** 5651,5657 ****
  #define _mm512_inserti64x4(X, Y, C)                                     \
    ((__m512i) __builtin_ia32_inserti64x4_mask ((__v8di)(__m512i) (X),    \
      (__v4di)(__m256i) (Y), (int) (C),					\
!     (__v8di)(__m512i)_mm512_undefined_si512 (),				\
      (__mmask8)-1))
  
  #define _mm512_mask_inserti64x4(W, U, X, Y, C)                          \
--- 5654,5660 ----
  #define _mm512_inserti64x4(X, Y, C)                                     \
    ((__m512i) __builtin_ia32_inserti64x4_mask ((__v8di)(__m512i) (X),    \
      (__v4di)(__m256i) (Y), (int) (C),					\
!     (__v8di)(__m512i)_mm512_undefined_epi32 (),				\
      (__mmask8)-1))
  
  #define _mm512_mask_inserti64x4(W, U, X, Y, C)                          \
*************** _mm512_permutex_epi64 (__m512i __X, cons
*** 6177,6183 ****
  {
    return (__m512i) __builtin_ia32_permdi512_mask ((__v8di) __X, __I,
  						  (__v8di)
! 						  _mm512_undefined_si512 (),
  						  (__mmask8) (-1));
  }
  
--- 6180,6186 ----
  {
    return (__m512i) __builtin_ia32_permdi512_mask ((__v8di) __X, __I,
  						  (__v8di)
! 						  _mm512_undefined_epi32 (),
  						  (__mmask8) (-1));
  }
  
*************** _mm512_maskz_permutex_pd (__mmask8 __U,
*** 6248,6254 ****
    ((__m512i) __builtin_ia32_permdi512_mask ((__v8di)(__m512i)(X), \
  					    (int)(I),             \
  					    (__v8di)(__m512i)	  \
! 					    (_mm512_undefined_si512 ()),\
  					    (__mmask8)(-1)))
  
  #define _mm512_maskz_permutex_epi64(M, X, I)                 \
--- 6251,6257 ----
    ((__m512i) __builtin_ia32_permdi512_mask ((__v8di)(__m512i)(X), \
  					    (int)(I),             \
  					    (__v8di)(__m512i)	  \
! 					    (_mm512_undefined_epi32 ()),\
  					    (__mmask8)(-1)))
  
  #define _mm512_maskz_permutex_epi64(M, X, I)                 \
*************** _mm512_permutexvar_epi64 (__m512i __X, _
*** 6283,6289 ****
    return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
  						     (__v8di) __X,
  						     (__v8di)
! 						     _mm512_undefined_si512 (),
  						     (__mmask8) -1);
  }
  
--- 6286,6292 ----
    return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
  						     (__v8di) __X,
  						     (__v8di)
! 						     _mm512_undefined_epi32 (),
  						     (__mmask8) -1);
  }
  
*************** _mm512_permutexvar_epi32 (__m512i __X, _
*** 6316,6322 ****
    return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
  						     (__v16si) __X,
  						     (__v16si)
! 						     _mm512_undefined_si512 (),
  						     (__mmask16) -1);
  }
  
--- 6319,6325 ----
    return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
  						     (__v16si) __X,
  						     (__v16si)
! 						     _mm512_undefined_epi32 (),
  						     (__mmask16) -1);
  }
  
*************** _mm512_rol_epi32 (__m512i __A, const int
*** 6891,6897 ****
  {
    return (__m512i) __builtin_ia32_prold512_mask ((__v16si) __A, __B,
  						 (__v16si)
! 						 _mm512_undefined_si512 (),
  						 (__mmask16) -1);
  }
  
--- 6894,6900 ----
  {
    return (__m512i) __builtin_ia32_prold512_mask ((__v16si) __A, __B,
  						 (__v16si)
! 						 _mm512_undefined_epi32 (),
  						 (__mmask16) -1);
  }
  
*************** _mm512_ror_epi32 (__m512i __A, int __B)
*** 6920,6926 ****
  {
    return (__m512i) __builtin_ia32_prord512_mask ((__v16si) __A, __B,
  						 (__v16si)
! 						 _mm512_undefined_si512 (),
  						 (__mmask16) -1);
  }
  
--- 6923,6929 ----
  {
    return (__m512i) __builtin_ia32_prord512_mask ((__v16si) __A, __B,
  						 (__v16si)
! 						 _mm512_undefined_epi32 (),
  						 (__mmask16) -1);
  }
  
*************** _mm512_rol_epi64 (__m512i __A, const int
*** 6949,6955 ****
  {
    return (__m512i) __builtin_ia32_prolq512_mask ((__v8di) __A, __B,
  						 (__v8di)
! 						 _mm512_undefined_si512 (),
  						 (__mmask8) -1);
  }
  
--- 6952,6958 ----
  {
    return (__m512i) __builtin_ia32_prolq512_mask ((__v8di) __A, __B,
  						 (__v8di)
! 						 _mm512_undefined_epi32 (),
  						 (__mmask8) -1);
  }
  
*************** _mm512_ror_epi64 (__m512i __A, int __B)
*** 6978,6984 ****
  {
    return (__m512i) __builtin_ia32_prorq512_mask ((__v8di) __A, __B,
  						 (__v8di)
! 						 _mm512_undefined_si512 (),
  						 (__mmask8) -1);
  }
  
--- 6981,6987 ----
  {
    return (__m512i) __builtin_ia32_prorq512_mask ((__v8di) __A, __B,
  						 (__v8di)
! 						 _mm512_undefined_epi32 (),
  						 (__mmask8) -1);
  }
  
*************** _mm512_maskz_ror_epi64 (__mmask8 __U, __
*** 7005,7011 ****
  #define _mm512_rol_epi32(A, B)						  \
      ((__m512i)__builtin_ia32_prold512_mask ((__v16si)(__m512i)(A),	  \
  					    (int)(B),			  \
! 					    (__v16si)_mm512_undefined_si512 (), \
  					    (__mmask16)(-1)))
  #define _mm512_mask_rol_epi32(W, U, A, B)				  \
      ((__m512i)__builtin_ia32_prold512_mask ((__v16si)(__m512i)(A),	  \
--- 7008,7014 ----
  #define _mm512_rol_epi32(A, B)						  \
      ((__m512i)__builtin_ia32_prold512_mask ((__v16si)(__m512i)(A),	  \
  					    (int)(B),			  \
! 					    (__v16si)_mm512_undefined_epi32 (), \
  					    (__mmask16)(-1)))
  #define _mm512_mask_rol_epi32(W, U, A, B)				  \
      ((__m512i)__builtin_ia32_prold512_mask ((__v16si)(__m512i)(A),	  \
*************** _mm512_maskz_ror_epi64 (__mmask8 __U, __
*** 7020,7026 ****
  #define _mm512_ror_epi32(A, B)						  \
      ((__m512i)__builtin_ia32_prord512_mask ((__v16si)(__m512i)(A),	  \
  					    (int)(B),			  \
! 					    (__v16si)_mm512_undefined_si512 (), \
  					    (__mmask16)(-1)))
  #define _mm512_mask_ror_epi32(W, U, A, B)				  \
      ((__m512i)__builtin_ia32_prord512_mask ((__v16si)(__m512i)(A),	  \
--- 7023,7029 ----
  #define _mm512_ror_epi32(A, B)						  \
      ((__m512i)__builtin_ia32_prord512_mask ((__v16si)(__m512i)(A),	  \
  					    (int)(B),			  \
! 					    (__v16si)_mm512_undefined_epi32 (), \
  					    (__mmask16)(-1)))
  #define _mm512_mask_ror_epi32(W, U, A, B)				  \
      ((__m512i)__builtin_ia32_prord512_mask ((__v16si)(__m512i)(A),	  \
*************** _mm512_maskz_ror_epi64 (__mmask8 __U, __
*** 7035,7041 ****
  #define _mm512_rol_epi64(A, B)						  \
      ((__m512i)__builtin_ia32_prolq512_mask ((__v8di)(__m512i)(A),	  \
  					    (int)(B),			  \
! 					    (__v8di)_mm512_undefined_si512 (),  \
  					    (__mmask8)(-1)))
  #define _mm512_mask_rol_epi64(W, U, A, B)				  \
      ((__m512i)__builtin_ia32_prolq512_mask ((__v8di)(__m512i)(A),	  \
--- 7038,7044 ----
  #define _mm512_rol_epi64(A, B)						  \
      ((__m512i)__builtin_ia32_prolq512_mask ((__v8di)(__m512i)(A),	  \
  					    (int)(B),			  \
! 					    (__v8di)_mm512_undefined_epi32 (),  \
  					    (__mmask8)(-1)))
  #define _mm512_mask_rol_epi64(W, U, A, B)				  \
      ((__m512i)__builtin_ia32_prolq512_mask ((__v8di)(__m512i)(A),	  \
*************** _mm512_maskz_ror_epi64 (__mmask8 __U, __
*** 7051,7057 ****
  #define _mm512_ror_epi64(A, B)						  \
      ((__m512i)__builtin_ia32_prorq512_mask ((__v8di)(__m512i)(A),	  \
  					    (int)(B),			  \
! 					    (__v8di)_mm512_undefined_si512 (),  \
  					    (__mmask8)(-1)))
  #define _mm512_mask_ror_epi64(W, U, A, B)				  \
      ((__m512i)__builtin_ia32_prorq512_mask ((__v8di)(__m512i)(A),	  \
--- 7054,7060 ----
  #define _mm512_ror_epi64(A, B)						  \
      ((__m512i)__builtin_ia32_prorq512_mask ((__v8di)(__m512i)(A),	  \
  					    (int)(B),			  \
! 					    (__v8di)_mm512_undefined_epi32 (),  \
  					    (__mmask8)(-1)))
  #define _mm512_mask_ror_epi64(W, U, A, B)				  \
      ((__m512i)__builtin_ia32_prorq512_mask ((__v8di)(__m512i)(A),	  \
*************** _mm512_andnot_si512 (__m512i __A, __m512
*** 7134,7140 ****
    return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
  						  (__v16si) __B,
  						  (__v16si)
! 						  _mm512_undefined_si512 (),
  						  (__mmask16) -1);
  }
  
--- 7137,7143 ----
    return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
  						  (__v16si) __B,
  						  (__v16si)
! 						  _mm512_undefined_epi32 (),
  						  (__mmask16) -1);
  }
  
*************** _mm512_andnot_epi32 (__m512i __A, __m512
*** 7145,7151 ****
    return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
  						  (__v16si) __B,
  						  (__v16si)
! 						  _mm512_undefined_si512 (),
  						  (__mmask16) -1);
  }
  
--- 7148,7154 ----
    return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
  						  (__v16si) __B,
  						  (__v16si)
! 						  _mm512_undefined_epi32 (),
  						  (__mmask16) -1);
  }
  
*************** _mm512_andnot_epi64 (__m512i __A, __m512
*** 7177,7183 ****
    return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
  						  (__v8di) __B,
  						  (__v8di)
! 						  _mm512_undefined_si512 (),
  						  (__mmask8) -1);
  }
  
--- 7180,7186 ----
    return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
  						  (__v8di) __B,
  						  (__v8di)
! 						  _mm512_undefined_epi32 (),
  						  (__mmask8) -1);
  }
  
*************** _mm512_unpackhi_epi32 (__m512i __A, __m5
*** 7275,7281 ****
    return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
  						     (__v16si) __B,
  						     (__v16si)
! 						     _mm512_undefined_si512 (),
  						     (__mmask16) -1);
  }
  
--- 7278,7284 ----
    return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
  						     (__v16si) __B,
  						     (__v16si)
! 						     _mm512_undefined_epi32 (),
  						     (__mmask16) -1);
  }
  
*************** _mm512_unpackhi_epi64 (__m512i __A, __m5
*** 7308,7314 ****
    return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
  						      (__v8di) __B,
  						      (__v8di)
! 						      _mm512_undefined_si512 (),
  						      (__mmask8) -1);
  }
  
--- 7311,7317 ----
    return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
  						      (__v8di) __B,
  						      (__v8di)
! 						      _mm512_undefined_epi32 (),
  						      (__mmask8) -1);
  }
  
*************** _mm512_unpacklo_epi32 (__m512i __A, __m5
*** 7340,7346 ****
    return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
  						     (__v16si) __B,
  						     (__v16si)
! 						     _mm512_undefined_si512 (),
  						     (__mmask16) -1);
  }
  
--- 7343,7349 ----
    return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
  						     (__v16si) __B,
  						     (__v16si)
! 						     _mm512_undefined_epi32 (),
  						     (__mmask16) -1);
  }
  
*************** _mm512_unpacklo_epi64 (__m512i __A, __m5
*** 7373,7379 ****
    return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
  						      (__v8di) __B,
  						      (__v8di)
! 						      _mm512_undefined_si512 (),
  						      (__mmask8) -1);
  }
  
--- 7376,7382 ----
    return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
  						      (__v8di) __B,
  						      (__v8di)
! 						      _mm512_undefined_epi32 (),
  						      (__mmask8) -1);
  }
  
*************** _mm512_alignr_epi32 (__m512i __A, __m512
*** 8512,8518 ****
    return (__m512i) __builtin_ia32_alignd512_mask ((__v16si) __A,
  						  (__v16si) __B, __imm,
  						  (__v16si)
! 						  _mm512_undefined_si512 (),
  						  (__mmask16) -1);
  }
  
--- 8515,8521 ----
    return (__m512i) __builtin_ia32_alignd512_mask ((__v16si) __A,
  						  (__v16si) __B, __imm,
  						  (__v16si)
! 						  _mm512_undefined_epi32 (),
  						  (__mmask16) -1);
  }
  
*************** _mm512_alignr_epi64 (__m512i __A, __m512
*** 8546,8552 ****
    return (__m512i) __builtin_ia32_alignq512_mask ((__v8di) __A,
  						  (__v8di) __B, __imm,
  						  (__v8di)
! 						  _mm512_undefined_si512 (),
  						  (__mmask8) -1);
  }
  
--- 8549,8555 ----
    return (__m512i) __builtin_ia32_alignq512_mask ((__v8di) __A,
  						  (__v8di) __B, __imm,
  						  (__v8di)
! 						  _mm512_undefined_epi32 (),
  						  (__mmask8) -1);
  }
  
*************** _mm512_maskz_alignr_epi64 (__mmask8 __U,
*** 8575,8581 ****
  #else
  #define _mm512_alignr_epi32(X, Y, C)                                        \
      ((__m512i)__builtin_ia32_alignd512_mask ((__v16si)(__m512i)(X),         \
!         (__v16si)(__m512i)(Y), (int)(C), (__v16si)_mm512_undefined_si512 (),\
          (__mmask16)-1))
  
  #define _mm512_mask_alignr_epi32(W, U, X, Y, C)                             \
--- 8578,8584 ----
  #else
  #define _mm512_alignr_epi32(X, Y, C)                                        \
      ((__m512i)__builtin_ia32_alignd512_mask ((__v16si)(__m512i)(X),         \
!         (__v16si)(__m512i)(Y), (int)(C), (__v16si)_mm512_undefined_epi32 (),\
          (__mmask16)-1))
  
  #define _mm512_mask_alignr_epi32(W, U, X, Y, C)                             \
*************** _mm512_maskz_alignr_epi64 (__mmask8 __U,
*** 8590,8596 ****
  
  #define _mm512_alignr_epi64(X, Y, C)                                        \
      ((__m512i)__builtin_ia32_alignq512_mask ((__v8di)(__m512i)(X),          \
!         (__v8di)(__m512i)(Y), (int)(C), (__v8di)_mm512_undefined_si512 (),  \
  	(__mmask8)-1))
  
  #define _mm512_mask_alignr_epi64(W, U, X, Y, C)                             \
--- 8593,8599 ----
  
  #define _mm512_alignr_epi64(X, Y, C)                                        \
      ((__m512i)__builtin_ia32_alignq512_mask ((__v8di)(__m512i)(X),          \
!         (__v8di)(__m512i)(Y), (int)(C), (__v8di)_mm512_undefined_epi32 (),  \
  	(__mmask8)-1))
  
  #define _mm512_mask_alignr_epi64(W, U, X, Y, C)                             \
*************** _mm_mask_cmp_round_ss_mask (__mmask8 __M
*** 9130,9138 ****
  					   (__mmask8)-1))
  
  #define _mm512_cmp_epi32_mask(X, Y, P)					\
!   ((__mmask8) __builtin_ia32_cmpd512_mask ((__v16si)(__m512i)(X),	\
! 					   (__v16si)(__m512i)(Y), (int)(P),\
! 					   (__mmask16)-1))
  
  #define _mm512_cmp_epu64_mask(X, Y, P)					\
    ((__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di)(__m512i)(X),	\
--- 9133,9141 ----
  					   (__mmask8)-1))
  
  #define _mm512_cmp_epi32_mask(X, Y, P)					\
!   ((__mmask16) __builtin_ia32_cmpd512_mask ((__v16si)(__m512i)(X),	\
! 					    (__v16si)(__m512i)(Y), (int)(P), \
! 					    (__mmask16)-1))
  
  #define _mm512_cmp_epu64_mask(X, Y, P)					\
    ((__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di)(__m512i)(X),	\
*************** _mm_mask_cmp_round_ss_mask (__mmask8 __M
*** 9140,9205 ****
  					    (__mmask8)-1))
  
  #define _mm512_cmp_epu32_mask(X, Y, P)					\
!   ((__mmask8) __builtin_ia32_ucmpd512_mask ((__v16si)(__m512i)(X),	\
! 					    (__v16si)(__m512i)(Y), (int)(P),\
! 					    (__mmask16)-1))
  
! #define _mm512_cmp_round_pd_mask(X, Y, P, R)					\
    ((__mmask8) __builtin_ia32_cmppd512_mask ((__v8df)(__m512d)(X),	\
  					    (__v8df)(__m512d)(Y), (int)(P),\
  					    (__mmask8)-1, R))
  
! #define _mm512_cmp_round_ps_mask(X, Y, P, R)					\
    ((__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf)(__m512)(X),	\
  					     (__v16sf)(__m512)(Y), (int)(P),\
  					     (__mmask16)-1, R))
  
! #define _mm512_mask_cmp_epi64_mask(M, X, Y, P)					\
    ((__mmask8) __builtin_ia32_cmpq512_mask ((__v8di)(__m512i)(X),	\
  					   (__v8di)(__m512i)(Y), (int)(P),\
  					   (__mmask8)M))
  
! #define _mm512_mask_cmp_epi32_mask(M, X, Y, P)					\
!   ((__mmask8) __builtin_ia32_cmpd512_mask ((__v16si)(__m512i)(X),	\
! 					   (__v16si)(__m512i)(Y), (int)(P),\
! 					   (__mmask16)M))
  
! #define _mm512_mask_cmp_epu64_mask(M, X, Y, P)					\
    ((__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di)(__m512i)(X),	\
  					    (__v8di)(__m512i)(Y), (int)(P),\
  					    (__mmask8)M))
  
! #define _mm512_mask_cmp_epu32_mask(M, X, Y, P)					\
!   ((__mmask8) __builtin_ia32_ucmpd512_mask ((__v16si)(__m512i)(X),	\
! 					    (__v16si)(__m512i)(Y), (int)(P),\
! 					    (__mmask16)M))
  
! #define _mm512_mask_cmp_round_pd_mask(M, X, Y, P, R)					\
    ((__mmask8) __builtin_ia32_cmppd512_mask ((__v8df)(__m512d)(X),	\
  					    (__v8df)(__m512d)(Y), (int)(P),\
  					    (__mmask8)M, R))
  
! #define _mm512_mask_cmp_round_ps_mask(M, X, Y, P, R)					\
    ((__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf)(__m512)(X),	\
  					     (__v16sf)(__m512)(Y), (int)(P),\
  					     (__mmask16)M, R))
  
! #define _mm_cmp_round_sd_mask(X, Y, P, R)					\
    ((__mmask8) __builtin_ia32_cmpsd_mask ((__v2df)(__m128d)(X),		\
  					 (__v2df)(__m128d)(Y), (int)(P),\
  					 (__mmask8)-1, R))
  
! #define _mm_mask_cmp_round_sd_mask(M, X, Y, P, R)					\
    ((__mmask8) __builtin_ia32_cmpsd_mask ((__v2df)(__m128d)(X),		\
  					 (__v2df)(__m128d)(Y), (int)(P),\
  					 (M), R))
  
! #define _mm_cmp_round_ss_mask(X, Y, P, R)					\
    ((__mmask8) __builtin_ia32_cmpss_mask ((__v4sf)(__m128)(X),		\
  					 (__v4sf)(__m128)(Y), (int)(P), \
  					 (__mmask8)-1, R))
  
! #define _mm_mask_cmp_round_ss_mask(M, X, Y, P, R)					\
    ((__mmask8) __builtin_ia32_cmpss_mask ((__v4sf)(__m128)(X),		\
  					 (__v4sf)(__m128)(Y), (int)(P), \
  					 (M), R))
--- 9143,9208 ----
  					    (__mmask8)-1))
  
  #define _mm512_cmp_epu32_mask(X, Y, P)					\
!   ((__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si)(__m512i)(X),	\
! 					     (__v16si)(__m512i)(Y), (int)(P), \
! 					     (__mmask16)-1))
  
! #define _mm512_cmp_round_pd_mask(X, Y, P, R)				\
    ((__mmask8) __builtin_ia32_cmppd512_mask ((__v8df)(__m512d)(X),	\
  					    (__v8df)(__m512d)(Y), (int)(P),\
  					    (__mmask8)-1, R))
  
! #define _mm512_cmp_round_ps_mask(X, Y, P, R)				\
    ((__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf)(__m512)(X),	\
  					     (__v16sf)(__m512)(Y), (int)(P),\
  					     (__mmask16)-1, R))
  
! #define _mm512_mask_cmp_epi64_mask(M, X, Y, P)				\
    ((__mmask8) __builtin_ia32_cmpq512_mask ((__v8di)(__m512i)(X),	\
  					   (__v8di)(__m512i)(Y), (int)(P),\
  					   (__mmask8)M))
  
! #define _mm512_mask_cmp_epi32_mask(M, X, Y, P)				\
!   ((__mmask16) __builtin_ia32_cmpd512_mask ((__v16si)(__m512i)(X),	\
! 					    (__v16si)(__m512i)(Y), (int)(P), \
! 					    (__mmask16)M))
  
! #define _mm512_mask_cmp_epu64_mask(M, X, Y, P)				\
    ((__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di)(__m512i)(X),	\
  					    (__v8di)(__m512i)(Y), (int)(P),\
  					    (__mmask8)M))
  
! #define _mm512_mask_cmp_epu32_mask(M, X, Y, P)				\
!   ((__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si)(__m512i)(X),	\
! 					     (__v16si)(__m512i)(Y), (int)(P), \
! 					     (__mmask16)M))
  
! #define _mm512_mask_cmp_round_pd_mask(M, X, Y, P, R)			\
    ((__mmask8) __builtin_ia32_cmppd512_mask ((__v8df)(__m512d)(X),	\
  					    (__v8df)(__m512d)(Y), (int)(P),\
  					    (__mmask8)M, R))
  
! #define _mm512_mask_cmp_round_ps_mask(M, X, Y, P, R)			\
    ((__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf)(__m512)(X),	\
  					     (__v16sf)(__m512)(Y), (int)(P),\
  					     (__mmask16)M, R))
  
! #define _mm_cmp_round_sd_mask(X, Y, P, R)				\
    ((__mmask8) __builtin_ia32_cmpsd_mask ((__v2df)(__m128d)(X),		\
  					 (__v2df)(__m128d)(Y), (int)(P),\
  					 (__mmask8)-1, R))
  
! #define _mm_mask_cmp_round_sd_mask(M, X, Y, P, R)			\
    ((__mmask8) __builtin_ia32_cmpsd_mask ((__v2df)(__m128d)(X),		\
  					 (__v2df)(__m128d)(Y), (int)(P),\
  					 (M), R))
  
! #define _mm_cmp_round_ss_mask(X, Y, P, R)				\
    ((__mmask8) __builtin_ia32_cmpss_mask ((__v4sf)(__m128)(X),		\
  					 (__v4sf)(__m128)(Y), (int)(P), \
  					 (__mmask8)-1, R))
  
! #define _mm_mask_cmp_round_ss_mask(M, X, Y, P, R)			\
    ((__mmask8) __builtin_ia32_cmpss_mask ((__v4sf)(__m128)(X),		\
  					 (__v4sf)(__m128)(Y), (int)(P), \
  					 (M), R))
*************** _mm_mask_cmp_round_ss_mask (__mmask8 __M
*** 9208,9230 ****
  #ifdef __OPTIMIZE__
  extern __inline __m512
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_i32gather_ps (__m512i __index, float const *__addr, int __scale)
  {
!   __m512 v1_old = _mm512_undefined_ps ();
!   __mmask16 mask = 0xFFFF;
  
!   return (__m512) __builtin_ia32_gathersiv16sf ((__v16sf) v1_old,
  						__addr,
  						(__v16si) __index,
! 						mask, __scale);
  }
  
  extern __inline __m512
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_i32gather_ps (__m512 v1_old, __mmask16 __mask,
! 			  __m512i __index, float const *__addr, int __scale)
  {
!   return (__m512) __builtin_ia32_gathersiv16sf ((__v16sf) v1_old,
  						__addr,
  						(__v16si) __index,
  						__mask, __scale);
--- 9211,9233 ----
  #ifdef __OPTIMIZE__
  extern __inline __m512
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_i32gather_ps (__m512i __index, void const *__addr, int __scale)
  {
!   __m512 __v1_old = _mm512_undefined_ps ();
!   __mmask16 __mask = 0xFFFF;
  
!   return (__m512) __builtin_ia32_gathersiv16sf ((__v16sf) __v1_old,
  						__addr,
  						(__v16si) __index,
! 						__mask, __scale);
  }
  
  extern __inline __m512
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_i32gather_ps (__m512 __v1_old, __mmask16 __mask,
! 			  __m512i __index, void const *__addr, int __scale)
  {
!   return (__m512) __builtin_ia32_gathersiv16sf ((__v16sf) __v1_old,
  						__addr,
  						(__v16si) __index,
  						__mask, __scale);
*************** _mm512_mask_i32gather_ps (__m512 v1_old,
*** 9232,9252 ****
  
  extern __inline __m512d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_i32gather_pd (__m256i __index, double const *__addr, int __scale)
  {
!   __m512d v1_old = _mm512_undefined_pd ();
!   __mmask8 mask = 0xFF;
  
!   return (__m512d) __builtin_ia32_gathersiv8df ((__v8df) v1_old,
  						__addr,
! 						(__v8si) __index, mask,
  						__scale);
  }
  
  extern __inline __m512d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_mask_i32gather_pd (__m512d __v1_old, __mmask8 __mask,
! 			  __m256i __index, double const *__addr, int __scale)
  {
    return (__m512d) __builtin_ia32_gathersiv8df ((__v8df) __v1_old,
  						__addr,
--- 9235,9255 ----
  
  extern __inline __m512d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_i32gather_pd (__m256i __index, void const *__addr, int __scale)
  {
!   __m512d __v1_old = _mm512_undefined_pd ();
!   __mmask8 __mask = 0xFF;
  
!   return (__m512d) __builtin_ia32_gathersiv8df ((__v8df) __v1_old,
  						__addr,
! 						(__v8si) __index, __mask,
  						__scale);
  }
  
  extern __inline __m512d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_mask_i32gather_pd (__m512d __v1_old, __mmask8 __mask,
! 			  __m256i __index, void const *__addr, int __scale)
  {
    return (__m512d) __builtin_ia32_gathersiv8df ((__v8df) __v1_old,
  						__addr,
*************** _mm512_mask_i32gather_pd (__m512d __v1_o
*** 9256,9276 ****
  
  extern __inline __m256
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_i64gather_ps (__m512i __index, float const *__addr, int __scale)
  {
!   __m256 v1_old = _mm256_undefined_ps ();
!   __mmask8 mask = 0xFF;
  
!   return (__m256) __builtin_ia32_gatherdiv16sf ((__v8sf) v1_old,
  						__addr,
! 						(__v8di) __index, mask,
  						__scale);
  }
  
  extern __inline __m256
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_mask_i64gather_ps (__m256 __v1_old, __mmask8 __mask,
! 			  __m512i __index, float const *__addr, int __scale)
  {
    return (__m256) __builtin_ia32_gatherdiv16sf ((__v8sf) __v1_old,
  						__addr,
--- 9259,9279 ----
  
  extern __inline __m256
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_i64gather_ps (__m512i __index, void const *__addr, int __scale)
  {
!   __m256 __v1_old = _mm256_undefined_ps ();
!   __mmask8 __mask = 0xFF;
  
!   return (__m256) __builtin_ia32_gatherdiv16sf ((__v8sf) __v1_old,
  						__addr,
! 						(__v8di) __index, __mask,
  						__scale);
  }
  
  extern __inline __m256
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_mask_i64gather_ps (__m256 __v1_old, __mmask8 __mask,
! 			  __m512i __index, void const *__addr, int __scale)
  {
    return (__m256) __builtin_ia32_gatherdiv16sf ((__v8sf) __v1_old,
  						__addr,
*************** _mm512_mask_i64gather_ps (__m256 __v1_ol
*** 9280,9300 ****
  
  extern __inline __m512d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_i64gather_pd (__m512i __index, double const *__addr, int __scale)
  {
!   __m512d v1_old = _mm512_undefined_pd ();
!   __mmask8 mask = 0xFF;
  
!   return (__m512d) __builtin_ia32_gatherdiv8df ((__v8df) v1_old,
  						__addr,
! 						(__v8di) __index, mask,
  						__scale);
  }
  
  extern __inline __m512d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_mask_i64gather_pd (__m512d __v1_old, __mmask8 __mask,
! 			  __m512i __index, double const *__addr, int __scale)
  {
    return (__m512d) __builtin_ia32_gatherdiv8df ((__v8df) __v1_old,
  						__addr,
--- 9283,9303 ----
  
  extern __inline __m512d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_i64gather_pd (__m512i __index, void const *__addr, int __scale)
  {
!   __m512d __v1_old = _mm512_undefined_pd ();
!   __mmask8 __mask = 0xFF;
  
!   return (__m512d) __builtin_ia32_gatherdiv8df ((__v8df) __v1_old,
  						__addr,
! 						(__v8di) __index, __mask,
  						__scale);
  }
  
  extern __inline __m512d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_mask_i64gather_pd (__m512d __v1_old, __mmask8 __mask,
! 			  __m512i __index, void const *__addr, int __scale)
  {
    return (__m512d) __builtin_ia32_gatherdiv8df ((__v8df) __v1_old,
  						__addr,
*************** _mm512_mask_i64gather_pd (__m512d __v1_o
*** 9304,9324 ****
  
  extern __inline __m512i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_i32gather_epi32 (__m512i __index, int const *__addr, int __scale)
  {
!   __m512i v1_old = _mm512_undefined_si512 ();
!   __mmask16 mask = 0xFFFF;
  
!   return (__m512i) __builtin_ia32_gathersiv16si ((__v16si) v1_old,
  						 __addr,
  						 (__v16si) __index,
! 						 mask, __scale);
  }
  
  extern __inline __m512i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_mask_i32gather_epi32 (__m512i __v1_old, __mmask16 __mask,
! 			     __m512i __index, int const *__addr, int __scale)
  {
    return (__m512i) __builtin_ia32_gathersiv16si ((__v16si) __v1_old,
  						 __addr,
--- 9307,9327 ----
  
  extern __inline __m512i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_i32gather_epi32 (__m512i __index, void const *__addr, int __scale)
  {
!   __m512i __v1_old = _mm512_undefined_epi32 ();
!   __mmask16 __mask = 0xFFFF;
  
!   return (__m512i) __builtin_ia32_gathersiv16si ((__v16si) __v1_old,
  						 __addr,
  						 (__v16si) __index,
! 						 __mask, __scale);
  }
  
  extern __inline __m512i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_mask_i32gather_epi32 (__m512i __v1_old, __mmask16 __mask,
! 			     __m512i __index, void const *__addr, int __scale)
  {
    return (__m512i) __builtin_ia32_gathersiv16si ((__v16si) __v1_old,
  						 __addr,
*************** _mm512_mask_i32gather_epi32 (__m512i __v
*** 9328,9348 ****
  
  extern __inline __m512i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_i32gather_epi64 (__m256i __index, long long const *__addr, int __scale)
  {
!   __m512i v1_old = _mm512_undefined_si512 ();
!   __mmask8 mask = 0xFF;
  
!   return (__m512i) __builtin_ia32_gathersiv8di ((__v8di) v1_old,
  						__addr,
! 						(__v8si) __index, mask,
  						__scale);
  }
  
  extern __inline __m512i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_mask_i32gather_epi64 (__m512i __v1_old, __mmask8 __mask,
! 			     __m256i __index, long long const *__addr,
  			     int __scale)
  {
    return (__m512i) __builtin_ia32_gathersiv8di ((__v8di) __v1_old,
--- 9331,9351 ----
  
  extern __inline __m512i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_i32gather_epi64 (__m256i __index, void const *__addr, int __scale)
  {
!   __m512i __v1_old = _mm512_undefined_epi32 ();
!   __mmask8 __mask = 0xFF;
  
!   return (__m512i) __builtin_ia32_gathersiv8di ((__v8di) __v1_old,
  						__addr,
! 						(__v8si) __index, __mask,
  						__scale);
  }
  
  extern __inline __m512i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_mask_i32gather_epi64 (__m512i __v1_old, __mmask8 __mask,
! 			     __m256i __index, void const *__addr,
  			     int __scale)
  {
    return (__m512i) __builtin_ia32_gathersiv8di ((__v8di) __v1_old,
*************** _mm512_mask_i32gather_epi64 (__m512i __v
*** 9353,9373 ****
  
  extern __inline __m256i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_i64gather_epi32 (__m512i __index, int const *__addr, int __scale)
  {
!   __m256i v1_old = _mm256_undefined_si256 ();
!   __mmask8 mask = 0xFF;
  
!   return (__m256i) __builtin_ia32_gatherdiv16si ((__v8si) v1_old,
  						 __addr,
  						 (__v8di) __index,
! 						 mask, __scale);
  }
  
  extern __inline __m256i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_mask_i64gather_epi32 (__m256i __v1_old, __mmask8 __mask,
! 			     __m512i __index, int const *__addr, int __scale)
  {
    return (__m256i) __builtin_ia32_gatherdiv16si ((__v8si) __v1_old,
  						 __addr,
--- 9356,9376 ----
  
  extern __inline __m256i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_i64gather_epi32 (__m512i __index, void const *__addr, int __scale)
  {
!   __m256i __v1_old = _mm256_undefined_si256 ();
!   __mmask8 __mask = 0xFF;
  
!   return (__m256i) __builtin_ia32_gatherdiv16si ((__v8si) __v1_old,
  						 __addr,
  						 (__v8di) __index,
! 						 __mask, __scale);
  }
  
  extern __inline __m256i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_mask_i64gather_epi32 (__m256i __v1_old, __mmask8 __mask,
! 			     __m512i __index, void const *__addr, int __scale)
  {
    return (__m256i) __builtin_ia32_gatherdiv16si ((__v8si) __v1_old,
  						 __addr,
*************** _mm512_mask_i64gather_epi32 (__m256i __v
*** 9377,9397 ****
  
  extern __inline __m512i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_i64gather_epi64 (__m512i __index, long long const *__addr, int __scale)
  {
!   __m512i v1_old = _mm512_undefined_si512 ();
!   __mmask8 mask = 0xFF;
  
!   return (__m512i) __builtin_ia32_gatherdiv8di ((__v8di) v1_old,
  						__addr,
! 						(__v8di) __index, mask,
  						__scale);
  }
  
  extern __inline __m512i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_mask_i64gather_epi64 (__m512i __v1_old, __mmask8 __mask,
! 			     __m512i __index, long long const *__addr,
  			     int __scale)
  {
    return (__m512i) __builtin_ia32_gatherdiv8di ((__v8di) __v1_old,
--- 9380,9400 ----
  
  extern __inline __m512i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_i64gather_epi64 (__m512i __index, void const *__addr, int __scale)
  {
!   __m512i __v1_old = _mm512_undefined_epi32 ();
!   __mmask8 __mask = 0xFF;
  
!   return (__m512i) __builtin_ia32_gatherdiv8di ((__v8di) __v1_old,
  						__addr,
! 						(__v8di) __index, __mask,
  						__scale);
  }
  
  extern __inline __m512i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_mask_i64gather_epi64 (__m512i __v1_old, __mmask8 __mask,
! 			     __m512i __index, void const *__addr,
  			     int __scale)
  {
    return (__m512i) __builtin_ia32_gatherdiv8di ((__v8di) __v1_old,
*************** _mm512_mask_i64gather_epi64 (__m512i __v
*** 9402,9408 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_i32scatter_ps (float *__addr, __m512i __index, __m512 __v1, int __scale)
  {
    __builtin_ia32_scattersiv16sf (__addr, (__mmask16) 0xFFFF,
  				 (__v16si) __index, (__v16sf) __v1, __scale);
--- 9405,9411 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_i32scatter_ps (void *__addr, __m512i __index, __m512 __v1, int __scale)
  {
    __builtin_ia32_scattersiv16sf (__addr, (__mmask16) 0xFFFF,
  				 (__v16si) __index, (__v16sf) __v1, __scale);
*************** _mm512_i32scatter_ps (float *__addr, __m
*** 9410,9416 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_i32scatter_ps (float *__addr, __mmask16 __mask,
  			   __m512i __index, __m512 __v1, int __scale)
  {
    __builtin_ia32_scattersiv16sf (__addr, __mask, (__v16si) __index,
--- 9413,9419 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_i32scatter_ps (void *__addr, __mmask16 __mask,
  			   __m512i __index, __m512 __v1, int __scale)
  {
    __builtin_ia32_scattersiv16sf (__addr, __mask, (__v16si) __index,
*************** _mm512_mask_i32scatter_ps (float *__addr
*** 9419,9425 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_i32scatter_pd (double *__addr, __m256i __index, __m512d __v1,
  		      int __scale)
  {
    __builtin_ia32_scattersiv8df (__addr, (__mmask8) 0xFF,
--- 9422,9428 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_i32scatter_pd (void *__addr, __m256i __index, __m512d __v1,
  		      int __scale)
  {
    __builtin_ia32_scattersiv8df (__addr, (__mmask8) 0xFF,
*************** _mm512_i32scatter_pd (double *__addr, __
*** 9428,9434 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_i32scatter_pd (double *__addr, __mmask8 __mask,
  			   __m256i __index, __m512d __v1, int __scale)
  {
    __builtin_ia32_scattersiv8df (__addr, __mask, (__v8si) __index,
--- 9431,9437 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_i32scatter_pd (void *__addr, __mmask8 __mask,
  			   __m256i __index, __m512d __v1, int __scale)
  {
    __builtin_ia32_scattersiv8df (__addr, __mask, (__v8si) __index,
*************** _mm512_mask_i32scatter_pd (double *__add
*** 9437,9443 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_i64scatter_ps (float *__addr, __m512i __index, __m256 __v1, int __scale)
  {
    __builtin_ia32_scatterdiv16sf (__addr, (__mmask8) 0xFF,
  				 (__v8di) __index, (__v8sf) __v1, __scale);
--- 9440,9446 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_i64scatter_ps (void *__addr, __m512i __index, __m256 __v1, int __scale)
  {
    __builtin_ia32_scatterdiv16sf (__addr, (__mmask8) 0xFF,
  				 (__v8di) __index, (__v8sf) __v1, __scale);
*************** _mm512_i64scatter_ps (float *__addr, __m
*** 9445,9451 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_i64scatter_ps (float *__addr, __mmask8 __mask,
  			   __m512i __index, __m256 __v1, int __scale)
  {
    __builtin_ia32_scatterdiv16sf (__addr, __mask, (__v8di) __index,
--- 9448,9454 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_i64scatter_ps (void *__addr, __mmask8 __mask,
  			   __m512i __index, __m256 __v1, int __scale)
  {
    __builtin_ia32_scatterdiv16sf (__addr, __mask, (__v8di) __index,
*************** _mm512_mask_i64scatter_ps (float *__addr
*** 9454,9460 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_i64scatter_pd (double *__addr, __m512i __index, __m512d __v1,
  		      int __scale)
  {
    __builtin_ia32_scatterdiv8df (__addr, (__mmask8) 0xFF,
--- 9457,9463 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_i64scatter_pd (void *__addr, __m512i __index, __m512d __v1,
  		      int __scale)
  {
    __builtin_ia32_scatterdiv8df (__addr, (__mmask8) 0xFF,
*************** _mm512_i64scatter_pd (double *__addr, __
*** 9463,9469 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_i64scatter_pd (double *__addr, __mmask8 __mask,
  			   __m512i __index, __m512d __v1, int __scale)
  {
    __builtin_ia32_scatterdiv8df (__addr, __mask, (__v8di) __index,
--- 9466,9472 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_i64scatter_pd (void *__addr, __mmask8 __mask,
  			   __m512i __index, __m512d __v1, int __scale)
  {
    __builtin_ia32_scatterdiv8df (__addr, __mask, (__v8di) __index,
*************** _mm512_mask_i64scatter_pd (double *__add
*** 9472,9478 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_i32scatter_epi32 (int *__addr, __m512i __index,
  			 __m512i __v1, int __scale)
  {
    __builtin_ia32_scattersiv16si (__addr, (__mmask16) 0xFFFF,
--- 9475,9481 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_i32scatter_epi32 (void *__addr, __m512i __index,
  			 __m512i __v1, int __scale)
  {
    __builtin_ia32_scattersiv16si (__addr, (__mmask16) 0xFFFF,
*************** _mm512_i32scatter_epi32 (int *__addr, __
*** 9481,9487 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_i32scatter_epi32 (int *__addr, __mmask16 __mask,
  			      __m512i __index, __m512i __v1, int __scale)
  {
    __builtin_ia32_scattersiv16si (__addr, __mask, (__v16si) __index,
--- 9484,9490 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_i32scatter_epi32 (void *__addr, __mmask16 __mask,
  			      __m512i __index, __m512i __v1, int __scale)
  {
    __builtin_ia32_scattersiv16si (__addr, __mask, (__v16si) __index,
*************** _mm512_mask_i32scatter_epi32 (int *__add
*** 9490,9496 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_i32scatter_epi64 (long long *__addr, __m256i __index,
  			 __m512i __v1, int __scale)
  {
    __builtin_ia32_scattersiv8di (__addr, (__mmask8) 0xFF,
--- 9493,9499 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_i32scatter_epi64 (void *__addr, __m256i __index,
  			 __m512i __v1, int __scale)
  {
    __builtin_ia32_scattersiv8di (__addr, (__mmask8) 0xFF,
*************** _mm512_i32scatter_epi64 (long long *__ad
*** 9499,9505 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_i32scatter_epi64 (long long *__addr, __mmask8 __mask,
  			      __m256i __index, __m512i __v1, int __scale)
  {
    __builtin_ia32_scattersiv8di (__addr, __mask, (__v8si) __index,
--- 9502,9508 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_i32scatter_epi64 (void *__addr, __mmask8 __mask,
  			      __m256i __index, __m512i __v1, int __scale)
  {
    __builtin_ia32_scattersiv8di (__addr, __mask, (__v8si) __index,
*************** _mm512_mask_i32scatter_epi64 (long long
*** 9508,9514 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_i64scatter_epi32 (int *__addr, __m512i __index,
  			 __m256i __v1, int __scale)
  {
    __builtin_ia32_scatterdiv16si (__addr, (__mmask8) 0xFF,
--- 9511,9517 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_i64scatter_epi32 (void *__addr, __m512i __index,
  			 __m256i __v1, int __scale)
  {
    __builtin_ia32_scatterdiv16si (__addr, (__mmask8) 0xFF,
*************** _mm512_i64scatter_epi32 (int *__addr, __
*** 9517,9523 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_i64scatter_epi32 (int *__addr, __mmask8 __mask,
  			      __m512i __index, __m256i __v1, int __scale)
  {
    __builtin_ia32_scatterdiv16si (__addr, __mask, (__v8di) __index,
--- 9520,9526 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_i64scatter_epi32 (void *__addr, __mmask8 __mask,
  			      __m512i __index, __m256i __v1, int __scale)
  {
    __builtin_ia32_scatterdiv16si (__addr, __mask, (__v8di) __index,
*************** _mm512_mask_i64scatter_epi32 (int *__add
*** 9526,9532 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_i64scatter_epi64 (long long *__addr, __m512i __index,
  			 __m512i __v1, int __scale)
  {
    __builtin_ia32_scatterdiv8di (__addr, (__mmask8) 0xFF,
--- 9529,9535 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_i64scatter_epi64 (void *__addr, __m512i __index,
  			 __m512i __v1, int __scale)
  {
    __builtin_ia32_scatterdiv8di (__addr, (__mmask8) 0xFF,
*************** _mm512_i64scatter_epi64 (long long *__ad
*** 9535,9541 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_i64scatter_epi64 (long long *__addr, __mmask8 __mask,
  			      __m512i __index, __m512i __v1, int __scale)
  {
    __builtin_ia32_scatterdiv8di (__addr, __mask, (__v8di) __index,
--- 9538,9544 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_i64scatter_epi64 (void *__addr, __mmask8 __mask,
  			      __m512i __index, __m512i __v1, int __scale)
  {
    __builtin_ia32_scatterdiv8di (__addr, __mask, (__v8di) __index,
*************** _mm512_mask_i64scatter_epi64 (long long
*** 9544,9720 ****
  #else
  #define _mm512_i32gather_ps(INDEX, ADDR, SCALE)				\
    (__m512) __builtin_ia32_gathersiv16sf ((__v16sf)_mm512_undefined_ps(),\
! 					 (float const *)ADDR,		\
  					 (__v16si)(__m512i)INDEX,	\
  					 (__mmask16)0xFFFF, (int)SCALE)
  
  #define _mm512_mask_i32gather_ps(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m512) __builtin_ia32_gathersiv16sf ((__v16sf)(__m512)V1OLD,	\
! 					 (float const *)ADDR,		\
  					 (__v16si)(__m512i)INDEX,	\
  					 (__mmask16)MASK, (int)SCALE)
  
  #define _mm512_i32gather_pd(INDEX, ADDR, SCALE)				\
    (__m512d) __builtin_ia32_gathersiv8df ((__v8df)_mm512_undefined_pd(),	\
! 					 (double const *)ADDR,		\
  					 (__v8si)(__m256i)INDEX,	\
  					 (__mmask8)0xFF, (int)SCALE)
  
  #define _mm512_mask_i32gather_pd(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m512d) __builtin_ia32_gathersiv8df ((__v8df)(__m512d)V1OLD,	\
! 					 (double const *)ADDR,		\
  					 (__v8si)(__m256i)INDEX,	\
  					 (__mmask8)MASK, (int)SCALE)
  
  #define _mm512_i64gather_ps(INDEX, ADDR, SCALE)				\
    (__m256) __builtin_ia32_gatherdiv16sf ((__v8sf)_mm256_undefined_ps(),	\
! 					 (float const *)ADDR,		\
  					 (__v8di)(__m512i)INDEX,	\
  					 (__mmask8)0xFF, (int)SCALE)
  
  #define _mm512_mask_i64gather_ps(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m256) __builtin_ia32_gatherdiv16sf ((__v8sf)(__m256)V1OLD,		\
! 					 (float const *)ADDR,		\
  					 (__v8di)(__m512i)INDEX,	\
  					 (__mmask8)MASK, (int)SCALE)
  
  #define _mm512_i64gather_pd(INDEX, ADDR, SCALE)				\
    (__m512d) __builtin_ia32_gatherdiv8df ((__v8df)_mm512_undefined_pd(),	\
! 					 (double const *)ADDR,		\
  					 (__v8di)(__m512i)INDEX,	\
  					 (__mmask8)0xFF, (int)SCALE)
  
  #define _mm512_mask_i64gather_pd(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m512d) __builtin_ia32_gatherdiv8df ((__v8df)(__m512d)V1OLD,	\
! 					 (double const *)ADDR,		\
  					 (__v8di)(__m512i)INDEX,	\
  					 (__mmask8)MASK, (int)SCALE)
  
  #define _mm512_i32gather_epi32(INDEX, ADDR, SCALE)			\
!   (__m512i) __builtin_ia32_gathersiv16si ((__v16si)_mm512_undefined_si512 (),	\
! 					  (int const *)ADDR,		\
  					  (__v16si)(__m512i)INDEX,	\
  					  (__mmask16)0xFFFF, (int)SCALE)
  
  #define _mm512_mask_i32gather_epi32(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m512i) __builtin_ia32_gathersiv16si ((__v16si)(__m512i)V1OLD,	\
! 					  (int const *)ADDR,		\
  					  (__v16si)(__m512i)INDEX,	\
  					  (__mmask16)MASK, (int)SCALE)
  
  #define _mm512_i32gather_epi64(INDEX, ADDR, SCALE)			\
!   (__m512i) __builtin_ia32_gathersiv8di ((__v8di)_mm512_undefined_si512 (),	\
! 					 (long long const *)ADDR,	\
  					 (__v8si)(__m256i)INDEX,	\
  					 (__mmask8)0xFF, (int)SCALE)
  
  #define _mm512_mask_i32gather_epi64(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m512i) __builtin_ia32_gathersiv8di ((__v8di)(__m512i)V1OLD,	\
! 					 (long long const *)ADDR,	\
  					 (__v8si)(__m256i)INDEX,	\
  					 (__mmask8)MASK, (int)SCALE)
  
  #define _mm512_i64gather_epi32(INDEX, ADDR, SCALE)			  \
    (__m256i) __builtin_ia32_gatherdiv16si ((__v8si)_mm256_undefined_si256(), \
! 					  (int const *)ADDR,		  \
  					  (__v8di)(__m512i)INDEX,	  \
  					  (__mmask8)0xFF, (int)SCALE)
  
  #define _mm512_mask_i64gather_epi32(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m256i) __builtin_ia32_gatherdiv16si ((__v8si)(__m256i)V1OLD,	\
! 					  (int const *)ADDR,		\
  					  (__v8di)(__m512i)INDEX,	\
  					  (__mmask8)MASK, (int)SCALE)
  
  #define _mm512_i64gather_epi64(INDEX, ADDR, SCALE)			\
!   (__m512i) __builtin_ia32_gatherdiv8di ((__v8di)_mm512_undefined_si512 (),	\
! 					 (long long const *)ADDR,	\
  					 (__v8di)(__m512i)INDEX,	\
  					 (__mmask8)0xFF, (int)SCALE)
  
  #define _mm512_mask_i64gather_epi64(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m512i) __builtin_ia32_gatherdiv8di ((__v8di)(__m512i)V1OLD,	\
! 					 (long long const *)ADDR,	\
  					 (__v8di)(__m512i)INDEX,	\
  					 (__mmask8)MASK, (int)SCALE)
  
  #define _mm512_i32scatter_ps(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scattersiv16sf ((float *)ADDR, (__mmask16)0xFFFF,	\
  				 (__v16si)(__m512i)INDEX,		\
  				 (__v16sf)(__m512)V1, (int)SCALE)
  
  #define _mm512_mask_i32scatter_ps(ADDR, MASK, INDEX, V1, SCALE)		\
!   __builtin_ia32_scattersiv16sf ((float *)ADDR, (__mmask16)MASK,		\
  				 (__v16si)(__m512i)INDEX,		\
  				 (__v16sf)(__m512)V1, (int)SCALE)
  
  #define _mm512_i32scatter_pd(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scattersiv8df ((double *)ADDR, (__mmask8)0xFF,		\
  				(__v8si)(__m256i)INDEX,			\
  				(__v8df)(__m512d)V1, (int)SCALE)
  
  #define _mm512_mask_i32scatter_pd(ADDR, MASK, INDEX, V1, SCALE)		\
!   __builtin_ia32_scattersiv8df ((double *)ADDR, (__mmask8)MASK,		\
  				(__v8si)(__m256i)INDEX,			\
  				(__v8df)(__m512d)V1, (int)SCALE)
  
  #define _mm512_i64scatter_ps(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scatterdiv16sf ((float *)ADDR, (__mmask8)0xFF,		\
  				 (__v8di)(__m512i)INDEX,		\
  				 (__v8sf)(__m256)V1, (int)SCALE)
  
  #define _mm512_mask_i64scatter_ps(ADDR, MASK, INDEX, V1, SCALE)		\
!   __builtin_ia32_scatterdiv16sf ((float *)ADDR, (__mmask16)MASK,		\
  				 (__v8di)(__m512i)INDEX,		\
  				 (__v8sf)(__m256)V1, (int)SCALE)
  
  #define _mm512_i64scatter_pd(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scatterdiv8df ((double *)ADDR, (__mmask8)0xFF,		\
  				(__v8di)(__m512i)INDEX,			\
  				(__v8df)(__m512d)V1, (int)SCALE)
  
  #define _mm512_mask_i64scatter_pd(ADDR, MASK, INDEX, V1, SCALE)		\
!   __builtin_ia32_scatterdiv8df ((double *)ADDR, (__mmask8)MASK,		\
  				(__v8di)(__m512i)INDEX,			\
  				(__v8df)(__m512d)V1, (int)SCALE)
  
  #define _mm512_i32scatter_epi32(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scattersiv16si ((int *)ADDR, (__mmask16)0xFFFF,	\
  				 (__v16si)(__m512i)INDEX,		\
  				 (__v16si)(__m512i)V1, (int)SCALE)
  
  #define _mm512_mask_i32scatter_epi32(ADDR, MASK, INDEX, V1, SCALE)	\
!   __builtin_ia32_scattersiv16si ((int *)ADDR, (__mmask16)MASK,		\
  				 (__v16si)(__m512i)INDEX,		\
  				 (__v16si)(__m512i)V1, (int)SCALE)
  
  #define _mm512_i32scatter_epi64(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scattersiv8di ((long long *)ADDR, (__mmask8)0xFF,	\
  				(__v8si)(__m256i)INDEX,			\
  				(__v8di)(__m512i)V1, (int)SCALE)
  
  #define _mm512_mask_i32scatter_epi64(ADDR, MASK, INDEX, V1, SCALE)	\
!   __builtin_ia32_scattersiv8di ((long long *)ADDR, (__mmask8)MASK,	\
  				(__v8si)(__m256i)INDEX,			\
  				(__v8di)(__m512i)V1, (int)SCALE)
  
  #define _mm512_i64scatter_epi32(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scatterdiv16si ((int *)ADDR, (__mmask8)0xFF,		\
  				 (__v8di)(__m512i)INDEX,		\
  				 (__v8si)(__m256i)V1, (int)SCALE)
  
  #define _mm512_mask_i64scatter_epi32(ADDR, MASK, INDEX, V1, SCALE)	\
!   __builtin_ia32_scatterdiv16si ((int *)ADDR, (__mmask8)MASK,		\
  				 (__v8di)(__m512i)INDEX,		\
  				 (__v8si)(__m256i)V1, (int)SCALE)
  
  #define _mm512_i64scatter_epi64(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scatterdiv8di ((long long *)ADDR, (__mmask8)0xFF,	\
  				(__v8di)(__m512i)INDEX,			\
  				(__v8di)(__m512i)V1, (int)SCALE)
  
  #define _mm512_mask_i64scatter_epi64(ADDR, MASK, INDEX, V1, SCALE)	\
!   __builtin_ia32_scatterdiv8di ((long long *)ADDR, (__mmask8)MASK,	\
  				(__v8di)(__m512i)INDEX,			\
  				(__v8di)(__m512i)V1, (int)SCALE)
  #endif
--- 9547,9723 ----
  #else
  #define _mm512_i32gather_ps(INDEX, ADDR, SCALE)				\
    (__m512) __builtin_ia32_gathersiv16sf ((__v16sf)_mm512_undefined_ps(),\
! 					 (void const *)ADDR,		\
  					 (__v16si)(__m512i)INDEX,	\
  					 (__mmask16)0xFFFF, (int)SCALE)
  
  #define _mm512_mask_i32gather_ps(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m512) __builtin_ia32_gathersiv16sf ((__v16sf)(__m512)V1OLD,	\
! 					 (void const *)ADDR,		\
  					 (__v16si)(__m512i)INDEX,	\
  					 (__mmask16)MASK, (int)SCALE)
  
  #define _mm512_i32gather_pd(INDEX, ADDR, SCALE)				\
    (__m512d) __builtin_ia32_gathersiv8df ((__v8df)_mm512_undefined_pd(),	\
! 					 (void const *)ADDR,		\
  					 (__v8si)(__m256i)INDEX,	\
  					 (__mmask8)0xFF, (int)SCALE)
  
  #define _mm512_mask_i32gather_pd(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m512d) __builtin_ia32_gathersiv8df ((__v8df)(__m512d)V1OLD,	\
! 					 (void const *)ADDR,		\
  					 (__v8si)(__m256i)INDEX,	\
  					 (__mmask8)MASK, (int)SCALE)
  
  #define _mm512_i64gather_ps(INDEX, ADDR, SCALE)				\
    (__m256) __builtin_ia32_gatherdiv16sf ((__v8sf)_mm256_undefined_ps(),	\
! 					 (void const *)ADDR,		\
  					 (__v8di)(__m512i)INDEX,	\
  					 (__mmask8)0xFF, (int)SCALE)
  
  #define _mm512_mask_i64gather_ps(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m256) __builtin_ia32_gatherdiv16sf ((__v8sf)(__m256)V1OLD,		\
! 					 (void const *)ADDR,		\
  					 (__v8di)(__m512i)INDEX,	\
  					 (__mmask8)MASK, (int)SCALE)
  
  #define _mm512_i64gather_pd(INDEX, ADDR, SCALE)				\
    (__m512d) __builtin_ia32_gatherdiv8df ((__v8df)_mm512_undefined_pd(),	\
! 					 (void const *)ADDR,		\
  					 (__v8di)(__m512i)INDEX,	\
  					 (__mmask8)0xFF, (int)SCALE)
  
  #define _mm512_mask_i64gather_pd(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m512d) __builtin_ia32_gatherdiv8df ((__v8df)(__m512d)V1OLD,	\
! 					 (void const *)ADDR,		\
  					 (__v8di)(__m512i)INDEX,	\
  					 (__mmask8)MASK, (int)SCALE)
  
  #define _mm512_i32gather_epi32(INDEX, ADDR, SCALE)			\
!   (__m512i) __builtin_ia32_gathersiv16si ((__v16si)_mm512_undefined_epi32 (),	\
! 					  (void const *)ADDR,		\
  					  (__v16si)(__m512i)INDEX,	\
  					  (__mmask16)0xFFFF, (int)SCALE)
  
  #define _mm512_mask_i32gather_epi32(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m512i) __builtin_ia32_gathersiv16si ((__v16si)(__m512i)V1OLD,	\
! 					  (void const *)ADDR,		\
  					  (__v16si)(__m512i)INDEX,	\
  					  (__mmask16)MASK, (int)SCALE)
  
  #define _mm512_i32gather_epi64(INDEX, ADDR, SCALE)			\
!   (__m512i) __builtin_ia32_gathersiv8di ((__v8di)_mm512_undefined_epi32 (),	\
! 					 (void const *)ADDR,		\
  					 (__v8si)(__m256i)INDEX,	\
  					 (__mmask8)0xFF, (int)SCALE)
  
  #define _mm512_mask_i32gather_epi64(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m512i) __builtin_ia32_gathersiv8di ((__v8di)(__m512i)V1OLD,	\
! 					 (void const *)ADDR,		\
  					 (__v8si)(__m256i)INDEX,	\
  					 (__mmask8)MASK, (int)SCALE)
  
  #define _mm512_i64gather_epi32(INDEX, ADDR, SCALE)			  \
    (__m256i) __builtin_ia32_gatherdiv16si ((__v8si)_mm256_undefined_si256(), \
! 					  (void const *)ADDR,		  \
  					  (__v8di)(__m512i)INDEX,	  \
  					  (__mmask8)0xFF, (int)SCALE)
  
  #define _mm512_mask_i64gather_epi32(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m256i) __builtin_ia32_gatherdiv16si ((__v8si)(__m256i)V1OLD,	\
! 					  (void const *)ADDR,		\
  					  (__v8di)(__m512i)INDEX,	\
  					  (__mmask8)MASK, (int)SCALE)
  
  #define _mm512_i64gather_epi64(INDEX, ADDR, SCALE)			\
!   (__m512i) __builtin_ia32_gatherdiv8di ((__v8di)_mm512_undefined_epi32 (),	\
! 					 (void const *)ADDR,		\
  					 (__v8di)(__m512i)INDEX,	\
  					 (__mmask8)0xFF, (int)SCALE)
  
  #define _mm512_mask_i64gather_epi64(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m512i) __builtin_ia32_gatherdiv8di ((__v8di)(__m512i)V1OLD,	\
! 					 (void const *)ADDR,		\
  					 (__v8di)(__m512i)INDEX,	\
  					 (__mmask8)MASK, (int)SCALE)
  
  #define _mm512_i32scatter_ps(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scattersiv16sf ((void *)ADDR, (__mmask16)0xFFFF,	\
  				 (__v16si)(__m512i)INDEX,		\
  				 (__v16sf)(__m512)V1, (int)SCALE)
  
  #define _mm512_mask_i32scatter_ps(ADDR, MASK, INDEX, V1, SCALE)		\
!   __builtin_ia32_scattersiv16sf ((void *)ADDR, (__mmask16)MASK,		\
  				 (__v16si)(__m512i)INDEX,		\
  				 (__v16sf)(__m512)V1, (int)SCALE)
  
  #define _mm512_i32scatter_pd(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scattersiv8df ((void *)ADDR, (__mmask8)0xFF,		\
  				(__v8si)(__m256i)INDEX,			\
  				(__v8df)(__m512d)V1, (int)SCALE)
  
  #define _mm512_mask_i32scatter_pd(ADDR, MASK, INDEX, V1, SCALE)		\
!   __builtin_ia32_scattersiv8df ((void *)ADDR, (__mmask8)MASK,		\
  				(__v8si)(__m256i)INDEX,			\
  				(__v8df)(__m512d)V1, (int)SCALE)
  
  #define _mm512_i64scatter_ps(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scatterdiv16sf ((void *)ADDR, (__mmask8)0xFF,		\
  				 (__v8di)(__m512i)INDEX,		\
  				 (__v8sf)(__m256)V1, (int)SCALE)
  
  #define _mm512_mask_i64scatter_ps(ADDR, MASK, INDEX, V1, SCALE)		\
!   __builtin_ia32_scatterdiv16sf ((void *)ADDR, (__mmask16)MASK,		\
  				 (__v8di)(__m512i)INDEX,		\
  				 (__v8sf)(__m256)V1, (int)SCALE)
  
  #define _mm512_i64scatter_pd(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scatterdiv8df ((void *)ADDR, (__mmask8)0xFF,		\
  				(__v8di)(__m512i)INDEX,			\
  				(__v8df)(__m512d)V1, (int)SCALE)
  
  #define _mm512_mask_i64scatter_pd(ADDR, MASK, INDEX, V1, SCALE)		\
!   __builtin_ia32_scatterdiv8df ((void *)ADDR, (__mmask8)MASK,		\
  				(__v8di)(__m512i)INDEX,			\
  				(__v8df)(__m512d)V1, (int)SCALE)
  
  #define _mm512_i32scatter_epi32(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scattersiv16si ((void *)ADDR, (__mmask16)0xFFFF,	\
  				 (__v16si)(__m512i)INDEX,		\
  				 (__v16si)(__m512i)V1, (int)SCALE)
  
  #define _mm512_mask_i32scatter_epi32(ADDR, MASK, INDEX, V1, SCALE)	\
!   __builtin_ia32_scattersiv16si ((void *)ADDR, (__mmask16)MASK,		\
  				 (__v16si)(__m512i)INDEX,		\
  				 (__v16si)(__m512i)V1, (int)SCALE)
  
  #define _mm512_i32scatter_epi64(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scattersiv8di ((void *)ADDR, (__mmask8)0xFF,		\
  				(__v8si)(__m256i)INDEX,			\
  				(__v8di)(__m512i)V1, (int)SCALE)
  
  #define _mm512_mask_i32scatter_epi64(ADDR, MASK, INDEX, V1, SCALE)	\
!   __builtin_ia32_scattersiv8di ((void *)ADDR, (__mmask8)MASK,		\
  				(__v8si)(__m256i)INDEX,			\
  				(__v8di)(__m512i)V1, (int)SCALE)
  
  #define _mm512_i64scatter_epi32(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scatterdiv16si ((void *)ADDR, (__mmask8)0xFF,		\
  				 (__v8di)(__m512i)INDEX,		\
  				 (__v8si)(__m256i)V1, (int)SCALE)
  
  #define _mm512_mask_i64scatter_epi32(ADDR, MASK, INDEX, V1, SCALE)	\
!   __builtin_ia32_scatterdiv16si ((void *)ADDR, (__mmask8)MASK,		\
  				 (__v8di)(__m512i)INDEX,		\
  				 (__v8si)(__m256i)V1, (int)SCALE)
  
  #define _mm512_i64scatter_epi64(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scatterdiv8di ((void *)ADDR, (__mmask8)0xFF,		\
  				(__v8di)(__m512i)INDEX,			\
  				(__v8di)(__m512i)V1, (int)SCALE)
  
  #define _mm512_mask_i64scatter_epi64(ADDR, MASK, INDEX, V1, SCALE)	\
!   __builtin_ia32_scatterdiv8di ((void *)ADDR, (__mmask8)MASK,		\
  				(__v8di)(__m512i)INDEX,			\
  				(__v8di)(__m512i)V1, (int)SCALE)
  #endif
*************** _mm512_max_epi64 (__m512i __A, __m512i _
*** 10123,10129 ****
    return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
  						  (__v8di) __B,
  						  (__v8di)
! 						  _mm512_undefined_si512 (),
  						  (__mmask8) -1);
  }
  
--- 10126,10132 ----
    return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
  						  (__v8di) __B,
  						  (__v8di)
! 						  _mm512_undefined_epi32 (),
  						  (__mmask8) -1);
  }
  
*************** _mm512_min_epi64 (__m512i __A, __m512i _
*** 10154,10160 ****
    return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
  						  (__v8di) __B,
  						  (__v8di)
! 						  _mm512_undefined_si512 (),
  						  (__mmask8) -1);
  }
  
--- 10157,10163 ----
    return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
  						  (__v8di) __B,
  						  (__v8di)
! 						  _mm512_undefined_epi32 (),
  						  (__mmask8) -1);
  }
  
*************** _mm512_max_epu64 (__m512i __A, __m512i _
*** 10185,10191 ****
    return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
  						  (__v8di) __B,
  						  (__v8di)
! 						  _mm512_undefined_si512 (),
  						  (__mmask8) -1);
  }
  
--- 10188,10194 ----
    return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
  						  (__v8di) __B,
  						  (__v8di)
! 						  _mm512_undefined_epi32 (),
  						  (__mmask8) -1);
  }
  
*************** _mm512_min_epu64 (__m512i __A, __m512i _
*** 10216,10222 ****
    return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
  						  (__v8di) __B,
  						  (__v8di)
! 						  _mm512_undefined_si512 (),
  						  (__mmask8) -1);
  }
  
--- 10219,10225 ----
    return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
  						  (__v8di) __B,
  						  (__v8di)
! 						  _mm512_undefined_epi32 (),
  						  (__mmask8) -1);
  }
  
*************** _mm512_max_epi32 (__m512i __A, __m512i _
*** 10247,10253 ****
    return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
  						  (__v16si) __B,
  						  (__v16si)
! 						  _mm512_undefined_si512 (),
  						  (__mmask16) -1);
  }
  
--- 10250,10256 ----
    return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
  						  (__v16si) __B,
  						  (__v16si)
! 						  _mm512_undefined_epi32 (),
  						  (__mmask16) -1);
  }
  
*************** _mm512_min_epi32 (__m512i __A, __m512i _
*** 10278,10284 ****
    return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
  						  (__v16si) __B,
  						  (__v16si)
! 						  _mm512_undefined_si512 (),
  						  (__mmask16) -1);
  }
  
--- 10281,10287 ----
    return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
  						  (__v16si) __B,
  						  (__v16si)
! 						  _mm512_undefined_epi32 (),
  						  (__mmask16) -1);
  }
  
*************** _mm512_max_epu32 (__m512i __A, __m512i _
*** 10309,10315 ****
    return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
  						  (__v16si) __B,
  						  (__v16si)
! 						  _mm512_undefined_si512 (),
  						  (__mmask16) -1);
  }
  
--- 10312,10318 ----
    return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
  						  (__v16si) __B,
  						  (__v16si)
! 						  _mm512_undefined_epi32 (),
  						  (__mmask16) -1);
  }
  
*************** _mm512_min_epu32 (__m512i __A, __m512i _
*** 10340,10346 ****
    return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
  						  (__v16si) __B,
  						  (__v16si)
! 						  _mm512_undefined_si512 (),
  						  (__mmask16) -1);
  }
  
--- 10343,10349 ----
    return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
  						  (__v16si) __B,
  						  (__v16si)
! 						  _mm512_undefined_epi32 (),
  						  (__mmask16) -1);
  }
  
*************** _mm512_cvttps_epi32 (__m512 __A)
*** 11804,11810 ****
  {
    return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
  						     (__v16si)
! 						     _mm512_undefined_si512 (),
  						     (__mmask16) -1,
  						     _MM_FROUND_CUR_DIRECTION);
  }
--- 11807,11813 ----
  {
    return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
  						     (__v16si)
! 						     _mm512_undefined_epi32 (),
  						     (__mmask16) -1,
  						     _MM_FROUND_CUR_DIRECTION);
  }
*************** _mm512_cvttps_epu32 (__m512 __A)
*** 11836,11842 ****
  {
    return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
  						      (__v16si)
! 						      _mm512_undefined_si512 (),
  						      (__mmask16) -1,
  						      _MM_FROUND_CUR_DIRECTION);
  }
--- 11839,11845 ----
  {
    return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
  						      (__v16si)
! 						      _mm512_undefined_epi32 (),
  						      (__mmask16) -1,
  						      _MM_FROUND_CUR_DIRECTION);
  }
*************** _mm512_cvtps_epi32 (__m512 __A)
*** 11868,11874 ****
  {
    return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
  						    (__v16si)
! 						    _mm512_undefined_si512 (),
  						    (__mmask16) -1,
  						    _MM_FROUND_CUR_DIRECTION);
  }
--- 11871,11877 ----
  {
    return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
  						    (__v16si)
! 						    _mm512_undefined_epi32 (),
  						    (__mmask16) -1,
  						    _MM_FROUND_CUR_DIRECTION);
  }
*************** _mm512_cvtps_epu32 (__m512 __A)
*** 11900,11906 ****
  {
    return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
  						     (__v16si)
! 						     _mm512_undefined_si512 (),
  						     (__mmask16) -1,
  						     _MM_FROUND_CUR_DIRECTION);
  }
--- 11903,11909 ----
  {
    return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
  						     (__v16si)
! 						     _mm512_undefined_epi32 (),
  						     (__mmask16) -1,
  						     _MM_FROUND_CUR_DIRECTION);
  }
diff -Nrcpad gcc-5.4.0/gcc/config/i386/avx512ifmaintrin.h gcc-5.5.0/gcc/config/i386/avx512ifmaintrin.h
*** gcc-5.4.0/gcc/config/i386/avx512ifmaintrin.h	Mon Jan  5 12:33:28 2015
--- gcc-5.5.0/gcc/config/i386/avx512ifmaintrin.h	Mon Aug 22 18:57:37 2016
*************** _mm512_madd52lo_epu64 (__m512i __X, __m5
*** 41,47 ****
    return (__m512i) __builtin_ia32_vpmadd52luq512_mask ((__v8di) __X,
  						       (__v8di) __Y,
  						       (__v8di) __Z,
! 						       (__mmask8) - 1);
  }
  
  extern __inline __m512i
--- 41,47 ----
    return (__m512i) __builtin_ia32_vpmadd52luq512_mask ((__v8di) __X,
  						       (__v8di) __Y,
  						       (__v8di) __Z,
! 						       (__mmask8) -1);
  }
  
  extern __inline __m512i
*************** _mm512_madd52hi_epu64 (__m512i __X, __m5
*** 51,57 ****
    return (__m512i) __builtin_ia32_vpmadd52huq512_mask ((__v8di) __X,
  						       (__v8di) __Y,
  						       (__v8di) __Z,
! 						       (__mmask8) - 1);
  }
  
  extern __inline __m512i
--- 51,57 ----
    return (__m512i) __builtin_ia32_vpmadd52huq512_mask ((__v8di) __X,
  						       (__v8di) __Y,
  						       (__v8di) __Z,
! 						       (__mmask8) -1);
  }
  
  extern __inline __m512i
diff -Nrcpad gcc-5.4.0/gcc/config/i386/avx512ifmavlintrin.h gcc-5.5.0/gcc/config/i386/avx512ifmavlintrin.h
*** gcc-5.4.0/gcc/config/i386/avx512ifmavlintrin.h	Mon Jan  5 12:33:28 2015
--- gcc-5.5.0/gcc/config/i386/avx512ifmavlintrin.h	Mon Aug 22 18:57:37 2016
*************** _mm_madd52lo_epu64 (__m128i __X, __m128i
*** 41,47 ****
    return (__m128i) __builtin_ia32_vpmadd52luq128_mask ((__v2di) __X,
  						       (__v2di) __Y,
  						       (__v2di) __Z,
! 						       (__mmask8) - 1);
  }
  
  extern __inline __m128i
--- 41,47 ----
    return (__m128i) __builtin_ia32_vpmadd52luq128_mask ((__v2di) __X,
  						       (__v2di) __Y,
  						       (__v2di) __Z,
! 						       (__mmask8) -1);
  }
  
  extern __inline __m128i
*************** _mm_madd52hi_epu64 (__m128i __X, __m128i
*** 51,57 ****
    return (__m128i) __builtin_ia32_vpmadd52huq128_mask ((__v2di) __X,
  						       (__v2di) __Y,
  						       (__v2di) __Z,
! 						       (__mmask8) - 1);
  }
  
  extern __inline __m256i
--- 51,57 ----
    return (__m128i) __builtin_ia32_vpmadd52huq128_mask ((__v2di) __X,
  						       (__v2di) __Y,
  						       (__v2di) __Z,
! 						       (__mmask8) -1);
  }
  
  extern __inline __m256i
*************** _mm256_madd52lo_epu64 (__m256i __X, __m2
*** 61,67 ****
    return (__m256i) __builtin_ia32_vpmadd52luq256_mask ((__v4di) __X,
  						       (__v4di) __Y,
  						       (__v4di) __Z,
! 						       (__mmask8) - 1);
  }
  
  extern __inline __m256i
--- 61,67 ----
    return (__m256i) __builtin_ia32_vpmadd52luq256_mask ((__v4di) __X,
  						       (__v4di) __Y,
  						       (__v4di) __Z,
! 						       (__mmask8) -1);
  }
  
  extern __inline __m256i
*************** _mm256_madd52hi_epu64 (__m256i __X, __m2
*** 71,77 ****
    return (__m256i) __builtin_ia32_vpmadd52huq256_mask ((__v4di) __X,
  						       (__v4di) __Y,
  						       (__v4di) __Z,
! 						       (__mmask8) - 1);
  }
  
  extern __inline __m128i
--- 71,77 ----
    return (__m256i) __builtin_ia32_vpmadd52huq256_mask ((__v4di) __X,
  						       (__v4di) __Y,
  						       (__v4di) __Z,
! 						       (__mmask8) -1);
  }
  
  extern __inline __m128i
diff -Nrcpad gcc-5.4.0/gcc/config/i386/avx512pfintrin.h gcc-5.5.0/gcc/config/i386/avx512pfintrin.h
*** gcc-5.4.0/gcc/config/i386/avx512pfintrin.h	Mon Jan  5 12:33:28 2015
--- gcc-5.5.0/gcc/config/i386/avx512pfintrin.h	Thu Jun  1 21:51:51 2017
*************** typedef unsigned short __mmask16;
*** 48,207 ****
  #ifdef __OPTIMIZE__
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_prefetch_i32gather_pd (__m256i index, __mmask8 mask,
! 				   void *addr, int scale, int hint)
  {
!   __builtin_ia32_gatherpfdpd (mask, (__v8si) index, (long long const *) addr,
! 			      scale, hint);
  }
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_prefetch_i32gather_ps (__m512i index, __mmask16 mask,
! 				   void *addr, int scale, int hint)
  {
!   __builtin_ia32_gatherpfdps (mask, (__v16si) index, (int const *) addr,
! 			      scale, hint);
  }
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_prefetch_i64gather_pd (__m512i index, __mmask8 mask,
! 				   void *addr, int scale, int hint)
  {
!   __builtin_ia32_gatherpfqpd (mask, (__v8di) index, (long long const *) addr,
! 			      scale, hint);
  }
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_prefetch_i64gather_ps (__m512i index, __mmask8 mask,
! 				   void *addr, int scale, int hint)
  {
!   __builtin_ia32_gatherpfqps (mask, (__v8di) index, (int const *) addr,
! 			      scale, hint);
  }
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_prefetch_i32scatter_pd (void *addr, __m256i index, int scale,
! 			       int hint)
  {
!   __builtin_ia32_scatterpfdpd ((__mmask8) 0xFF, (__v8si) index, 
! 			       (long long const *)addr, scale, hint);
  }
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_prefetch_i32scatter_ps (void *addr, __m512i index, int scale,
! 			       int hint)
  {
!   __builtin_ia32_scatterpfdps ((__mmask16) 0xFFFF, (__v16si) index, (int const *) addr,
! 			       scale, hint);
  }
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_prefetch_i32scatter_pd (void *addr, __mmask8 mask,
! 				    __m256i index, int scale, int hint)
  {
!   __builtin_ia32_scatterpfdpd (mask, (__v8si) index, (long long const *) addr,
! 			       scale, hint);
  }
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_prefetch_i32scatter_ps (void *addr, __mmask16 mask,
! 				    __m512i index, int scale, int hint)
  {
!   __builtin_ia32_scatterpfdps (mask, (__v16si) index, (int const *) addr,
! 			       scale, hint);
  }
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_prefetch_i64scatter_pd (void *addr, __m512i index, int scale,
! 			       int hint)
  {
!   __builtin_ia32_scatterpfqpd ((__mmask8) 0xFF, (__v8di) index, (long long const *) addr,
! 			       scale, hint);
  }
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_prefetch_i64scatter_ps (void *addr, __m512i index, int scale,
! 			       int hint)
  {
!   __builtin_ia32_scatterpfqps ((__mmask8) 0xFF, (__v8di) index, (int const *) addr,
! 			       scale, hint);
  }
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_prefetch_i64scatter_pd (void *addr, __mmask16 mask,
! 				    __m512i index, int scale, int hint)
  {
!   __builtin_ia32_scatterpfqpd (mask, (__v8di) index, (long long const *) addr,
! 			       scale, hint);
  }
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_prefetch_i64scatter_ps (void *addr, __mmask16 mask,
! 				    __m512i index, int scale, int hint)
  {
!   __builtin_ia32_scatterpfqps (mask, (__v8di) index, (int const *) addr,
! 			       scale, hint);
  }
  
  #else
  #define _mm512_mask_prefetch_i32gather_pd(INDEX, MASK, ADDR, SCALE, HINT)    \
    __builtin_ia32_gatherpfdpd ((__mmask8)MASK, (__v8si)(__m256i)INDEX,	     \
! 			      (long long const *)ADDR, (int)SCALE, (int)HINT)
  
  #define _mm512_mask_prefetch_i32gather_ps(INDEX, MASK, ADDR, SCALE, HINT)    \
    __builtin_ia32_gatherpfdps ((__mmask16)MASK, (__v16si)(__m512i)INDEX,      \
! 			      (int const *)ADDR, (int)SCALE, (int)HINT)
  
  #define _mm512_mask_prefetch_i64gather_pd(INDEX, MASK, ADDR, SCALE, HINT)    \
    __builtin_ia32_gatherpfqpd ((__mmask8)MASK, (__v8di)(__m512i)INDEX,	     \
! 			      (long long const *)ADDR, (int)SCALE, (int)HINT)
  
  #define _mm512_mask_prefetch_i64gather_ps(INDEX, MASK, ADDR, SCALE, HINT)    \
    __builtin_ia32_gatherpfqps ((__mmask8)MASK, (__v8di)(__m512i)INDEX,	     \
! 			      (int const *)ADDR, (int)SCALE, (int)HINT)
  
  #define _mm512_prefetch_i32scatter_pd(ADDR, INDEX, SCALE, HINT)              \
    __builtin_ia32_scatterpfdpd ((__mmask8)0xFF, (__v8si)(__m256i)INDEX,       \
! 			       (long long const *)ADDR, (int)SCALE, (int)HINT)
  
  #define _mm512_prefetch_i32scatter_ps(ADDR, INDEX, SCALE, HINT)              \
    __builtin_ia32_scatterpfdps ((__mmask16)0xFFFF, (__v16si)(__m512i)INDEX,   \
! 			       (int const *)ADDR, (int)SCALE, (int)HINT)
  
  #define _mm512_mask_prefetch_i32scatter_pd(ADDR, MASK, INDEX, SCALE, HINT)   \
    __builtin_ia32_scatterpfdpd ((__mmask8)MASK, (__v8si)(__m256i)INDEX,       \
! 			       (long long const *)ADDR, (int)SCALE, (int)HINT)
  
  #define _mm512_mask_prefetch_i32scatter_ps(ADDR, MASK, INDEX, SCALE, HINT)   \
    __builtin_ia32_scatterpfdps ((__mmask16)MASK, (__v16si)(__m512i)INDEX,     \
! 			       (int const *)ADDR, (int)SCALE, (int)HINT)
  
  #define _mm512_prefetch_i64scatter_pd(ADDR, INDEX, SCALE, HINT)              \
    __builtin_ia32_scatterpfqpd ((__mmask8)0xFF, (__v8di)(__m512i)INDEX,	     \
! 			       (long long const *)ADDR, (int)SCALE, (int)HINT)
  
  #define _mm512_prefetch_i64scatter_ps(ADDR, INDEX, SCALE, HINT)              \
    __builtin_ia32_scatterpfqps ((__mmask8)0xFF, (__v8di)(__m512i)INDEX,	     \
! 			       (int const *)ADDR, (int)SCALE, (int)HINT)
  
  #define _mm512_mask_prefetch_i64scatter_pd(ADDR, MASK, INDEX, SCALE, HINT)   \
    __builtin_ia32_scatterpfqpd ((__mmask8)MASK, (__v8di)(__m512i)INDEX,	     \
! 			       (long long const *)ADDR, (int)SCALE, (int)HINT)
  
  #define _mm512_mask_prefetch_i64scatter_ps(ADDR, MASK, INDEX, SCALE, HINT)   \
    __builtin_ia32_scatterpfqps ((__mmask8)MASK, (__v8di)(__m512i)INDEX,	     \
! 			       (int const *)ADDR, (int)SCALE, (int)HINT)
  #endif
  
  #ifdef __DISABLE_AVX512PF__
--- 48,207 ----
  #ifdef __OPTIMIZE__
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_prefetch_i32gather_pd (__m256i __index, __mmask8 __mask,
! 				   void const *__addr, int __scale, int __hint)
  {
!   __builtin_ia32_gatherpfdpd (__mask, (__v8si) __index,
! 			      __addr, __scale, __hint);
  }
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_prefetch_i32gather_ps (__m512i __index, __mmask16 __mask,
! 				   void const *__addr, int __scale, int __hint)
  {
!   __builtin_ia32_gatherpfdps (__mask, (__v16si) __index, __addr,
! 			      __scale, __hint);
  }
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_prefetch_i64gather_pd (__m512i __index, __mmask8 __mask,
! 				   void const *__addr, int __scale, int __hint)
  {
!   __builtin_ia32_gatherpfqpd (__mask, (__v8di) __index,
! 			      __addr, __scale, __hint);
  }
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_prefetch_i64gather_ps (__m512i __index, __mmask8 __mask,
! 				   void const *__addr, int __scale, int __hint)
  {
!   __builtin_ia32_gatherpfqps (__mask, (__v8di) __index, __addr,
! 			      __scale, __hint);
  }
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_prefetch_i32scatter_pd (void *__addr, __m256i __index, int __scale,
! 			       int __hint)
  {
!   __builtin_ia32_scatterpfdpd ((__mmask8) 0xFF, (__v8si) __index,
! 			       __addr, __scale, __hint);
  }
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_prefetch_i32scatter_ps (void *__addr, __m512i __index, int __scale,
! 			       int __hint)
  {
!   __builtin_ia32_scatterpfdps ((__mmask16) 0xFFFF, (__v16si) __index,
! 			       __addr, __scale, __hint);
  }
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_prefetch_i32scatter_pd (void *__addr, __mmask8 __mask,
! 				    __m256i __index, int __scale, int __hint)
  {
!   __builtin_ia32_scatterpfdpd (__mask, (__v8si) __index,
! 			       __addr, __scale, __hint);
  }
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_prefetch_i32scatter_ps (void *__addr, __mmask16 __mask,
! 				    __m512i __index, int __scale, int __hint)
  {
!   __builtin_ia32_scatterpfdps (__mask, (__v16si) __index, __addr,
! 			       __scale, __hint);
  }
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_prefetch_i64scatter_pd (void *__addr, __m512i __index, int __scale,
! 			       int __hint)
  {
!   __builtin_ia32_scatterpfqpd ((__mmask8) 0xFF, (__v8di) __index,
! 			       __addr, __scale, __hint);
  }
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_prefetch_i64scatter_ps (void *__addr, __m512i __index, int __scale,
! 			       int __hint)
  {
!   __builtin_ia32_scatterpfqps ((__mmask8) 0xFF, (__v8di) __index,
! 			       __addr, __scale, __hint);
  }
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_prefetch_i64scatter_pd (void *__addr, __mmask16 __mask,
! 				    __m512i __index, int __scale, int __hint)
  {
!   __builtin_ia32_scatterpfqpd (__mask, (__v8di) __index,
! 			       __addr, __scale, __hint);
  }
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_prefetch_i64scatter_ps (void *__addr, __mmask16 __mask,
! 				    __m512i __index, int __scale, int __hint)
  {
!   __builtin_ia32_scatterpfqps (__mask, (__v8di) __index, __addr,
! 			       __scale, __hint);
  }
  
  #else
  #define _mm512_mask_prefetch_i32gather_pd(INDEX, MASK, ADDR, SCALE, HINT)    \
    __builtin_ia32_gatherpfdpd ((__mmask8)MASK, (__v8si)(__m256i)INDEX,	     \
! 			      (void const *)ADDR, (int)SCALE, (int)HINT)
  
  #define _mm512_mask_prefetch_i32gather_ps(INDEX, MASK, ADDR, SCALE, HINT)    \
    __builtin_ia32_gatherpfdps ((__mmask16)MASK, (__v16si)(__m512i)INDEX,      \
! 			      (void const *)ADDR, (int)SCALE, (int)HINT)
  
  #define _mm512_mask_prefetch_i64gather_pd(INDEX, MASK, ADDR, SCALE, HINT)    \
    __builtin_ia32_gatherpfqpd ((__mmask8)MASK, (__v8di)(__m512i)INDEX,	     \
! 			      (void *)ADDR, (int)SCALE, (int)HINT)
  
  #define _mm512_mask_prefetch_i64gather_ps(INDEX, MASK, ADDR, SCALE, HINT)    \
    __builtin_ia32_gatherpfqps ((__mmask8)MASK, (__v8di)(__m512i)INDEX,	     \
! 			      (void *)ADDR, (int)SCALE, (int)HINT)
  
  #define _mm512_prefetch_i32scatter_pd(ADDR, INDEX, SCALE, HINT)              \
    __builtin_ia32_scatterpfdpd ((__mmask8)0xFF, (__v8si)(__m256i)INDEX,       \
! 			       (void *)ADDR, (int)SCALE, (int)HINT)
  
  #define _mm512_prefetch_i32scatter_ps(ADDR, INDEX, SCALE, HINT)              \
    __builtin_ia32_scatterpfdps ((__mmask16)0xFFFF, (__v16si)(__m512i)INDEX,   \
! 			       (void *)ADDR, (int)SCALE, (int)HINT)
  
  #define _mm512_mask_prefetch_i32scatter_pd(ADDR, MASK, INDEX, SCALE, HINT)   \
    __builtin_ia32_scatterpfdpd ((__mmask8)MASK, (__v8si)(__m256i)INDEX,       \
! 			       (void *)ADDR, (int)SCALE, (int)HINT)
  
  #define _mm512_mask_prefetch_i32scatter_ps(ADDR, MASK, INDEX, SCALE, HINT)   \
    __builtin_ia32_scatterpfdps ((__mmask16)MASK, (__v16si)(__m512i)INDEX,     \
! 			       (void *)ADDR, (int)SCALE, (int)HINT)
  
  #define _mm512_prefetch_i64scatter_pd(ADDR, INDEX, SCALE, HINT)              \
    __builtin_ia32_scatterpfqpd ((__mmask8)0xFF, (__v8di)(__m512i)INDEX,	     \
! 			       (void *)ADDR, (int)SCALE, (int)HINT)
  
  #define _mm512_prefetch_i64scatter_ps(ADDR, INDEX, SCALE, HINT)              \
    __builtin_ia32_scatterpfqps ((__mmask8)0xFF, (__v8di)(__m512i)INDEX,	     \
! 			       (void *)ADDR, (int)SCALE, (int)HINT)
  
  #define _mm512_mask_prefetch_i64scatter_pd(ADDR, MASK, INDEX, SCALE, HINT)   \
    __builtin_ia32_scatterpfqpd ((__mmask8)MASK, (__v8di)(__m512i)INDEX,	     \
! 			       (void *)ADDR, (int)SCALE, (int)HINT)
  
  #define _mm512_mask_prefetch_i64scatter_ps(ADDR, MASK, INDEX, SCALE, HINT)   \
    __builtin_ia32_scatterpfqps ((__mmask8)MASK, (__v8di)(__m512i)INDEX,	     \
! 			       (void *)ADDR, (int)SCALE, (int)HINT)
  #endif
  
  #ifdef __DISABLE_AVX512PF__
diff -Nrcpad gcc-5.4.0/gcc/config/i386/avx512vbmiintrin.h gcc-5.5.0/gcc/config/i386/avx512vbmiintrin.h
*** gcc-5.4.0/gcc/config/i386/avx512vbmiintrin.h	Mon Jan  5 12:33:28 2015
--- gcc-5.5.0/gcc/config/i386/avx512vbmiintrin.h	Mon Aug 22 18:57:37 2016
*************** _mm512_multishift_epi64_epi8 (__m512i __
*** 62,68 ****
    return (__m512i) __builtin_ia32_vpmultishiftqb512_mask ((__v64qi) __X,
  							  (__v64qi) __Y,
  							  (__v64qi)
! 							  _mm512_undefined_si512 (),
  							  (__mmask64) -1);
  }
  
--- 62,68 ----
    return (__m512i) __builtin_ia32_vpmultishiftqb512_mask ((__v64qi) __X,
  							  (__v64qi) __Y,
  							  (__v64qi)
! 							  _mm512_undefined_epi32 (),
  							  (__mmask64) -1);
  }
  
*************** _mm512_permutexvar_epi8 (__m512i __A, __
*** 73,79 ****
    return (__m512i) __builtin_ia32_permvarqi512_mask ((__v64qi) __B,
  						     (__v64qi) __A,
  						     (__v64qi)
! 						     _mm512_undefined_si512 (),
  						     (__mmask64) -1);
  }
  
--- 73,79 ----
    return (__m512i) __builtin_ia32_permvarqi512_mask ((__v64qi) __B,
  						     (__v64qi) __A,
  						     (__v64qi)
! 						     _mm512_undefined_epi32 (),
  						     (__mmask64) -1);
  }
  
*************** _mm512_permutex2var_epi8 (__m512i __A, _
*** 108,115 ****
  							/* idx */ ,
  							(__v64qi) __A,
  							(__v64qi) __B,
! 							(__mmask64) -
! 							1);
  }
  
  extern __inline __m512i
--- 108,114 ----
  							/* idx */ ,
  							(__v64qi) __A,
  							(__v64qi) __B,
! 							(__mmask64) -1);
  }
  
  extern __inline __m512i
diff -Nrcpad gcc-5.4.0/gcc/config/i386/avx512vbmivlintrin.h gcc-5.5.0/gcc/config/i386/avx512vbmivlintrin.h
*** gcc-5.4.0/gcc/config/i386/avx512vbmivlintrin.h	Mon Jan  5 12:33:28 2015
--- gcc-5.5.0/gcc/config/i386/avx512vbmivlintrin.h	Mon Aug 22 18:57:37 2016
*************** _mm256_permutex2var_epi8 (__m256i __A, _
*** 173,180 ****
  							/* idx */ ,
  							(__v32qi) __A,
  							(__v32qi) __B,
! 							(__mmask32) -
! 							1);
  }
  
  extern __inline __m256i
--- 173,179 ----
  							/* idx */ ,
  							(__v32qi) __A,
  							(__v32qi) __B,
! 							(__mmask32) -1);
  }
  
  extern __inline __m256i
*************** _mm_permutex2var_epi8 (__m128i __A, __m1
*** 224,231 ****
  							/* idx */ ,
  							(__v16qi) __A,
  							(__v16qi) __B,
! 							(__mmask16) -
! 							1);
  }
  
  extern __inline __m128i
--- 223,229 ----
  							/* idx */ ,
  							(__v16qi) __A,
  							(__v16qi) __B,
! 							(__mmask16) -1);
  }
  
  extern __inline __m128i
diff -Nrcpad gcc-5.4.0/gcc/config/i386/avx512vlbwintrin.h gcc-5.5.0/gcc/config/i386/avx512vlbwintrin.h
*** gcc-5.4.0/gcc/config/i386/avx512vlbwintrin.h	Mon Jan  5 12:33:28 2015
--- gcc-5.5.0/gcc/config/i386/avx512vlbwintrin.h	Mon Aug 22 18:57:37 2016
*************** _mm256_permutex2var_epi16 (__m256i __A,
*** 575,582 ****
  							/* idx */ ,
  							(__v16hi) __A,
  							(__v16hi) __B,
! 							(__mmask16) -
! 							1);
  }
  
  extern __inline __m256i
--- 575,581 ----
  							/* idx */ ,
  							(__v16hi) __A,
  							(__v16hi) __B,
! 							(__mmask16) -1);
  }
  
  extern __inline __m256i
*************** _mm_permutex2var_epi16 (__m128i __A, __m
*** 626,633 ****
  							/* idx */ ,
  							(__v8hi) __A,
  							(__v8hi) __B,
! 							(__mmask8) -
! 							1);
  }
  
  extern __inline __m128i
--- 625,631 ----
  							/* idx */ ,
  							(__v8hi) __A,
  							(__v8hi) __B,
! 							(__mmask8) -1);
  }
  
  extern __inline __m128i
*************** _mm256_cmpneq_epi8_mask (__m256i __X, __
*** 2009,2015 ****
  {
    return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
  						  (__v32qi) __Y, 4,
! 						  (__mmask32) - 1);
  }
  
  extern __inline __mmask32
--- 2007,2013 ----
  {
    return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
  						  (__v32qi) __Y, 4,
! 						  (__mmask32) -1);
  }
  
  extern __inline __mmask32
*************** _mm256_cmplt_epi8_mask (__m256i __X, __m
*** 2018,2024 ****
  {
    return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
  						  (__v32qi) __Y, 1,
! 						  (__mmask32) - 1);
  }
  
  extern __inline __mmask32
--- 2016,2022 ----
  {
    return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
  						  (__v32qi) __Y, 1,
! 						  (__mmask32) -1);
  }
  
  extern __inline __mmask32
*************** _mm256_cmpge_epi8_mask (__m256i __X, __m
*** 2027,2033 ****
  {
    return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
  						  (__v32qi) __Y, 5,
! 						  (__mmask32) - 1);
  }
  
  extern __inline __mmask32
--- 2025,2031 ----
  {
    return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
  						  (__v32qi) __Y, 5,
! 						  (__mmask32) -1);
  }
  
  extern __inline __mmask32
*************** _mm256_cmple_epi8_mask (__m256i __X, __m
*** 2036,2042 ****
  {
    return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
  						  (__v32qi) __Y, 2,
! 						  (__mmask32) - 1);
  }
  
  extern __inline __mmask16
--- 2034,2040 ----
  {
    return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
  						  (__v32qi) __Y, 2,
! 						  (__mmask32) -1);
  }
  
  extern __inline __mmask16
*************** _mm256_cmpneq_epi16_mask (__m256i __X, _
*** 2045,2051 ****
  {
    return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
  						  (__v16hi) __Y, 4,
! 						  (__mmask16) - 1);
  }
  
  extern __inline __mmask16
--- 2043,2049 ----
  {
    return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
  						  (__v16hi) __Y, 4,
! 						  (__mmask16) -1);
  }
  
  extern __inline __mmask16
*************** _mm256_cmplt_epi16_mask (__m256i __X, __
*** 2054,2060 ****
  {
    return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
  						  (__v16hi) __Y, 1,
! 						  (__mmask16) - 1);
  }
  
  extern __inline __mmask16
--- 2052,2058 ----
  {
    return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
  						  (__v16hi) __Y, 1,
! 						  (__mmask16) -1);
  }
  
  extern __inline __mmask16
*************** _mm256_cmpge_epi16_mask (__m256i __X, __
*** 2063,2069 ****
  {
    return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
  						  (__v16hi) __Y, 5,
! 						  (__mmask16) - 1);
  }
  
  extern __inline __mmask16
--- 2061,2067 ----
  {
    return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
  						  (__v16hi) __Y, 5,
! 						  (__mmask16) -1);
  }
  
  extern __inline __mmask16
*************** _mm256_cmple_epi16_mask (__m256i __X, __
*** 2072,2078 ****
  {
    return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
  						  (__v16hi) __Y, 2,
! 						  (__mmask16) - 1);
  }
  
  extern __inline __mmask16
--- 2070,2076 ----
  {
    return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
  						  (__v16hi) __Y, 2,
! 						  (__mmask16) -1);
  }
  
  extern __inline __mmask16
*************** _mm_cmpneq_epu8_mask (__m128i __X, __m12
*** 2081,2087 ****
  {
    return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
  						   (__v16qi) __Y, 4,
! 						   (__mmask16) - 1);
  }
  
  extern __inline __mmask16
--- 2079,2085 ----
  {
    return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
  						   (__v16qi) __Y, 4,
! 						   (__mmask16) -1);
  }
  
  extern __inline __mmask16
*************** _mm_cmplt_epu8_mask (__m128i __X, __m128
*** 2090,2096 ****
  {
    return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
  						   (__v16qi) __Y, 1,
! 						   (__mmask16) - 1);
  }
  
  extern __inline __mmask16
--- 2088,2094 ----
  {
    return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
  						   (__v16qi) __Y, 1,
! 						   (__mmask16) -1);
  }
  
  extern __inline __mmask16
*************** _mm_cmpge_epu8_mask (__m128i __X, __m128
*** 2099,2105 ****
  {
    return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
  						   (__v16qi) __Y, 5,
! 						   (__mmask16) - 1);
  }
  
  extern __inline __mmask16
--- 2097,2103 ----
  {
    return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
  						   (__v16qi) __Y, 5,
! 						   (__mmask16) -1);
  }
  
  extern __inline __mmask16
*************** _mm_cmple_epu8_mask (__m128i __X, __m128
*** 2108,2114 ****
  {
    return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
  						   (__v16qi) __Y, 2,
! 						   (__mmask16) - 1);
  }
  
  extern __inline __mmask8
--- 2106,2112 ----
  {
    return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
  						   (__v16qi) __Y, 2,
! 						   (__mmask16) -1);
  }
  
  extern __inline __mmask8
*************** _mm_cmpneq_epu16_mask (__m128i __X, __m1
*** 2117,2123 ****
  {
    return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
  						  (__v8hi) __Y, 4,
! 						  (__mmask8) - 1);
  }
  
  extern __inline __mmask8
--- 2115,2121 ----
  {
    return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
  						  (__v8hi) __Y, 4,
! 						  (__mmask8) -1);
  }
  
  extern __inline __mmask8
*************** _mm_cmplt_epu16_mask (__m128i __X, __m12
*** 2126,2132 ****
  {
    return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
  						  (__v8hi) __Y, 1,
! 						  (__mmask8) - 1);
  }
  
  extern __inline __mmask8
--- 2124,2130 ----
  {
    return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
  						  (__v8hi) __Y, 1,
! 						  (__mmask8) -1);
  }
  
  extern __inline __mmask8
*************** _mm_cmpge_epu16_mask (__m128i __X, __m12
*** 2135,2141 ****
  {
    return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
  						  (__v8hi) __Y, 5,
! 						  (__mmask8) - 1);
  }
  
  extern __inline __mmask8
--- 2133,2139 ----
  {
    return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
  						  (__v8hi) __Y, 5,
! 						  (__mmask8) -1);
  }
  
  extern __inline __mmask8
*************** _mm_cmple_epu16_mask (__m128i __X, __m12
*** 2144,2150 ****
  {
    return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
  						  (__v8hi) __Y, 2,
! 						  (__mmask8) - 1);
  }
  
  extern __inline __mmask16
--- 2142,2148 ----
  {
    return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
  						  (__v8hi) __Y, 2,
! 						  (__mmask8) -1);
  }
  
  extern __inline __mmask16
*************** _mm_cmpneq_epi8_mask (__m128i __X, __m12
*** 2153,2159 ****
  {
    return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
  						  (__v16qi) __Y, 4,
! 						  (__mmask16) - 1);
  }
  
  extern __inline __mmask16
--- 2151,2157 ----
  {
    return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
  						  (__v16qi) __Y, 4,
! 						  (__mmask16) -1);
  }
  
  extern __inline __mmask16
*************** _mm_cmplt_epi8_mask (__m128i __X, __m128
*** 2162,2168 ****
  {
    return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
  						  (__v16qi) __Y, 1,
! 						  (__mmask16) - 1);
  }
  
  extern __inline __mmask16
--- 2160,2166 ----
  {
    return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
  						  (__v16qi) __Y, 1,
! 						  (__mmask16) -1);
  }
  
  extern __inline __mmask16
*************** _mm_cmpge_epi8_mask (__m128i __X, __m128
*** 2171,2177 ****
  {
    return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
  						  (__v16qi) __Y, 5,
! 						  (__mmask16) - 1);
  }
  
  extern __inline __mmask16
--- 2169,2175 ----
  {
    return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
  						  (__v16qi) __Y, 5,
! 						  (__mmask16) -1);
  }
  
  extern __inline __mmask16
*************** _mm_cmple_epi8_mask (__m128i __X, __m128
*** 2180,2186 ****
  {
    return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
  						  (__v16qi) __Y, 2,
! 						  (__mmask16) - 1);
  }
  
  extern __inline __mmask8
--- 2178,2184 ----
  {
    return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
  						  (__v16qi) __Y, 2,
! 						  (__mmask16) -1);
  }
  
  extern __inline __mmask8
*************** _mm_cmpneq_epi16_mask (__m128i __X, __m1
*** 2189,2195 ****
  {
    return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
  						 (__v8hi) __Y, 4,
! 						 (__mmask8) - 1);
  }
  
  extern __inline __mmask8
--- 2187,2193 ----
  {
    return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
  						 (__v8hi) __Y, 4,
! 						 (__mmask8) -1);
  }
  
  extern __inline __mmask8
*************** _mm_cmplt_epi16_mask (__m128i __X, __m12
*** 2198,2204 ****
  {
    return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
  						 (__v8hi) __Y, 1,
! 						 (__mmask8) - 1);
  }
  
  extern __inline __mmask8
--- 2196,2202 ----
  {
    return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
  						 (__v8hi) __Y, 1,
! 						 (__mmask8) -1);
  }
  
  extern __inline __mmask8
*************** _mm_cmpge_epi16_mask (__m128i __X, __m12
*** 2207,2213 ****
  {
    return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
  						 (__v8hi) __Y, 5,
! 						 (__mmask8) - 1);
  }
  
  extern __inline __mmask8
--- 2205,2211 ----
  {
    return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
  						 (__v8hi) __Y, 5,
! 						 (__mmask8) -1);
  }
  
  extern __inline __mmask8
*************** _mm_cmple_epi16_mask (__m128i __X, __m12
*** 2216,2222 ****
  {
    return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
  						 (__v8hi) __Y, 2,
! 						 (__mmask8) - 1);
  }
  
  extern __inline __m256i
--- 2214,2220 ----
  {
    return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
  						 (__v8hi) __Y, 2,
! 						 (__mmask8) -1);
  }
  
  extern __inline __m256i
*************** _mm256_cmpneq_epu8_mask (__m256i __X, __
*** 3609,3615 ****
  {
    return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
  						   (__v32qi) __Y, 4,
! 						   (__mmask32) - 1);
  }
  
  extern __inline __mmask32
--- 3607,3613 ----
  {
    return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
  						   (__v32qi) __Y, 4,
! 						   (__mmask32) -1);
  }
  
  extern __inline __mmask32
*************** _mm256_cmplt_epu8_mask (__m256i __X, __m
*** 3618,3624 ****
  {
    return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
  						   (__v32qi) __Y, 1,
! 						   (__mmask32) - 1);
  }
  
  extern __inline __mmask32
--- 3616,3622 ----
  {
    return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
  						   (__v32qi) __Y, 1,
! 						   (__mmask32) -1);
  }
  
  extern __inline __mmask32
*************** _mm256_cmpge_epu8_mask (__m256i __X, __m
*** 3627,3633 ****
  {
    return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
  						   (__v32qi) __Y, 5,
! 						   (__mmask32) - 1);
  }
  
  extern __inline __mmask32
--- 3625,3631 ----
  {
    return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
  						   (__v32qi) __Y, 5,
! 						   (__mmask32) -1);
  }
  
  extern __inline __mmask32
*************** _mm256_cmple_epu8_mask (__m256i __X, __m
*** 3636,3642 ****
  {
    return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
  						   (__v32qi) __Y, 2,
! 						   (__mmask32) - 1);
  }
  
  extern __inline __mmask16
--- 3634,3640 ----
  {
    return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
  						   (__v32qi) __Y, 2,
! 						   (__mmask32) -1);
  }
  
  extern __inline __mmask16
*************** _mm256_cmpneq_epu16_mask (__m256i __X, _
*** 3645,3651 ****
  {
    return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
  						   (__v16hi) __Y, 4,
! 						   (__mmask16) - 1);
  }
  
  extern __inline __mmask16
--- 3643,3649 ----
  {
    return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
  						   (__v16hi) __Y, 4,
! 						   (__mmask16) -1);
  }
  
  extern __inline __mmask16
*************** _mm256_cmplt_epu16_mask (__m256i __X, __
*** 3654,3660 ****
  {
    return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
  						   (__v16hi) __Y, 1,
! 						   (__mmask16) - 1);
  }
  
  extern __inline __mmask16
--- 3652,3658 ----
  {
    return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
  						   (__v16hi) __Y, 1,
! 						   (__mmask16) -1);
  }
  
  extern __inline __mmask16
*************** _mm256_cmpge_epu16_mask (__m256i __X, __
*** 3663,3669 ****
  {
    return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
  						   (__v16hi) __Y, 5,
! 						   (__mmask16) - 1);
  }
  
  extern __inline __mmask16
--- 3661,3667 ----
  {
    return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
  						   (__v16hi) __Y, 5,
! 						   (__mmask16) -1);
  }
  
  extern __inline __mmask16
*************** _mm256_cmple_epu16_mask (__m256i __X, __
*** 3672,3678 ****
  {
    return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
  						   (__v16hi) __Y, 2,
! 						   (__mmask16) - 1);
  }
  
  extern __inline void
--- 3670,3676 ----
  {
    return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
  						   (__v16hi) __Y, 2,
! 						   (__mmask16) -1);
  }
  
  extern __inline void
diff -Nrcpad gcc-5.4.0/gcc/config/i386/avx512vldqintrin.h gcc-5.5.0/gcc/config/i386/avx512vldqintrin.h
*** gcc-5.4.0/gcc/config/i386/avx512vldqintrin.h	Mon Jan  5 12:33:28 2015
--- gcc-5.5.0/gcc/config/i386/avx512vldqintrin.h	Mon Aug 22 18:57:37 2016
*************** _mm256_broadcast_f64x2 (__m128d __A)
*** 389,396 ****
    return (__m256d) __builtin_ia32_broadcastf64x2_256_mask ((__v2df)
  							   __A,
  						           (__v4df)_mm256_undefined_pd(),
! 							   (__mmask8) -
! 							   1);
  }
  
  extern __inline __m256d
--- 389,395 ----
    return (__m256d) __builtin_ia32_broadcastf64x2_256_mask ((__v2df)
  							   __A,
  						           (__v4df)_mm256_undefined_pd(),
! 							   (__mmask8) -1);
  }
  
  extern __inline __m256d
*************** _mm256_broadcast_i64x2 (__m128i __A)
*** 421,428 ****
    return (__m256i) __builtin_ia32_broadcasti64x2_256_mask ((__v2di)
  							   __A,
  						           (__v4di)_mm256_undefined_si256(),
! 							   (__mmask8) -
! 							   1);
  }
  
  extern __inline __m256i
--- 420,426 ----
    return (__m256i) __builtin_ia32_broadcasti64x2_256_mask ((__v2di)
  							   __A,
  						           (__v4di)_mm256_undefined_si256(),
! 							   (__mmask8) -1);
  }
  
  extern __inline __m256i
*************** _mm256_broadcast_f32x2 (__m128 __A)
*** 452,459 ****
  {
    return (__m256) __builtin_ia32_broadcastf32x2_256_mask ((__v4sf) __A,
  						          (__v8sf)_mm256_undefined_ps(),
! 							  (__mmask8) -
! 							  1);
  }
  
  extern __inline __m256
--- 450,456 ----
  {
    return (__m256) __builtin_ia32_broadcastf32x2_256_mask ((__v4sf) __A,
  						          (__v8sf)_mm256_undefined_ps(),
! 							  (__mmask8) -1);
  }
  
  extern __inline __m256
*************** _mm256_broadcast_i32x2 (__m128i __A)
*** 482,489 ****
    return (__m256i) __builtin_ia32_broadcasti32x2_256_mask ((__v4si)
  							   __A,
  						          (__v8si)_mm256_undefined_si256(),
! 							   (__mmask8) -
! 							   1);
  }
  
  extern __inline __m256i
--- 479,485 ----
    return (__m256i) __builtin_ia32_broadcasti32x2_256_mask ((__v4si)
  							   __A,
  						          (__v8si)_mm256_undefined_si256(),
! 							   (__mmask8) -1);
  }
  
  extern __inline __m256i
*************** _mm_broadcast_i32x2 (__m128i __A)
*** 514,521 ****
    return (__m128i) __builtin_ia32_broadcasti32x2_128_mask ((__v4si)
  							   __A,
  						          (__v4si)_mm_undefined_si128(),
! 							   (__mmask8) -
! 							   1);
  }
  
  extern __inline __m128i
--- 510,516 ----
    return (__m128i) __builtin_ia32_broadcasti32x2_128_mask ((__v4si)
  							   __A,
  						          (__v4si)_mm_undefined_si128(),
! 							   (__mmask8) -1);
  }
  
  extern __inline __m128i
*************** _mm256_extractf64x2_pd (__m256d __A, con
*** 1351,1358 ****
  							 __imm,
  							 (__v2df)
  							 _mm_setzero_pd (),
! 							 (__mmask8) -
! 							 1);
  }
  
  extern __inline __m128d
--- 1346,1352 ----
  							 __imm,
  							 (__v2df)
  							 _mm_setzero_pd (),
! 							 (__mmask8) -1);
  }
  
  extern __inline __m128d
*************** _mm256_extracti64x2_epi64 (__m256i __A,
*** 1388,1395 ****
  							 __imm,
  							 (__v2di)
  							 _mm_setzero_di (),
! 							 (__mmask8) -
! 							 1);
  }
  
  extern __inline __m128i
--- 1382,1388 ----
  							 __imm,
  							 (__v2di)
  							 _mm_setzero_di (),
! 							 (__mmask8) -1);
  }
  
  extern __inline __m128i
*************** _mm256_inserti64x2 (__m256i __A, __m128i
*** 1743,1750 ****
  							__imm,
  							(__v4di)
  							_mm256_setzero_si256 (),
! 							(__mmask8) -
! 							1);
  }
  
  extern __inline __m256i
--- 1736,1742 ----
  							__imm,
  							(__v4di)
  							_mm256_setzero_si256 (),
! 							(__mmask8) -1);
  }
  
  extern __inline __m256i
*************** _mm256_insertf64x2 (__m256d __A, __m128d
*** 1783,1790 ****
  							__imm,
  							(__v4df)
  							_mm256_setzero_pd (),
! 							(__mmask8) -
! 							1);
  }
  
  extern __inline __m256d
--- 1775,1781 ----
  							__imm,
  							(__v4df)
  							_mm256_setzero_pd (),
! 							(__mmask8) -1);
  }
  
  extern __inline __m256d
diff -Nrcpad gcc-5.4.0/gcc/config/i386/avx512vlintrin.h gcc-5.5.0/gcc/config/i386/avx512vlintrin.h
*** gcc-5.4.0/gcc/config/i386/avx512vlintrin.h	Mon Jan  5 12:33:28 2015
--- gcc-5.5.0/gcc/config/i386/avx512vlintrin.h	Thu Jun  1 21:51:51 2017
*************** _mm256_broadcast_f32x4 (__m128 __A)
*** 2698,2705 ****
  {
    return (__m256) __builtin_ia32_broadcastf32x4_256_mask ((__v4sf) __A,
  						          (__v8sf)_mm256_undefined_pd (),
! 							  (__mmask8) -
! 							  1);
  }
  
  extern __inline __m256
--- 2698,2704 ----
  {
    return (__m256) __builtin_ia32_broadcastf32x4_256_mask ((__v4sf) __A,
  						          (__v8sf)_mm256_undefined_pd (),
! 							  (__mmask8) -1);
  }
  
  extern __inline __m256
*************** _mm256_broadcast_i32x4 (__m128i __A)
*** 2728,2735 ****
    return (__m256i) __builtin_ia32_broadcasti32x4_256_mask ((__v4si)
  							   __A,
  						           (__v8si)_mm256_undefined_si256 (),
! 							   (__mmask8) -
! 							   1);
  }
  
  extern __inline __m256i
--- 2727,2733 ----
    return (__m256i) __builtin_ia32_broadcasti32x4_256_mask ((__v4si)
  							   __A,
  						           (__v8si)_mm256_undefined_si256 (),
! 							   (__mmask8) -1);
  }
  
  extern __inline __m256i
*************** _mm256_permutex2var_pd (__m256d __A, __m
*** 6293,6300 ****
  							/* idx */ ,
  							(__v4df) __A,
  							(__v4df) __B,
! 							(__mmask8) -
! 							1);
  }
  
  extern __inline __m256d
--- 6291,6297 ----
  							/* idx */ ,
  							(__v4df) __A,
  							(__v4df) __B,
! 							(__mmask8) -1);
  }
  
  extern __inline __m256d
*************** _mm_permutex2var_pd (__m128d __A, __m128
*** 6584,6591 ****
  							/* idx */ ,
  							(__v2df) __A,
  							(__v2df) __B,
! 							(__mmask8) -
! 							1);
  }
  
  extern __inline __m128d
--- 6581,6587 ----
  							/* idx */ ,
  							(__v2df) __A,
  							(__v2df) __B,
! 							(__mmask8) -1);
  }
  
  extern __inline __m128d
*************** _mm256_conflict_epi64 (__m256i __A)
*** 8259,8266 ****
    return (__m256i) __builtin_ia32_vpconflictdi_256_mask ((__v4di) __A,
  							 (__v4di)
  							 _mm256_setzero_si256 (),
! 							 (__mmask8) -
! 							 1);
  }
  
  extern __inline __m256i
--- 8255,8261 ----
    return (__m256i) __builtin_ia32_vpconflictdi_256_mask ((__v4di) __A,
  							 (__v4di)
  							 _mm256_setzero_si256 (),
! 							 (__mmask8) -1);
  }
  
  extern __inline __m256i
*************** _mm256_conflict_epi32 (__m256i __A)
*** 8291,8298 ****
    return (__m256i) __builtin_ia32_vpconflictsi_256_mask ((__v8si) __A,
  							 (__v8si)
  							 _mm256_setzero_si256 (),
! 							 (__mmask8) -
! 							 1);
  }
  
  extern __inline __m256i
--- 8286,8292 ----
    return (__m256i) __builtin_ia32_vpconflictsi_256_mask ((__v8si) __A,
  							 (__v8si)
  							 _mm256_setzero_si256 (),
! 							 (__mmask8) -1);
  }
  
  extern __inline __m256i
*************** _mm_conflict_epi64 (__m128i __A)
*** 8381,8388 ****
    return (__m128i) __builtin_ia32_vpconflictdi_128_mask ((__v2di) __A,
  							 (__v2di)
  							 _mm_setzero_di (),
! 							 (__mmask8) -
! 							 1);
  }
  
  extern __inline __m128i
--- 8375,8381 ----
    return (__m128i) __builtin_ia32_vpconflictdi_128_mask ((__v2di) __A,
  							 (__v2di)
  							 _mm_setzero_di (),
! 							 (__mmask8) -1);
  }
  
  extern __inline __m128i
*************** _mm_conflict_epi32 (__m128i __A)
*** 8413,8420 ****
    return (__m128i) __builtin_ia32_vpconflictsi_128_mask ((__v4si) __A,
  							 (__v4si)
  							 _mm_setzero_si128 (),
! 							 (__mmask8) -
! 							 1);
  }
  
  extern __inline __m128i
--- 8406,8412 ----
    return (__m128i) __builtin_ia32_vpconflictsi_128_mask ((__v4si) __A,
  							 (__v4si)
  							 _mm_setzero_si128 (),
! 							 (__mmask8) -1);
  }
  
  extern __inline __m128i
*************** _mm256_mask_permutexvar_epi32 (__m256i _
*** 9167,9172 ****
--- 9159,9740 ----
  						     __M);
  }
  
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_mask_cmpneq_epu32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+ {
+   return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
+ 						  (__v8si) __Y, 4,
+ 						  (__mmask8) __M);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_cmpneq_epu32_mask (__m256i __X, __m256i __Y)
+ {
+   return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
+ 						  (__v8si) __Y, 4,
+ 						  (__mmask8) -1);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_mask_cmplt_epu32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+ {
+   return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
+ 						  (__v8si) __Y, 1,
+ 						  (__mmask8) __M);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_cmplt_epu32_mask (__m256i __X, __m256i __Y)
+ {
+   return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
+ 						  (__v8si) __Y, 1,
+ 						  (__mmask8) -1);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_mask_cmpge_epu32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+ {
+   return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
+ 						  (__v8si) __Y, 5,
+ 						  (__mmask8) __M);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_cmpge_epu32_mask (__m256i __X, __m256i __Y)
+ {
+   return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
+ 						  (__v8si) __Y, 5,
+ 						  (__mmask8) -1);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_mask_cmple_epu32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+ {
+   return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
+ 						  (__v8si) __Y, 2,
+ 						  (__mmask8) __M);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_cmple_epu32_mask (__m256i __X, __m256i __Y)
+ {
+   return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
+ 						  (__v8si) __Y, 2,
+ 						  (__mmask8) -1);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_mask_cmpneq_epu64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+ {
+   return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
+ 						  (__v4di) __Y, 4,
+ 						  (__mmask8) __M);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_cmpneq_epu64_mask (__m256i __X, __m256i __Y)
+ {
+   return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
+ 						  (__v4di) __Y, 4,
+ 						  (__mmask8) -1);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_mask_cmplt_epu64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+ {
+   return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
+ 						  (__v4di) __Y, 1,
+ 						  (__mmask8) __M);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_cmplt_epu64_mask (__m256i __X, __m256i __Y)
+ {
+   return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
+ 						  (__v4di) __Y, 1,
+ 						  (__mmask8) -1);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_mask_cmpge_epu64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+ {
+   return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
+ 						  (__v4di) __Y, 5,
+ 						  (__mmask8) __M);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_cmpge_epu64_mask (__m256i __X, __m256i __Y)
+ {
+   return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
+ 						  (__v4di) __Y, 5,
+ 						  (__mmask8) -1);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_mask_cmple_epu64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+ {
+   return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
+ 						  (__v4di) __Y, 2,
+ 						  (__mmask8) __M);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_cmple_epu64_mask (__m256i __X, __m256i __Y)
+ {
+   return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
+ 						  (__v4di) __Y, 2,
+ 						  (__mmask8) -1);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_mask_cmpneq_epi32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+ {
+   return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
+ 						 (__v8si) __Y, 4,
+ 						 (__mmask8) __M);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_cmpneq_epi32_mask (__m256i __X, __m256i __Y)
+ {
+   return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
+ 						 (__v8si) __Y, 4,
+ 						 (__mmask8) -1);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_mask_cmplt_epi32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+ {
+   return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
+ 						 (__v8si) __Y, 1,
+ 						 (__mmask8) __M);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_cmplt_epi32_mask (__m256i __X, __m256i __Y)
+ {
+   return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
+ 						 (__v8si) __Y, 1,
+ 						 (__mmask8) -1);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_mask_cmpge_epi32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+ {
+   return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
+ 						 (__v8si) __Y, 5,
+ 						 (__mmask8) __M);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_cmpge_epi32_mask (__m256i __X, __m256i __Y)
+ {
+   return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
+ 						 (__v8si) __Y, 5,
+ 						 (__mmask8) -1);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_mask_cmple_epi32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+ {
+   return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
+ 						 (__v8si) __Y, 2,
+ 						 (__mmask8) __M);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_cmple_epi32_mask (__m256i __X, __m256i __Y)
+ {
+   return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
+ 						 (__v8si) __Y, 2,
+ 						 (__mmask8) -1);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_mask_cmpneq_epi64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+ {
+   return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
+ 						 (__v4di) __Y, 4,
+ 						 (__mmask8) __M);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_cmpneq_epi64_mask (__m256i __X, __m256i __Y)
+ {
+   return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
+ 						 (__v4di) __Y, 4,
+ 						 (__mmask8) -1);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_mask_cmplt_epi64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+ {
+   return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
+ 						 (__v4di) __Y, 1,
+ 						 (__mmask8) __M);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_cmplt_epi64_mask (__m256i __X, __m256i __Y)
+ {
+   return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
+ 						 (__v4di) __Y, 1,
+ 						 (__mmask8) -1);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_mask_cmpge_epi64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+ {
+   return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
+ 						 (__v4di) __Y, 5,
+ 						 (__mmask8) __M);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_cmpge_epi64_mask (__m256i __X, __m256i __Y)
+ {
+   return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
+ 						 (__v4di) __Y, 5,
+ 						 (__mmask8) -1);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_mask_cmple_epi64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
+ {
+   return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
+ 						 (__v4di) __Y, 2,
+ 						 (__mmask8) __M);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_cmple_epi64_mask (__m256i __X, __m256i __Y)
+ {
+   return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
+ 						 (__v4di) __Y, 2,
+ 						 (__mmask8) -1);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_mask_cmpneq_epu32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+ {
+   return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
+ 						  (__v4si) __Y, 4,
+ 						  (__mmask8) __M);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_cmpneq_epu32_mask (__m128i __X, __m128i __Y)
+ {
+   return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
+ 						  (__v4si) __Y, 4,
+ 						  (__mmask8) -1);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_mask_cmplt_epu32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+ {
+   return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
+ 						  (__v4si) __Y, 1,
+ 						  (__mmask8) __M);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_cmplt_epu32_mask (__m128i __X, __m128i __Y)
+ {
+   return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
+ 						  (__v4si) __Y, 1,
+ 						  (__mmask8) -1);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_mask_cmpge_epu32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+ {
+   return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
+ 						  (__v4si) __Y, 5,
+ 						  (__mmask8) __M);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_cmpge_epu32_mask (__m128i __X, __m128i __Y)
+ {
+   return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
+ 						  (__v4si) __Y, 5,
+ 						  (__mmask8) -1);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_mask_cmple_epu32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+ {
+   return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
+ 						  (__v4si) __Y, 2,
+ 						  (__mmask8) __M);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_cmple_epu32_mask (__m128i __X, __m128i __Y)
+ {
+   return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
+ 						  (__v4si) __Y, 2,
+ 						  (__mmask8) -1);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_mask_cmpneq_epu64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+ {
+   return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
+ 						  (__v2di) __Y, 4,
+ 						  (__mmask8) __M);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_cmpneq_epu64_mask (__m128i __X, __m128i __Y)
+ {
+   return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
+ 						  (__v2di) __Y, 4,
+ 						  (__mmask8) -1);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_mask_cmplt_epu64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+ {
+   return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
+ 						  (__v2di) __Y, 1,
+ 						  (__mmask8) __M);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_cmplt_epu64_mask (__m128i __X, __m128i __Y)
+ {
+   return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
+ 						  (__v2di) __Y, 1,
+ 						  (__mmask8) -1);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_mask_cmpge_epu64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+ {
+   return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
+ 						  (__v2di) __Y, 5,
+ 						  (__mmask8) __M);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_cmpge_epu64_mask (__m128i __X, __m128i __Y)
+ {
+   return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
+ 						  (__v2di) __Y, 5,
+ 						  (__mmask8) -1);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_mask_cmple_epu64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+ {
+   return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
+ 						  (__v2di) __Y, 2,
+ 						  (__mmask8) __M);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_cmple_epu64_mask (__m128i __X, __m128i __Y)
+ {
+   return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
+ 						  (__v2di) __Y, 2,
+ 						  (__mmask8) -1);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_mask_cmpneq_epi32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+ {
+   return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
+ 						 (__v4si) __Y, 4,
+ 						 (__mmask8) __M);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_cmpneq_epi32_mask (__m128i __X, __m128i __Y)
+ {
+   return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
+ 						 (__v4si) __Y, 4,
+ 						 (__mmask8) -1);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_mask_cmplt_epi32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+ {
+   return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
+ 						 (__v4si) __Y, 1,
+ 						 (__mmask8) __M);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_cmplt_epi32_mask (__m128i __X, __m128i __Y)
+ {
+   return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
+ 						 (__v4si) __Y, 1,
+ 						 (__mmask8) -1);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_mask_cmpge_epi32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+ {
+   return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
+ 						 (__v4si) __Y, 5,
+ 						 (__mmask8) __M);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_cmpge_epi32_mask (__m128i __X, __m128i __Y)
+ {
+   return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
+ 						 (__v4si) __Y, 5,
+ 						 (__mmask8) -1);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_mask_cmple_epi32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+ {
+   return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
+ 						 (__v4si) __Y, 2,
+ 						 (__mmask8) __M);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_cmple_epi32_mask (__m128i __X, __m128i __Y)
+ {
+   return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
+ 						 (__v4si) __Y, 2,
+ 						 (__mmask8) -1);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_mask_cmpneq_epi64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+ {
+   return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
+ 						 (__v2di) __Y, 4,
+ 						 (__mmask8) __M);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_cmpneq_epi64_mask (__m128i __X, __m128i __Y)
+ {
+   return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
+ 						 (__v2di) __Y, 4,
+ 						 (__mmask8) -1);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_mask_cmplt_epi64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+ {
+   return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
+ 						 (__v2di) __Y, 1,
+ 						 (__mmask8) __M);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_cmplt_epi64_mask (__m128i __X, __m128i __Y)
+ {
+   return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
+ 						 (__v2di) __Y, 1,
+ 						 (__mmask8) -1);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_mask_cmpge_epi64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+ {
+   return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
+ 						 (__v2di) __Y, 5,
+ 						 (__mmask8) __M);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_cmpge_epi64_mask (__m128i __X, __m128i __Y)
+ {
+   return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
+ 						 (__v2di) __Y, 5,
+ 						 (__mmask8) -1);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_mask_cmple_epi64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
+ {
+   return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
+ 						 (__v2di) __Y, 2,
+ 						 (__mmask8) __M);
+ }
+ 
+ extern __inline __mmask8
+   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_cmple_epi64_mask (__m128i __X, __m128i __Y)
+ {
+   return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
+ 						 (__v2di) __Y, 2,
+ 						 (__mmask8) -1);
+ }
+ 
  #ifdef __OPTIMIZE__
  extern __inline __m256i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
*************** _mm256_inserti32x4 (__m256i __A, __m128i
*** 9291,9298 ****
  							__imm,
  							(__v8si)
  							_mm256_setzero_si256 (),
! 							(__mmask8) -
! 							1);
  }
  
  extern __inline __m256i
--- 9859,9865 ----
  							__imm,
  							(__v8si)
  							_mm256_setzero_si256 (),
! 							(__mmask8) -1);
  }
  
  extern __inline __m256i
*************** _mm256_extracti32x4_epi32 (__m256i __A,
*** 9367,9374 ****
  							 __imm,
  							 (__v4si)
  							 _mm_setzero_si128 (),
! 							 (__mmask8) -
! 							 1);
  }
  
  extern __inline __m128i
--- 9934,9940 ----
  							 __imm,
  							 (__v4si)
  							 _mm_setzero_si128 (),
! 							 (__mmask8) -1);
  }
  
  extern __inline __m128i
*************** _mm256_extractf32x4_ps (__m256 __A, cons
*** 9404,9411 ****
  							__imm,
  							(__v4sf)
  							_mm_setzero_ps (),
! 							(__mmask8) -
! 							1);
  }
  
  extern __inline __m128
--- 9970,9976 ----
  							__imm,
  							(__v4sf)
  							_mm_setzero_ps (),
! 							(__mmask8) -1);
  }
  
  extern __inline __m128
*************** _mm_maskz_srli_epi64 (__mmask8 __U, __m1
*** 9807,9817 ****
  extern __inline __m256i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_ternarylogic_epi64 (__m256i __A, __m256i __B, __m256i __C,
! 			   const int imm)
  {
    return (__m256i) __builtin_ia32_pternlogq256_mask ((__v4di) __A,
  						     (__v4di) __B,
! 						     (__v4di) __C, imm,
  						     (__mmask8) -1);
  }
  
--- 10372,10382 ----
  extern __inline __m256i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_ternarylogic_epi64 (__m256i __A, __m256i __B, __m256i __C,
! 			   const int __imm)
  {
    return (__m256i) __builtin_ia32_pternlogq256_mask ((__v4di) __A,
  						     (__v4di) __B,
! 						     (__v4di) __C, __imm,
  						     (__mmask8) -1);
  }
  
*************** extern __inline __m256i
*** 9819,9829 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_ternarylogic_epi64 (__m256i __A, __mmask8 __U,
  				__m256i __B, __m256i __C,
! 				const int imm)
  {
    return (__m256i) __builtin_ia32_pternlogq256_mask ((__v4di) __A,
  						     (__v4di) __B,
! 						     (__v4di) __C, imm,
  						     (__mmask8) __U);
  }
  
--- 10384,10394 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_ternarylogic_epi64 (__m256i __A, __mmask8 __U,
  				__m256i __B, __m256i __C,
! 				const int __imm)
  {
    return (__m256i) __builtin_ia32_pternlogq256_mask ((__v4di) __A,
  						     (__v4di) __B,
! 						     (__v4di) __C, __imm,
  						     (__mmask8) __U);
  }
  
*************** extern __inline __m256i
*** 9831,9853 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_maskz_ternarylogic_epi64 (__mmask8 __U, __m256i __A,
  				 __m256i __B, __m256i __C,
! 				 const int imm)
  {
    return (__m256i) __builtin_ia32_pternlogq256_maskz ((__v4di) __A,
  						      (__v4di) __B,
  						      (__v4di) __C,
! 						      imm,
  						      (__mmask8) __U);
  }
  
  extern __inline __m256i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_ternarylogic_epi32 (__m256i __A, __m256i __B, __m256i __C,
! 			   const int imm)
  {
    return (__m256i) __builtin_ia32_pternlogd256_mask ((__v8si) __A,
  						     (__v8si) __B,
! 						     (__v8si) __C, imm,
  						     (__mmask8) -1);
  }
  
--- 10396,10418 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_maskz_ternarylogic_epi64 (__mmask8 __U, __m256i __A,
  				 __m256i __B, __m256i __C,
! 				 const int __imm)
  {
    return (__m256i) __builtin_ia32_pternlogq256_maskz ((__v4di) __A,
  						      (__v4di) __B,
  						      (__v4di) __C,
! 						      __imm,
  						      (__mmask8) __U);
  }
  
  extern __inline __m256i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_ternarylogic_epi32 (__m256i __A, __m256i __B, __m256i __C,
! 			   const int __imm)
  {
    return (__m256i) __builtin_ia32_pternlogd256_mask ((__v8si) __A,
  						     (__v8si) __B,
! 						     (__v8si) __C, __imm,
  						     (__mmask8) -1);
  }
  
*************** extern __inline __m256i
*** 9855,9865 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_ternarylogic_epi32 (__m256i __A, __mmask8 __U,
  				__m256i __B, __m256i __C,
! 				const int imm)
  {
    return (__m256i) __builtin_ia32_pternlogd256_mask ((__v8si) __A,
  						     (__v8si) __B,
! 						     (__v8si) __C, imm,
  						     (__mmask8) __U);
  }
  
--- 10420,10430 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_ternarylogic_epi32 (__m256i __A, __mmask8 __U,
  				__m256i __B, __m256i __C,
! 				const int __imm)
  {
    return (__m256i) __builtin_ia32_pternlogd256_mask ((__v8si) __A,
  						     (__v8si) __B,
! 						     (__v8si) __C, __imm,
  						     (__mmask8) __U);
  }
  
*************** extern __inline __m256i
*** 9867,9946 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_maskz_ternarylogic_epi32 (__mmask8 __U, __m256i __A,
  				 __m256i __B, __m256i __C,
! 				 const int imm)
  {
    return (__m256i) __builtin_ia32_pternlogd256_maskz ((__v8si) __A,
  						      (__v8si) __B,
  						      (__v8si) __C,
! 						      imm,
  						      (__mmask8) __U);
  }
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_ternarylogic_epi64 (__m128i __A, __m128i __B, __m128i __C,
! 			const int imm)
  {
    return (__m128i) __builtin_ia32_pternlogq128_mask ((__v2di) __A,
  						     (__v2di) __B,
! 						     (__v2di) __C, imm,
  						     (__mmask8) -1);
  }
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_ternarylogic_epi64 (__m128i __A, __mmask8 __U,
! 			     __m128i __B, __m128i __C, const int imm)
  {
    return (__m128i) __builtin_ia32_pternlogq128_mask ((__v2di) __A,
  						     (__v2di) __B,
! 						     (__v2di) __C, imm,
  						     (__mmask8) __U);
  }
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_maskz_ternarylogic_epi64 (__mmask8 __U, __m128i __A,
! 			      __m128i __B, __m128i __C, const int imm)
  {
    return (__m128i) __builtin_ia32_pternlogq128_maskz ((__v2di) __A,
  						      (__v2di) __B,
  						      (__v2di) __C,
! 						      imm,
  						      (__mmask8) __U);
  }
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_ternarylogic_epi32 (__m128i __A, __m128i __B, __m128i __C,
! 			const int imm)
  {
    return (__m128i) __builtin_ia32_pternlogd128_mask ((__v4si) __A,
  						     (__v4si) __B,
! 						     (__v4si) __C, imm,
  						     (__mmask8) -1);
  }
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_ternarylogic_epi32 (__m128i __A, __mmask8 __U,
! 			     __m128i __B, __m128i __C, const int imm)
  {
    return (__m128i) __builtin_ia32_pternlogd128_mask ((__v4si) __A,
  						     (__v4si) __B,
! 						     (__v4si) __C, imm,
  						     (__mmask8) __U);
  }
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_maskz_ternarylogic_epi32 (__mmask8 __U, __m128i __A,
! 			      __m128i __B, __m128i __C, const int imm)
  {
    return (__m128i) __builtin_ia32_pternlogd128_maskz ((__v4si) __A,
  						      (__v4si) __B,
  						      (__v4si) __C,
! 						      imm,
  						      (__mmask8) __U);
  }
  
--- 10432,10511 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_maskz_ternarylogic_epi32 (__mmask8 __U, __m256i __A,
  				 __m256i __B, __m256i __C,
! 				 const int __imm)
  {
    return (__m256i) __builtin_ia32_pternlogd256_maskz ((__v8si) __A,
  						      (__v8si) __B,
  						      (__v8si) __C,
! 						      __imm,
  						      (__mmask8) __U);
  }
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_ternarylogic_epi64 (__m128i __A, __m128i __B, __m128i __C,
! 			const int __imm)
  {
    return (__m128i) __builtin_ia32_pternlogq128_mask ((__v2di) __A,
  						     (__v2di) __B,
! 						     (__v2di) __C, __imm,
  						     (__mmask8) -1);
  }
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_ternarylogic_epi64 (__m128i __A, __mmask8 __U,
! 			     __m128i __B, __m128i __C, const int __imm)
  {
    return (__m128i) __builtin_ia32_pternlogq128_mask ((__v2di) __A,
  						     (__v2di) __B,
! 						     (__v2di) __C, __imm,
  						     (__mmask8) __U);
  }
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_maskz_ternarylogic_epi64 (__mmask8 __U, __m128i __A,
! 			      __m128i __B, __m128i __C, const int __imm)
  {
    return (__m128i) __builtin_ia32_pternlogq128_maskz ((__v2di) __A,
  						      (__v2di) __B,
  						      (__v2di) __C,
! 						      __imm,
  						      (__mmask8) __U);
  }
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_ternarylogic_epi32 (__m128i __A, __m128i __B, __m128i __C,
! 			const int __imm)
  {
    return (__m128i) __builtin_ia32_pternlogd128_mask ((__v4si) __A,
  						     (__v4si) __B,
! 						     (__v4si) __C, __imm,
  						     (__mmask8) -1);
  }
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_ternarylogic_epi32 (__m128i __A, __mmask8 __U,
! 			     __m128i __B, __m128i __C, const int __imm)
  {
    return (__m128i) __builtin_ia32_pternlogd128_mask ((__v4si) __A,
  						     (__v4si) __B,
! 						     (__v4si) __C, __imm,
  						     (__mmask8) __U);
  }
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_maskz_ternarylogic_epi32 (__mmask8 __U, __m128i __A,
! 			      __m128i __B, __m128i __C, const int __imm)
  {
    return (__m128i) __builtin_ia32_pternlogd128_maskz ((__v4si) __A,
  						      (__v4si) __B,
  						      (__v4si) __C,
! 						      __imm,
  						      (__mmask8) __U);
  }
  
*************** _mm_maskz_getmant_pd (__mmask8 __U, __m1
*** 10227,10233 ****
  extern __inline __m256
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mmask_i32gather_ps (__m256 __v1_old, __mmask8 __mask,
! 			   __m256i __index, float const *__addr,
  			   int __scale)
  {
    return (__m256) __builtin_ia32_gather3siv8sf ((__v8sf) __v1_old,
--- 10792,10798 ----
  extern __inline __m256
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mmask_i32gather_ps (__m256 __v1_old, __mmask8 __mask,
! 			   __m256i __index, void const *__addr,
  			   int __scale)
  {
    return (__m256) __builtin_ia32_gather3siv8sf ((__v8sf) __v1_old,
*************** _mm256_mmask_i32gather_ps (__m256 __v1_o
*** 10239,10245 ****
  extern __inline __m128
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mmask_i32gather_ps (__m128 __v1_old, __mmask8 __mask,
! 			__m128i __index, float const *__addr,
  			int __scale)
  {
    return (__m128) __builtin_ia32_gather3siv4sf ((__v4sf) __v1_old,
--- 10804,10810 ----
  extern __inline __m128
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mmask_i32gather_ps (__m128 __v1_old, __mmask8 __mask,
! 			__m128i __index, void const *__addr,
  			int __scale)
  {
    return (__m128) __builtin_ia32_gather3siv4sf ((__v4sf) __v1_old,
*************** _mm_mmask_i32gather_ps (__m128 __v1_old,
*** 10251,10257 ****
  extern __inline __m256d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mmask_i32gather_pd (__m256d __v1_old, __mmask8 __mask,
! 			   __m128i __index, double const *__addr,
  			   int __scale)
  {
    return (__m256d) __builtin_ia32_gather3siv4df ((__v4df) __v1_old,
--- 10816,10822 ----
  extern __inline __m256d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mmask_i32gather_pd (__m256d __v1_old, __mmask8 __mask,
! 			   __m128i __index, void const *__addr,
  			   int __scale)
  {
    return (__m256d) __builtin_ia32_gather3siv4df ((__v4df) __v1_old,
*************** _mm256_mmask_i32gather_pd (__m256d __v1_
*** 10263,10269 ****
  extern __inline __m128d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mmask_i32gather_pd (__m128d __v1_old, __mmask8 __mask,
! 			__m128i __index, double const *__addr,
  			int __scale)
  {
    return (__m128d) __builtin_ia32_gather3siv2df ((__v2df) __v1_old,
--- 10828,10834 ----
  extern __inline __m128d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mmask_i32gather_pd (__m128d __v1_old, __mmask8 __mask,
! 			__m128i __index, void const *__addr,
  			int __scale)
  {
    return (__m128d) __builtin_ia32_gather3siv2df ((__v2df) __v1_old,
*************** _mm_mmask_i32gather_pd (__m128d __v1_old
*** 10275,10281 ****
  extern __inline __m128
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mmask_i64gather_ps (__m128 __v1_old, __mmask8 __mask,
! 			   __m256i __index, float const *__addr,
  			   int __scale)
  {
    return (__m128) __builtin_ia32_gather3div8sf ((__v4sf) __v1_old,
--- 10840,10846 ----
  extern __inline __m128
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mmask_i64gather_ps (__m128 __v1_old, __mmask8 __mask,
! 			   __m256i __index, void const *__addr,
  			   int __scale)
  {
    return (__m128) __builtin_ia32_gather3div8sf ((__v4sf) __v1_old,
*************** _mm256_mmask_i64gather_ps (__m128 __v1_o
*** 10287,10293 ****
  extern __inline __m128
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mmask_i64gather_ps (__m128 __v1_old, __mmask8 __mask,
! 			__m128i __index, float const *__addr,
  			int __scale)
  {
    return (__m128) __builtin_ia32_gather3div4sf ((__v4sf) __v1_old,
--- 10852,10858 ----
  extern __inline __m128
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mmask_i64gather_ps (__m128 __v1_old, __mmask8 __mask,
! 			__m128i __index, void const *__addr,
  			int __scale)
  {
    return (__m128) __builtin_ia32_gather3div4sf ((__v4sf) __v1_old,
*************** _mm_mmask_i64gather_ps (__m128 __v1_old,
*** 10299,10305 ****
  extern __inline __m256d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mmask_i64gather_pd (__m256d __v1_old, __mmask8 __mask,
! 			   __m256i __index, double const *__addr,
  			   int __scale)
  {
    return (__m256d) __builtin_ia32_gather3div4df ((__v4df) __v1_old,
--- 10864,10870 ----
  extern __inline __m256d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mmask_i64gather_pd (__m256d __v1_old, __mmask8 __mask,
! 			   __m256i __index, void const *__addr,
  			   int __scale)
  {
    return (__m256d) __builtin_ia32_gather3div4df ((__v4df) __v1_old,
*************** _mm256_mmask_i64gather_pd (__m256d __v1_
*** 10311,10317 ****
  extern __inline __m128d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mmask_i64gather_pd (__m128d __v1_old, __mmask8 __mask,
! 			__m128i __index, double const *__addr,
  			int __scale)
  {
    return (__m128d) __builtin_ia32_gather3div2df ((__v2df) __v1_old,
--- 10876,10882 ----
  extern __inline __m128d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mmask_i64gather_pd (__m128d __v1_old, __mmask8 __mask,
! 			__m128i __index, void const *__addr,
  			int __scale)
  {
    return (__m128d) __builtin_ia32_gather3div2df ((__v2df) __v1_old,
*************** _mm_mmask_i64gather_pd (__m128d __v1_old
*** 10323,10329 ****
  extern __inline __m256i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mmask_i32gather_epi32 (__m256i __v1_old, __mmask8 __mask,
! 			      __m256i __index, int const *__addr,
  			      int __scale)
  {
    return (__m256i) __builtin_ia32_gather3siv8si ((__v8si) __v1_old,
--- 10888,10894 ----
  extern __inline __m256i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mmask_i32gather_epi32 (__m256i __v1_old, __mmask8 __mask,
! 			      __m256i __index, void const *__addr,
  			      int __scale)
  {
    return (__m256i) __builtin_ia32_gather3siv8si ((__v8si) __v1_old,
*************** _mm256_mmask_i32gather_epi32 (__m256i __
*** 10335,10341 ****
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mmask_i32gather_epi32 (__m128i __v1_old, __mmask8 __mask,
! 			   __m128i __index, int const *__addr,
  			   int __scale)
  {
    return (__m128i) __builtin_ia32_gather3siv4si ((__v4si) __v1_old,
--- 10900,10906 ----
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mmask_i32gather_epi32 (__m128i __v1_old, __mmask8 __mask,
! 			   __m128i __index, void const *__addr,
  			   int __scale)
  {
    return (__m128i) __builtin_ia32_gather3siv4si ((__v4si) __v1_old,
*************** _mm_mmask_i32gather_epi32 (__m128i __v1_
*** 10347,10353 ****
  extern __inline __m256i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mmask_i32gather_epi64 (__m256i __v1_old, __mmask8 __mask,
! 			      __m128i __index, long long const *__addr,
  			      int __scale)
  {
    return (__m256i) __builtin_ia32_gather3siv4di ((__v4di) __v1_old,
--- 10912,10918 ----
  extern __inline __m256i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mmask_i32gather_epi64 (__m256i __v1_old, __mmask8 __mask,
! 			      __m128i __index, void const *__addr,
  			      int __scale)
  {
    return (__m256i) __builtin_ia32_gather3siv4di ((__v4di) __v1_old,
*************** _mm256_mmask_i32gather_epi64 (__m256i __
*** 10359,10365 ****
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mmask_i32gather_epi64 (__m128i __v1_old, __mmask8 __mask,
! 			   __m128i __index, long long const *__addr,
  			   int __scale)
  {
    return (__m128i) __builtin_ia32_gather3siv2di ((__v2di) __v1_old,
--- 10924,10930 ----
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mmask_i32gather_epi64 (__m128i __v1_old, __mmask8 __mask,
! 			   __m128i __index, void const *__addr,
  			   int __scale)
  {
    return (__m128i) __builtin_ia32_gather3siv2di ((__v2di) __v1_old,
*************** _mm_mmask_i32gather_epi64 (__m128i __v1_
*** 10371,10377 ****
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mmask_i64gather_epi32 (__m128i __v1_old, __mmask8 __mask,
! 			      __m256i __index, int const *__addr,
  			      int __scale)
  {
    return (__m128i) __builtin_ia32_gather3div8si ((__v4si) __v1_old,
--- 10936,10942 ----
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mmask_i64gather_epi32 (__m128i __v1_old, __mmask8 __mask,
! 			      __m256i __index, void const *__addr,
  			      int __scale)
  {
    return (__m128i) __builtin_ia32_gather3div8si ((__v4si) __v1_old,
*************** _mm256_mmask_i64gather_epi32 (__m128i __
*** 10383,10389 ****
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mmask_i64gather_epi32 (__m128i __v1_old, __mmask8 __mask,
! 			   __m128i __index, int const *__addr,
  			   int __scale)
  {
    return (__m128i) __builtin_ia32_gather3div4si ((__v4si) __v1_old,
--- 10948,10954 ----
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mmask_i64gather_epi32 (__m128i __v1_old, __mmask8 __mask,
! 			   __m128i __index, void const *__addr,
  			   int __scale)
  {
    return (__m128i) __builtin_ia32_gather3div4si ((__v4si) __v1_old,
*************** _mm_mmask_i64gather_epi32 (__m128i __v1_
*** 10395,10401 ****
  extern __inline __m256i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mmask_i64gather_epi64 (__m256i __v1_old, __mmask8 __mask,
! 			      __m256i __index, long long const *__addr,
  			      int __scale)
  {
    return (__m256i) __builtin_ia32_gather3div4di ((__v4di) __v1_old,
--- 10960,10966 ----
  extern __inline __m256i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mmask_i64gather_epi64 (__m256i __v1_old, __mmask8 __mask,
! 			      __m256i __index, void const *__addr,
  			      int __scale)
  {
    return (__m256i) __builtin_ia32_gather3div4di ((__v4di) __v1_old,
*************** _mm256_mmask_i64gather_epi64 (__m256i __
*** 10407,10413 ****
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mmask_i64gather_epi64 (__m128i __v1_old, __mmask8 __mask,
! 			   __m128i __index, long long const *__addr,
  			   int __scale)
  {
    return (__m128i) __builtin_ia32_gather3div2di ((__v2di) __v1_old,
--- 10972,10978 ----
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mmask_i64gather_epi64 (__m128i __v1_old, __mmask8 __mask,
! 			   __m128i __index, void const *__addr,
  			   int __scale)
  {
    return (__m128i) __builtin_ia32_gather3div2di ((__v2di) __v1_old,
*************** _mm_mmask_i64gather_epi64 (__m128i __v1_
*** 10418,10424 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_i32scatter_ps (float *__addr, __m256i __index,
  		      __m256 __v1, const int __scale)
  {
    __builtin_ia32_scattersiv8sf (__addr, (__mmask8) 0xFF,
--- 10983,10989 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_i32scatter_ps (void *__addr, __m256i __index,
  		      __m256 __v1, const int __scale)
  {
    __builtin_ia32_scattersiv8sf (__addr, (__mmask8) 0xFF,
*************** _mm256_i32scatter_ps (float *__addr, __m
*** 10428,10434 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_i32scatter_ps (float *__addr, __mmask8 __mask,
  			   __m256i __index, __m256 __v1,
  			   const int __scale)
  {
--- 10993,10999 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_i32scatter_ps (void *__addr, __mmask8 __mask,
  			   __m256i __index, __m256 __v1,
  			   const int __scale)
  {
*************** _mm256_mask_i32scatter_ps (float *__addr
*** 10438,10444 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_i32scatter_ps (float *__addr, __m128i __index, __m128 __v1,
  		   const int __scale)
  {
    __builtin_ia32_scattersiv4sf (__addr, (__mmask8) 0xFF,
--- 11003,11009 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_i32scatter_ps (void *__addr, __m128i __index, __m128 __v1,
  		   const int __scale)
  {
    __builtin_ia32_scattersiv4sf (__addr, (__mmask8) 0xFF,
*************** _mm_i32scatter_ps (float *__addr, __m128
*** 10448,10454 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_i32scatter_ps (float *__addr, __mmask8 __mask,
  			__m128i __index, __m128 __v1,
  			const int __scale)
  {
--- 11013,11019 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_i32scatter_ps (void *__addr, __mmask8 __mask,
  			__m128i __index, __m128 __v1,
  			const int __scale)
  {
*************** _mm_mask_i32scatter_ps (float *__addr, _
*** 10458,10464 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_i32scatter_pd (double *__addr, __m128i __index,
  		      __m256d __v1, const int __scale)
  {
    __builtin_ia32_scattersiv4df (__addr, (__mmask8) 0xFF,
--- 11023,11029 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_i32scatter_pd (void *__addr, __m128i __index,
  		      __m256d __v1, const int __scale)
  {
    __builtin_ia32_scattersiv4df (__addr, (__mmask8) 0xFF,
*************** _mm256_i32scatter_pd (double *__addr, __
*** 10468,10474 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_i32scatter_pd (double *__addr, __mmask8 __mask,
  			   __m128i __index, __m256d __v1,
  			   const int __scale)
  {
--- 11033,11039 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_i32scatter_pd (void *__addr, __mmask8 __mask,
  			   __m128i __index, __m256d __v1,
  			   const int __scale)
  {
*************** _mm256_mask_i32scatter_pd (double *__add
*** 10478,10484 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_i32scatter_pd (double *__addr, __m128i __index,
  		   __m128d __v1, const int __scale)
  {
    __builtin_ia32_scattersiv2df (__addr, (__mmask8) 0xFF,
--- 11043,11049 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_i32scatter_pd (void *__addr, __m128i __index,
  		   __m128d __v1, const int __scale)
  {
    __builtin_ia32_scattersiv2df (__addr, (__mmask8) 0xFF,
*************** _mm_i32scatter_pd (double *__addr, __m12
*** 10488,10494 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_i32scatter_pd (double *__addr, __mmask8 __mask,
  			__m128i __index, __m128d __v1,
  			const int __scale)
  {
--- 11053,11059 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_i32scatter_pd (void *__addr, __mmask8 __mask,
  			__m128i __index, __m128d __v1,
  			const int __scale)
  {
*************** _mm_mask_i32scatter_pd (double *__addr,
*** 10498,10504 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_i64scatter_ps (float *__addr, __m256i __index,
  		      __m128 __v1, const int __scale)
  {
    __builtin_ia32_scatterdiv8sf (__addr, (__mmask8) 0xFF,
--- 11063,11069 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_i64scatter_ps (void *__addr, __m256i __index,
  		      __m128 __v1, const int __scale)
  {
    __builtin_ia32_scatterdiv8sf (__addr, (__mmask8) 0xFF,
*************** _mm256_i64scatter_ps (float *__addr, __m
*** 10508,10514 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_i64scatter_ps (float *__addr, __mmask8 __mask,
  			   __m256i __index, __m128 __v1,
  			   const int __scale)
  {
--- 11073,11079 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_i64scatter_ps (void *__addr, __mmask8 __mask,
  			   __m256i __index, __m128 __v1,
  			   const int __scale)
  {
*************** _mm256_mask_i64scatter_ps (float *__addr
*** 10518,10524 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_i64scatter_ps (float *__addr, __m128i __index, __m128 __v1,
  		   const int __scale)
  {
    __builtin_ia32_scatterdiv4sf (__addr, (__mmask8) 0xFF,
--- 11083,11089 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_i64scatter_ps (void *__addr, __m128i __index, __m128 __v1,
  		   const int __scale)
  {
    __builtin_ia32_scatterdiv4sf (__addr, (__mmask8) 0xFF,
*************** _mm_i64scatter_ps (float *__addr, __m128
*** 10528,10534 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_i64scatter_ps (float *__addr, __mmask8 __mask,
  			__m128i __index, __m128 __v1,
  			const int __scale)
  {
--- 11093,11099 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_i64scatter_ps (void *__addr, __mmask8 __mask,
  			__m128i __index, __m128 __v1,
  			const int __scale)
  {
*************** _mm_mask_i64scatter_ps (float *__addr, _
*** 10538,10544 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_i64scatter_pd (double *__addr, __m256i __index,
  		      __m256d __v1, const int __scale)
  {
    __builtin_ia32_scatterdiv4df (__addr, (__mmask8) 0xFF,
--- 11103,11109 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_i64scatter_pd (void *__addr, __m256i __index,
  		      __m256d __v1, const int __scale)
  {
    __builtin_ia32_scatterdiv4df (__addr, (__mmask8) 0xFF,
*************** _mm256_i64scatter_pd (double *__addr, __
*** 10548,10554 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_i64scatter_pd (double *__addr, __mmask8 __mask,
  			   __m256i __index, __m256d __v1,
  			   const int __scale)
  {
--- 11113,11119 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_i64scatter_pd (void *__addr, __mmask8 __mask,
  			   __m256i __index, __m256d __v1,
  			   const int __scale)
  {
*************** _mm256_mask_i64scatter_pd (double *__add
*** 10558,10564 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_i64scatter_pd (double *__addr, __m128i __index,
  		   __m128d __v1, const int __scale)
  {
    __builtin_ia32_scatterdiv2df (__addr, (__mmask8) 0xFF,
--- 11123,11129 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_i64scatter_pd (void *__addr, __m128i __index,
  		   __m128d __v1, const int __scale)
  {
    __builtin_ia32_scatterdiv2df (__addr, (__mmask8) 0xFF,
*************** _mm_i64scatter_pd (double *__addr, __m12
*** 10568,10574 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_i64scatter_pd (double *__addr, __mmask8 __mask,
  			__m128i __index, __m128d __v1,
  			const int __scale)
  {
--- 11133,11139 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_i64scatter_pd (void *__addr, __mmask8 __mask,
  			__m128i __index, __m128d __v1,
  			const int __scale)
  {
*************** _mm_mask_i64scatter_pd (double *__addr,
*** 10578,10584 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_i32scatter_epi32 (int *__addr, __m256i __index,
  			 __m256i __v1, const int __scale)
  {
    __builtin_ia32_scattersiv8si (__addr, (__mmask8) 0xFF,
--- 11143,11149 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_i32scatter_epi32 (void *__addr, __m256i __index,
  			 __m256i __v1, const int __scale)
  {
    __builtin_ia32_scattersiv8si (__addr, (__mmask8) 0xFF,
*************** _mm256_i32scatter_epi32 (int *__addr, __
*** 10588,10594 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_i32scatter_epi32 (int *__addr, __mmask8 __mask,
  			      __m256i __index, __m256i __v1,
  			      const int __scale)
  {
--- 11153,11159 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_i32scatter_epi32 (void *__addr, __mmask8 __mask,
  			      __m256i __index, __m256i __v1,
  			      const int __scale)
  {
*************** _mm256_mask_i32scatter_epi32 (int *__add
*** 10598,10604 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_i32scatter_epi32 (int *__addr, __m128i __index,
  		      __m128i __v1, const int __scale)
  {
    __builtin_ia32_scattersiv4si (__addr, (__mmask8) 0xFF,
--- 11163,11169 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_i32scatter_epi32 (void *__addr, __m128i __index,
  		      __m128i __v1, const int __scale)
  {
    __builtin_ia32_scattersiv4si (__addr, (__mmask8) 0xFF,
*************** _mm_i32scatter_epi32 (int *__addr, __m12
*** 10608,10614 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_i32scatter_epi32 (int *__addr, __mmask8 __mask,
  			   __m128i __index, __m128i __v1,
  			   const int __scale)
  {
--- 11173,11179 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_i32scatter_epi32 (void *__addr, __mmask8 __mask,
  			   __m128i __index, __m128i __v1,
  			   const int __scale)
  {
*************** _mm_mask_i32scatter_epi32 (int *__addr,
*** 10618,10624 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_i32scatter_epi64 (long long *__addr, __m128i __index,
  			 __m256i __v1, const int __scale)
  {
    __builtin_ia32_scattersiv4di (__addr, (__mmask8) 0xFF,
--- 11183,11189 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_i32scatter_epi64 (void *__addr, __m128i __index,
  			 __m256i __v1, const int __scale)
  {
    __builtin_ia32_scattersiv4di (__addr, (__mmask8) 0xFF,
*************** _mm256_i32scatter_epi64 (long long *__ad
*** 10628,10634 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_i32scatter_epi64 (long long *__addr, __mmask8 __mask,
  			      __m128i __index, __m256i __v1,
  			      const int __scale)
  {
--- 11193,11199 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_i32scatter_epi64 (void *__addr, __mmask8 __mask,
  			      __m128i __index, __m256i __v1,
  			      const int __scale)
  {
*************** _mm256_mask_i32scatter_epi64 (long long
*** 10638,10644 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_i32scatter_epi64 (long long *__addr, __m128i __index,
  		      __m128i __v1, const int __scale)
  {
    __builtin_ia32_scattersiv2di (__addr, (__mmask8) 0xFF,
--- 11203,11209 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_i32scatter_epi64 (void *__addr, __m128i __index,
  		      __m128i __v1, const int __scale)
  {
    __builtin_ia32_scattersiv2di (__addr, (__mmask8) 0xFF,
*************** _mm_i32scatter_epi64 (long long *__addr,
*** 10648,10654 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_i32scatter_epi64 (long long *__addr, __mmask8 __mask,
  			   __m128i __index, __m128i __v1,
  			   const int __scale)
  {
--- 11213,11219 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_i32scatter_epi64 (void *__addr, __mmask8 __mask,
  			   __m128i __index, __m128i __v1,
  			   const int __scale)
  {
*************** _mm_mask_i32scatter_epi64 (long long *__
*** 10658,10664 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_i64scatter_epi32 (int *__addr, __m256i __index,
  			 __m128i __v1, const int __scale)
  {
    __builtin_ia32_scatterdiv8si (__addr, (__mmask8) 0xFF,
--- 11223,11229 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_i64scatter_epi32 (void *__addr, __m256i __index,
  			 __m128i __v1, const int __scale)
  {
    __builtin_ia32_scatterdiv8si (__addr, (__mmask8) 0xFF,
*************** _mm256_i64scatter_epi32 (int *__addr, __
*** 10668,10674 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_i64scatter_epi32 (int *__addr, __mmask8 __mask,
  			      __m256i __index, __m128i __v1,
  			      const int __scale)
  {
--- 11233,11239 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_i64scatter_epi32 (void *__addr, __mmask8 __mask,
  			      __m256i __index, __m128i __v1,
  			      const int __scale)
  {
*************** _mm256_mask_i64scatter_epi32 (int *__add
*** 10678,10684 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_i64scatter_epi32 (int *__addr, __m128i __index,
  		      __m128i __v1, const int __scale)
  {
    __builtin_ia32_scatterdiv4si (__addr, (__mmask8) 0xFF,
--- 11243,11249 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_i64scatter_epi32 (void *__addr, __m128i __index,
  		      __m128i __v1, const int __scale)
  {
    __builtin_ia32_scatterdiv4si (__addr, (__mmask8) 0xFF,
*************** _mm_i64scatter_epi32 (int *__addr, __m12
*** 10688,10694 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_i64scatter_epi32 (int *__addr, __mmask8 __mask,
  			   __m128i __index, __m128i __v1,
  			   const int __scale)
  {
--- 11253,11259 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_i64scatter_epi32 (void *__addr, __mmask8 __mask,
  			   __m128i __index, __m128i __v1,
  			   const int __scale)
  {
*************** _mm_mask_i64scatter_epi32 (int *__addr,
*** 10698,10704 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_i64scatter_epi64 (long long *__addr, __m256i __index,
  			 __m256i __v1, const int __scale)
  {
    __builtin_ia32_scatterdiv4di (__addr, (__mmask8) 0xFF,
--- 11263,11269 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_i64scatter_epi64 (void *__addr, __m256i __index,
  			 __m256i __v1, const int __scale)
  {
    __builtin_ia32_scatterdiv4di (__addr, (__mmask8) 0xFF,
*************** _mm256_i64scatter_epi64 (long long *__ad
*** 10708,10714 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_i64scatter_epi64 (long long *__addr, __mmask8 __mask,
  			      __m256i __index, __m256i __v1,
  			      const int __scale)
  {
--- 11273,11279 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_mask_i64scatter_epi64 (void *__addr, __mmask8 __mask,
  			      __m256i __index, __m256i __v1,
  			      const int __scale)
  {
*************** _mm256_mask_i64scatter_epi64 (long long
*** 10718,10724 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_i64scatter_epi64 (long long *__addr, __m128i __index,
  		      __m128i __v1, const int __scale)
  {
    __builtin_ia32_scatterdiv2di (__addr, (__mmask8) 0xFF,
--- 11283,11289 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_i64scatter_epi64 (void *__addr, __m128i __index,
  		      __m128i __v1, const int __scale)
  {
    __builtin_ia32_scatterdiv2di (__addr, (__mmask8) 0xFF,
*************** _mm_i64scatter_epi64 (long long *__addr,
*** 10728,10734 ****
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_i64scatter_epi64 (long long *__addr, __mmask8 __mask,
  			   __m128i __index, __m128i __v1,
  			   const int __scale)
  {
--- 11293,11299 ----
  
  extern __inline void
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_mask_i64scatter_epi64 (void *__addr, __mmask8 __mask,
  			   __m128i __index, __m128i __v1,
  			   const int __scale)
  {
*************** _mm256_permutex_pd (__m256d __X, const i
*** 11782,12363 ****
  						  (__mmask8) -1);
  }
  
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_mask_cmpneq_epu32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
- {
-   return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
- 						  (__v8si) __Y, 4,
- 						  (__mmask8) __M);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_cmpneq_epu32_mask (__m256i __X, __m256i __Y)
- {
-   return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
- 						  (__v8si) __Y, 4,
- 						  (__mmask8) - 1);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_mask_cmplt_epu32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
- {
-   return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
- 						  (__v8si) __Y, 1,
- 						  (__mmask8) __M);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_cmplt_epu32_mask (__m256i __X, __m256i __Y)
- {
-   return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
- 						  (__v8si) __Y, 1,
- 						  (__mmask8) - 1);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_mask_cmpge_epu32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
- {
-   return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
- 						  (__v8si) __Y, 5,
- 						  (__mmask8) __M);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_cmpge_epu32_mask (__m256i __X, __m256i __Y)
- {
-   return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
- 						  (__v8si) __Y, 5,
- 						  (__mmask8) - 1);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_mask_cmple_epu32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
- {
-   return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
- 						  (__v8si) __Y, 2,
- 						  (__mmask8) __M);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_cmple_epu32_mask (__m256i __X, __m256i __Y)
- {
-   return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
- 						  (__v8si) __Y, 2,
- 						  (__mmask8) - 1);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_mask_cmpneq_epu64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
- {
-   return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
- 						  (__v4di) __Y, 4,
- 						  (__mmask8) __M);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_cmpneq_epu64_mask (__m256i __X, __m256i __Y)
- {
-   return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
- 						  (__v4di) __Y, 4,
- 						  (__mmask8) - 1);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_mask_cmplt_epu64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
- {
-   return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
- 						  (__v4di) __Y, 1,
- 						  (__mmask8) __M);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_cmplt_epu64_mask (__m256i __X, __m256i __Y)
- {
-   return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
- 						  (__v4di) __Y, 1,
- 						  (__mmask8) - 1);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_mask_cmpge_epu64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
- {
-   return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
- 						  (__v4di) __Y, 5,
- 						  (__mmask8) __M);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_cmpge_epu64_mask (__m256i __X, __m256i __Y)
- {
-   return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
- 						  (__v4di) __Y, 5,
- 						  (__mmask8) - 1);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_mask_cmple_epu64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
- {
-   return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
- 						  (__v4di) __Y, 2,
- 						  (__mmask8) __M);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_cmple_epu64_mask (__m256i __X, __m256i __Y)
- {
-   return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
- 						  (__v4di) __Y, 2,
- 						  (__mmask8) - 1);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_mask_cmpneq_epi32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
- {
-   return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
- 						 (__v8si) __Y, 4,
- 						 (__mmask8) __M);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_cmpneq_epi32_mask (__m256i __X, __m256i __Y)
- {
-   return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
- 						 (__v8si) __Y, 4,
- 						 (__mmask8) - 1);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_mask_cmplt_epi32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
- {
-   return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
- 						 (__v8si) __Y, 1,
- 						 (__mmask8) __M);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_cmplt_epi32_mask (__m256i __X, __m256i __Y)
- {
-   return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
- 						 (__v8si) __Y, 1,
- 						 (__mmask8) - 1);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_mask_cmpge_epi32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
- {
-   return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
- 						 (__v8si) __Y, 5,
- 						 (__mmask8) __M);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_cmpge_epi32_mask (__m256i __X, __m256i __Y)
- {
-   return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
- 						 (__v8si) __Y, 5,
- 						 (__mmask8) - 1);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_mask_cmple_epi32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
- {
-   return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
- 						 (__v8si) __Y, 2,
- 						 (__mmask8) __M);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_cmple_epi32_mask (__m256i __X, __m256i __Y)
- {
-   return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
- 						 (__v8si) __Y, 2,
- 						 (__mmask8) - 1);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_mask_cmpneq_epi64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
- {
-   return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
- 						 (__v4di) __Y, 4,
- 						 (__mmask8) __M);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_cmpneq_epi64_mask (__m256i __X, __m256i __Y)
- {
-   return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
- 						 (__v4di) __Y, 4,
- 						 (__mmask8) - 1);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_mask_cmplt_epi64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
- {
-   return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
- 						 (__v4di) __Y, 1,
- 						 (__mmask8) __M);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_cmplt_epi64_mask (__m256i __X, __m256i __Y)
- {
-   return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
- 						 (__v4di) __Y, 1,
- 						 (__mmask8) - 1);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_mask_cmpge_epi64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
- {
-   return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
- 						 (__v4di) __Y, 5,
- 						 (__mmask8) __M);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_cmpge_epi64_mask (__m256i __X, __m256i __Y)
- {
-   return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
- 						 (__v4di) __Y, 5,
- 						 (__mmask8) - 1);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_mask_cmple_epi64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
- {
-   return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
- 						 (__v4di) __Y, 2,
- 						 (__mmask8) __M);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_cmple_epi64_mask (__m256i __X, __m256i __Y)
- {
-   return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
- 						 (__v4di) __Y, 2,
- 						 (__mmask8) - 1);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_mask_cmpneq_epu32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
- {
-   return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
- 						  (__v4si) __Y, 4,
- 						  (__mmask8) __M);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_cmpneq_epu32_mask (__m128i __X, __m128i __Y)
- {
-   return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
- 						  (__v4si) __Y, 4,
- 						  (__mmask8) - 1);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_mask_cmplt_epu32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
- {
-   return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
- 						  (__v4si) __Y, 1,
- 						  (__mmask8) __M);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_cmplt_epu32_mask (__m128i __X, __m128i __Y)
- {
-   return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
- 						  (__v4si) __Y, 1,
- 						  (__mmask8) - 1);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_mask_cmpge_epu32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
- {
-   return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
- 						  (__v4si) __Y, 5,
- 						  (__mmask8) __M);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_cmpge_epu32_mask (__m128i __X, __m128i __Y)
- {
-   return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
- 						  (__v4si) __Y, 5,
- 						  (__mmask8) - 1);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_mask_cmple_epu32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
- {
-   return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
- 						  (__v4si) __Y, 2,
- 						  (__mmask8) __M);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_cmple_epu32_mask (__m128i __X, __m128i __Y)
- {
-   return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
- 						  (__v4si) __Y, 2,
- 						  (__mmask8) - 1);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_mask_cmpneq_epu64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
- {
-   return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
- 						  (__v2di) __Y, 4,
- 						  (__mmask8) __M);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_cmpneq_epu64_mask (__m128i __X, __m128i __Y)
- {
-   return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
- 						  (__v2di) __Y, 4,
- 						  (__mmask8) - 1);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_mask_cmplt_epu64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
- {
-   return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
- 						  (__v2di) __Y, 1,
- 						  (__mmask8) __M);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_cmplt_epu64_mask (__m128i __X, __m128i __Y)
- {
-   return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
- 						  (__v2di) __Y, 1,
- 						  (__mmask8) - 1);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_mask_cmpge_epu64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
- {
-   return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
- 						  (__v2di) __Y, 5,
- 						  (__mmask8) __M);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_cmpge_epu64_mask (__m128i __X, __m128i __Y)
- {
-   return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
- 						  (__v2di) __Y, 5,
- 						  (__mmask8) - 1);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_mask_cmple_epu64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
- {
-   return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
- 						  (__v2di) __Y, 2,
- 						  (__mmask8) __M);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_cmple_epu64_mask (__m128i __X, __m128i __Y)
- {
-   return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
- 						  (__v2di) __Y, 2,
- 						  (__mmask8) - 1);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_mask_cmpneq_epi32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
- {
-   return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
- 						 (__v4si) __Y, 4,
- 						 (__mmask8) __M);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_cmpneq_epi32_mask (__m128i __X, __m128i __Y)
- {
-   return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
- 						 (__v4si) __Y, 4,
- 						 (__mmask8) - 1);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_mask_cmplt_epi32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
- {
-   return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
- 						 (__v4si) __Y, 1,
- 						 (__mmask8) __M);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_cmplt_epi32_mask (__m128i __X, __m128i __Y)
- {
-   return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
- 						 (__v4si) __Y, 1,
- 						 (__mmask8) - 1);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_mask_cmpge_epi32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
- {
-   return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
- 						 (__v4si) __Y, 5,
- 						 (__mmask8) __M);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_cmpge_epi32_mask (__m128i __X, __m128i __Y)
- {
-   return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
- 						 (__v4si) __Y, 5,
- 						 (__mmask8) - 1);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_mask_cmple_epi32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
- {
-   return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
- 						 (__v4si) __Y, 2,
- 						 (__mmask8) __M);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_cmple_epi32_mask (__m128i __X, __m128i __Y)
- {
-   return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
- 						 (__v4si) __Y, 2,
- 						 (__mmask8) - 1);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_mask_cmpneq_epi64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
- {
-   return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
- 						 (__v2di) __Y, 4,
- 						 (__mmask8) __M);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_cmpneq_epi64_mask (__m128i __X, __m128i __Y)
- {
-   return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
- 						 (__v2di) __Y, 4,
- 						 (__mmask8) - 1);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_mask_cmplt_epi64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
- {
-   return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
- 						 (__v2di) __Y, 1,
- 						 (__mmask8) __M);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_cmplt_epi64_mask (__m128i __X, __m128i __Y)
- {
-   return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
- 						 (__v2di) __Y, 1,
- 						 (__mmask8) - 1);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_mask_cmpge_epi64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
- {
-   return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
- 						 (__v2di) __Y, 5,
- 						 (__mmask8) __M);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_cmpge_epi64_mask (__m128i __X, __m128i __Y)
- {
-   return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
- 						 (__v2di) __Y, 5,
- 						 (__mmask8) - 1);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_mask_cmple_epi64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
- {
-   return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
- 						 (__v2di) __Y, 2,
- 						 (__mmask8) __M);
- }
- 
- extern __inline __mmask8
-   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_cmple_epi64_mask (__m128i __X, __m128i __Y)
- {
-   return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
- 						 (__v2di) __Y, 2,
- 						 (__mmask8) - 1);
- }
- 
  #else
  #define _mm256_permutex_pd(X, M)						\
    ((__m256d) __builtin_ia32_permdf256_mask ((__v4df)(__m256d)(X), (int)(M),	\
--- 12347,12352 ----
*************** _mm_cmple_epi64_mask (__m128i __X, __m12
*** 12879,13135 ****
  
  #define _mm256_mmask_i32gather_ps(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m256) __builtin_ia32_gather3siv8sf ((__v8sf)(__m256)V1OLD,		\
! 					 (float const *)ADDR,		\
  					 (__v8si)(__m256i)INDEX,	\
  					 (__mmask8)MASK, (int)SCALE)
  
  #define _mm_mmask_i32gather_ps(V1OLD, MASK, INDEX, ADDR, SCALE)		\
    (__m128) __builtin_ia32_gather3siv4sf ((__v4sf)(__m128)V1OLD,		\
! 					 (float const *)ADDR,		\
  					 (__v4si)(__m128i)INDEX,	\
  					 (__mmask8)MASK, (int)SCALE)
  
  #define _mm256_mmask_i32gather_pd(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m256d) __builtin_ia32_gather3siv4df ((__v4df)(__m256d)V1OLD,	\
! 					  (double const *)ADDR,		\
  					  (__v4si)(__m128i)INDEX,	\
  					  (__mmask8)MASK, (int)SCALE)
  
  #define _mm_mmask_i32gather_pd(V1OLD, MASK, INDEX, ADDR, SCALE)		\
    (__m128d) __builtin_ia32_gather3siv2df ((__v2df)(__m128d)V1OLD,	\
! 					  (double const *)ADDR,		\
  					  (__v4si)(__m128i)INDEX,	\
  					  (__mmask8)MASK, (int)SCALE)
  
  #define _mm256_mmask_i64gather_ps(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m128) __builtin_ia32_gather3div8sf ((__v4sf)(__m128)V1OLD,		\
! 					 (float const *)ADDR,		\
  					 (__v4di)(__m256i)INDEX,	\
  					 (__mmask8)MASK, (int)SCALE)
  
  #define _mm_mmask_i64gather_ps(V1OLD, MASK, INDEX, ADDR, SCALE)		\
    (__m128) __builtin_ia32_gather3div4sf ((__v4sf)(__m128)V1OLD,		\
! 					 (float const *)ADDR,		\
  					 (__v2di)(__m128i)INDEX,	\
  					 (__mmask8)MASK, (int)SCALE)
  
  #define _mm256_mmask_i64gather_pd(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m256d) __builtin_ia32_gather3div4df ((__v4df)(__m256d)V1OLD,	\
! 					  (double const *)ADDR,		\
  					  (__v4di)(__m256i)INDEX,	\
  					  (__mmask8)MASK, (int)SCALE)
  
  #define _mm_mmask_i64gather_pd(V1OLD, MASK, INDEX, ADDR, SCALE)		\
    (__m128d) __builtin_ia32_gather3div2df ((__v2df)(__m128d)V1OLD,	\
! 					  (double const *)ADDR,		\
  					  (__v2di)(__m128i)INDEX,	\
  					  (__mmask8)MASK, (int)SCALE)
  
  #define _mm256_mmask_i32gather_epi32(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m256i) __builtin_ia32_gather3siv8si ((__v8si)(__m256i)V1OLD,	\
! 					  (int const *)ADDR,		\
  					  (__v8si)(__m256i)INDEX,	\
  					  (__mmask8)MASK, (int)SCALE)
  
  #define _mm_mmask_i32gather_epi32(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m128i) __builtin_ia32_gather3siv4si ((__v4si)(__m128i)V1OLD,	\
! 					  (int const *)ADDR,		\
  					  (__v4si)(__m128i)INDEX,	\
  					  (__mmask8)MASK, (int)SCALE)
  
  #define _mm256_mmask_i32gather_epi64(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m256i) __builtin_ia32_gather3siv4di ((__v4di)(__m256i)V1OLD,	\
! 					  (long long const *)ADDR,	\
  					  (__v4si)(__m128i)INDEX,	\
  					  (__mmask8)MASK, (int)SCALE)
  
  #define _mm_mmask_i32gather_epi64(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m128i) __builtin_ia32_gather3siv2di ((__v2di)(__m128i)V1OLD,	\
! 					  (long long const *)ADDR,	\
  					  (__v4si)(__m128i)INDEX,	\
  					  (__mmask8)MASK, (int)SCALE)
  
  #define _mm256_mmask_i64gather_epi32(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m128i) __builtin_ia32_gather3div8si ((__v4si)(__m128i)V1OLD,	\
! 					  (int const *)ADDR,		\
  					  (__v4di)(__m256i)INDEX,	\
  					  (__mmask8)MASK, (int)SCALE)
  
  #define _mm_mmask_i64gather_epi32(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m128i) __builtin_ia32_gather3div4si ((__v4si)(__m128i)V1OLD,	\
! 					  (int const *)ADDR,		\
  					  (__v2di)(__m128i)INDEX,	\
  					  (__mmask8)MASK, (int)SCALE)
  
  #define _mm256_mmask_i64gather_epi64(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m256i) __builtin_ia32_gather3div4di ((__v4di)(__m256i)V1OLD,	\
! 					  (long long const *)ADDR,	\
  					  (__v4di)(__m256i)INDEX,	\
  					  (__mmask8)MASK, (int)SCALE)
  
  #define _mm_mmask_i64gather_epi64(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m128i) __builtin_ia32_gather3div2di ((__v2di)(__m128i)V1OLD,	\
! 					  (long long const *)ADDR,	\
  					  (__v2di)(__m128i)INDEX,	\
  					  (__mmask8)MASK, (int)SCALE)
  
  #define _mm256_i32scatter_ps(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scattersiv8sf ((float *)ADDR, (__mmask8)0xFF,		\
  				(__v8si)(__m256i)INDEX,			\
  				(__v8sf)(__m256)V1, (int)SCALE)
  
  #define _mm256_mask_i32scatter_ps(ADDR, MASK, INDEX, V1, SCALE)		\
!   __builtin_ia32_scattersiv8sf ((float *)ADDR, (__mmask8)MASK,		\
  				(__v8si)(__m256i)INDEX,			\
  				(__v8sf)(__m256)V1, (int)SCALE)
  
  #define _mm_i32scatter_ps(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scattersiv4sf ((float *)ADDR, (__mmask8)0xFF,		\
  				(__v4si)(__m128i)INDEX,			\
  				(__v4sf)(__m128)V1, (int)SCALE)
  
  #define _mm_mask_i32scatter_ps(ADDR, MASK, INDEX, V1, SCALE)		\
!   __builtin_ia32_scattersiv4sf ((float *)ADDR, (__mmask8)MASK,		\
  				(__v4si)(__m128i)INDEX,			\
  				(__v4sf)(__m128)V1, (int)SCALE)
  
  #define _mm256_i32scatter_pd(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scattersiv4df ((double *)ADDR, (__mmask8)0xFF,		\
  				(__v4si)(__m128i)INDEX,			\
  				(__v4df)(__m256d)V1, (int)SCALE)
  
  #define _mm256_mask_i32scatter_pd(ADDR, MASK, INDEX, V1, SCALE)		\
!   __builtin_ia32_scattersiv4df ((double *)ADDR, (__mmask8)MASK,		\
  				(__v4si)(__m128i)INDEX,			\
  				(__v4df)(__m256d)V1, (int)SCALE)
  
  #define _mm_i32scatter_pd(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scattersiv2df ((double *)ADDR, (__mmask8)0xFF,		\
  				(__v4si)(__m128i)INDEX,			\
  				(__v2df)(__m128d)V1, (int)SCALE)
  
  #define _mm_mask_i32scatter_pd(ADDR, MASK, INDEX, V1, SCALE)		\
!   __builtin_ia32_scattersiv2df ((double *)ADDR, (__mmask8)MASK,		\
  				(__v4si)(__m128i)INDEX,			\
  				(__v2df)(__m128d)V1, (int)SCALE)
  
  #define _mm256_i64scatter_ps(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scatterdiv8sf ((float *)ADDR, (__mmask8)0xFF,		\
  				(__v4di)(__m256i)INDEX,			\
  				(__v4sf)(__m128)V1, (int)SCALE)
  
  #define _mm256_mask_i64scatter_ps(ADDR, MASK, INDEX, V1, SCALE)		\
!   __builtin_ia32_scatterdiv8sf ((float *)ADDR, (__mmask8)MASK,		\
  				(__v4di)(__m256i)INDEX,			\
  				(__v4sf)(__m128)V1, (int)SCALE)
  
  #define _mm_i64scatter_ps(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scatterdiv4sf ((float *)ADDR, (__mmask8)0xFF,		\
  				(__v2di)(__m128i)INDEX,			\
  				(__v4sf)(__m128)V1, (int)SCALE)
  
  #define _mm_mask_i64scatter_ps(ADDR, MASK, INDEX, V1, SCALE)		\
!   __builtin_ia32_scatterdiv4sf ((float *)ADDR, (__mmask8)MASK,		\
  				(__v2di)(__m128i)INDEX,			\
  				(__v4sf)(__m128)V1, (int)SCALE)
  
  #define _mm256_i64scatter_pd(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scatterdiv4df ((double *)ADDR, (__mmask8)0xFF,		\
  				(__v4di)(__m256i)INDEX,			\
  				(__v4df)(__m256d)V1, (int)SCALE)
  
  #define _mm256_mask_i64scatter_pd(ADDR, MASK, INDEX, V1, SCALE)		\
!   __builtin_ia32_scatterdiv4df ((double *)ADDR, (__mmask8)MASK,		\
  				(__v4di)(__m256i)INDEX,			\
  				(__v4df)(__m256d)V1, (int)SCALE)
  
  #define _mm_i64scatter_pd(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scatterdiv2df ((double *)ADDR, (__mmask8)0xFF,		\
  				(__v2di)(__m128i)INDEX,			\
  				(__v2df)(__m128d)V1, (int)SCALE)
  
  #define _mm_mask_i64scatter_pd(ADDR, MASK, INDEX, V1, SCALE)		\
!   __builtin_ia32_scatterdiv2df ((double *)ADDR, (__mmask8)MASK,		\
  				(__v2di)(__m128i)INDEX,			\
  				(__v2df)(__m128d)V1, (int)SCALE)
  
  #define _mm256_i32scatter_epi32(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scattersiv8si ((int *)ADDR, (__mmask8)0xFF,		\
  				(__v8si)(__m256i)INDEX,			\
  				(__v8si)(__m256i)V1, (int)SCALE)
  
  #define _mm256_mask_i32scatter_epi32(ADDR, MASK, INDEX, V1, SCALE)	\
!   __builtin_ia32_scattersiv8si ((int *)ADDR, (__mmask8)MASK,		\
  				(__v8si)(__m256i)INDEX,			\
  				(__v8si)(__m256i)V1, (int)SCALE)
  
  #define _mm_i32scatter_epi32(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scattersiv4si ((int *)ADDR, (__mmask8)0xFF,		\
  				(__v4si)(__m128i)INDEX,			\
  				(__v4si)(__m128i)V1, (int)SCALE)
  
  #define _mm_mask_i32scatter_epi32(ADDR, MASK, INDEX, V1, SCALE)		\
!   __builtin_ia32_scattersiv4si ((int *)ADDR, (__mmask8)MASK,		\
  				(__v4si)(__m128i)INDEX,			\
  				(__v4si)(__m128i)V1, (int)SCALE)
  
  #define _mm256_i32scatter_epi64(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scattersiv4di ((long long *)ADDR, (__mmask8)0xFF,	\
  				(__v4si)(__m128i)INDEX,			\
  				(__v4di)(__m256i)V1, (int)SCALE)
  
  #define _mm256_mask_i32scatter_epi64(ADDR, MASK, INDEX, V1, SCALE)	\
!   __builtin_ia32_scattersiv4di ((long long *)ADDR, (__mmask8)MASK,	\
  				(__v4si)(__m128i)INDEX,			\
  				(__v4di)(__m256i)V1, (int)SCALE)
  
  #define _mm_i32scatter_epi64(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scattersiv2di ((long long *)ADDR, (__mmask8)0xFF,	\
  				(__v4si)(__m128i)INDEX,			\
  				(__v2di)(__m128i)V1, (int)SCALE)
  
  #define _mm_mask_i32scatter_epi64(ADDR, MASK, INDEX, V1, SCALE)		\
!   __builtin_ia32_scattersiv2di ((long long *)ADDR, (__mmask8)MASK,	\
  				(__v4si)(__m128i)INDEX,			\
  				(__v2di)(__m128i)V1, (int)SCALE)
  
  #define _mm256_i64scatter_epi32(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scatterdiv8si ((int *)ADDR, (__mmask8)0xFF,		\
  				(__v4di)(__m256i)INDEX,			\
  				(__v4si)(__m128i)V1, (int)SCALE)
  
  #define _mm256_mask_i64scatter_epi32(ADDR, MASK, INDEX, V1, SCALE)	\
!   __builtin_ia32_scatterdiv8si ((int *)ADDR, (__mmask8)MASK,		\
  				(__v4di)(__m256i)INDEX,			\
  				(__v4si)(__m128i)V1, (int)SCALE)
  
  #define _mm_i64scatter_epi32(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scatterdiv4si ((int *)ADDR, (__mmask8)0xFF,		\
  				(__v2di)(__m128i)INDEX,			\
  				(__v4si)(__m128i)V1, (int)SCALE)
  
  #define _mm_mask_i64scatter_epi32(ADDR, MASK, INDEX, V1, SCALE)		\
!   __builtin_ia32_scatterdiv4si ((int *)ADDR, (__mmask8)MASK,		\
  				(__v2di)(__m128i)INDEX,			\
  				(__v4si)(__m128i)V1, (int)SCALE)
  
  #define _mm256_i64scatter_epi64(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scatterdiv4di ((long long *)ADDR, (__mmask8)0xFF,	\
  				(__v4di)(__m256i)INDEX,			\
  				(__v4di)(__m256i)V1, (int)SCALE)
  
  #define _mm256_mask_i64scatter_epi64(ADDR, MASK, INDEX, V1, SCALE)	\
!   __builtin_ia32_scatterdiv4di ((long long *)ADDR, (__mmask8)MASK,	\
  				(__v4di)(__m256i)INDEX,			\
  				(__v4di)(__m256i)V1, (int)SCALE)
  
  #define _mm_i64scatter_epi64(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scatterdiv2di ((long long *)ADDR, (__mmask8)0xFF,	\
  				(__v2di)(__m128i)INDEX,			\
  				(__v2di)(__m128i)V1, (int)SCALE)
  
  #define _mm_mask_i64scatter_epi64(ADDR, MASK, INDEX, V1, SCALE)		\
!   __builtin_ia32_scatterdiv2di ((long long *)ADDR, (__mmask8)MASK,	\
  				(__v2di)(__m128i)INDEX,			\
  				(__v2di)(__m128i)V1, (int)SCALE)
  
--- 12868,13124 ----
  
  #define _mm256_mmask_i32gather_ps(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m256) __builtin_ia32_gather3siv8sf ((__v8sf)(__m256)V1OLD,		\
! 					 (void const *)ADDR,		\
  					 (__v8si)(__m256i)INDEX,	\
  					 (__mmask8)MASK, (int)SCALE)
  
  #define _mm_mmask_i32gather_ps(V1OLD, MASK, INDEX, ADDR, SCALE)		\
    (__m128) __builtin_ia32_gather3siv4sf ((__v4sf)(__m128)V1OLD,		\
! 					 (void const *)ADDR,		\
  					 (__v4si)(__m128i)INDEX,	\
  					 (__mmask8)MASK, (int)SCALE)
  
  #define _mm256_mmask_i32gather_pd(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m256d) __builtin_ia32_gather3siv4df ((__v4df)(__m256d)V1OLD,	\
! 					  (void const *)ADDR,		\
  					  (__v4si)(__m128i)INDEX,	\
  					  (__mmask8)MASK, (int)SCALE)
  
  #define _mm_mmask_i32gather_pd(V1OLD, MASK, INDEX, ADDR, SCALE)		\
    (__m128d) __builtin_ia32_gather3siv2df ((__v2df)(__m128d)V1OLD,	\
! 					  (void const *)ADDR,		\
  					  (__v4si)(__m128i)INDEX,	\
  					  (__mmask8)MASK, (int)SCALE)
  
  #define _mm256_mmask_i64gather_ps(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m128) __builtin_ia32_gather3div8sf ((__v4sf)(__m128)V1OLD,		\
! 					 (void const *)ADDR,		\
  					 (__v4di)(__m256i)INDEX,	\
  					 (__mmask8)MASK, (int)SCALE)
  
  #define _mm_mmask_i64gather_ps(V1OLD, MASK, INDEX, ADDR, SCALE)		\
    (__m128) __builtin_ia32_gather3div4sf ((__v4sf)(__m128)V1OLD,		\
! 					 (void const *)ADDR,		\
  					 (__v2di)(__m128i)INDEX,	\
  					 (__mmask8)MASK, (int)SCALE)
  
  #define _mm256_mmask_i64gather_pd(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m256d) __builtin_ia32_gather3div4df ((__v4df)(__m256d)V1OLD,	\
! 					  (void const *)ADDR,		\
  					  (__v4di)(__m256i)INDEX,	\
  					  (__mmask8)MASK, (int)SCALE)
  
  #define _mm_mmask_i64gather_pd(V1OLD, MASK, INDEX, ADDR, SCALE)		\
    (__m128d) __builtin_ia32_gather3div2df ((__v2df)(__m128d)V1OLD,	\
! 					  (void const *)ADDR,		\
  					  (__v2di)(__m128i)INDEX,	\
  					  (__mmask8)MASK, (int)SCALE)
  
  #define _mm256_mmask_i32gather_epi32(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m256i) __builtin_ia32_gather3siv8si ((__v8si)(__m256i)V1OLD,	\
! 					  (void const *)ADDR,		\
  					  (__v8si)(__m256i)INDEX,	\
  					  (__mmask8)MASK, (int)SCALE)
  
  #define _mm_mmask_i32gather_epi32(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m128i) __builtin_ia32_gather3siv4si ((__v4si)(__m128i)V1OLD,	\
! 					  (void const *)ADDR,		\
  					  (__v4si)(__m128i)INDEX,	\
  					  (__mmask8)MASK, (int)SCALE)
  
  #define _mm256_mmask_i32gather_epi64(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m256i) __builtin_ia32_gather3siv4di ((__v4di)(__m256i)V1OLD,	\
! 					  (void const *)ADDR,		\
  					  (__v4si)(__m128i)INDEX,	\
  					  (__mmask8)MASK, (int)SCALE)
  
  #define _mm_mmask_i32gather_epi64(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m128i) __builtin_ia32_gather3siv2di ((__v2di)(__m128i)V1OLD,	\
! 					  (void const *)ADDR,		\
  					  (__v4si)(__m128i)INDEX,	\
  					  (__mmask8)MASK, (int)SCALE)
  
  #define _mm256_mmask_i64gather_epi32(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m128i) __builtin_ia32_gather3div8si ((__v4si)(__m128i)V1OLD,	\
! 					  (void const *)ADDR,		\
  					  (__v4di)(__m256i)INDEX,	\
  					  (__mmask8)MASK, (int)SCALE)
  
  #define _mm_mmask_i64gather_epi32(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m128i) __builtin_ia32_gather3div4si ((__v4si)(__m128i)V1OLD,	\
! 					  (void const *)ADDR,		\
  					  (__v2di)(__m128i)INDEX,	\
  					  (__mmask8)MASK, (int)SCALE)
  
  #define _mm256_mmask_i64gather_epi64(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m256i) __builtin_ia32_gather3div4di ((__v4di)(__m256i)V1OLD,	\
! 					  (void const *)ADDR,		\
  					  (__v4di)(__m256i)INDEX,	\
  					  (__mmask8)MASK, (int)SCALE)
  
  #define _mm_mmask_i64gather_epi64(V1OLD, MASK, INDEX, ADDR, SCALE)	\
    (__m128i) __builtin_ia32_gather3div2di ((__v2di)(__m128i)V1OLD,	\
! 					  (void const *)ADDR,		\
  					  (__v2di)(__m128i)INDEX,	\
  					  (__mmask8)MASK, (int)SCALE)
  
  #define _mm256_i32scatter_ps(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scattersiv8sf ((void *)ADDR, (__mmask8)0xFF,		\
  				(__v8si)(__m256i)INDEX,			\
  				(__v8sf)(__m256)V1, (int)SCALE)
  
  #define _mm256_mask_i32scatter_ps(ADDR, MASK, INDEX, V1, SCALE)		\
!   __builtin_ia32_scattersiv8sf ((void *)ADDR, (__mmask8)MASK,		\
  				(__v8si)(__m256i)INDEX,			\
  				(__v8sf)(__m256)V1, (int)SCALE)
  
  #define _mm_i32scatter_ps(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scattersiv4sf ((void *)ADDR, (__mmask8)0xFF,		\
  				(__v4si)(__m128i)INDEX,			\
  				(__v4sf)(__m128)V1, (int)SCALE)
  
  #define _mm_mask_i32scatter_ps(ADDR, MASK, INDEX, V1, SCALE)		\
!   __builtin_ia32_scattersiv4sf ((void *)ADDR, (__mmask8)MASK,		\
  				(__v4si)(__m128i)INDEX,			\
  				(__v4sf)(__m128)V1, (int)SCALE)
  
  #define _mm256_i32scatter_pd(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scattersiv4df ((void *)ADDR, (__mmask8)0xFF,		\
  				(__v4si)(__m128i)INDEX,			\
  				(__v4df)(__m256d)V1, (int)SCALE)
  
  #define _mm256_mask_i32scatter_pd(ADDR, MASK, INDEX, V1, SCALE)		\
!   __builtin_ia32_scattersiv4df ((void *)ADDR, (__mmask8)MASK,		\
  				(__v4si)(__m128i)INDEX,			\
  				(__v4df)(__m256d)V1, (int)SCALE)
  
  #define _mm_i32scatter_pd(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scattersiv2df ((void *)ADDR, (__mmask8)0xFF,		\
  				(__v4si)(__m128i)INDEX,			\
  				(__v2df)(__m128d)V1, (int)SCALE)
  
  #define _mm_mask_i32scatter_pd(ADDR, MASK, INDEX, V1, SCALE)		\
!   __builtin_ia32_scattersiv2df ((void *)ADDR, (__mmask8)MASK,		\
  				(__v4si)(__m128i)INDEX,			\
  				(__v2df)(__m128d)V1, (int)SCALE)
  
  #define _mm256_i64scatter_ps(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scatterdiv8sf ((void *)ADDR, (__mmask8)0xFF,		\
  				(__v4di)(__m256i)INDEX,			\
  				(__v4sf)(__m128)V1, (int)SCALE)
  
  #define _mm256_mask_i64scatter_ps(ADDR, MASK, INDEX, V1, SCALE)		\
!   __builtin_ia32_scatterdiv8sf ((void *)ADDR, (__mmask8)MASK,		\
  				(__v4di)(__m256i)INDEX,			\
  				(__v4sf)(__m128)V1, (int)SCALE)
  
  #define _mm_i64scatter_ps(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scatterdiv4sf ((void *)ADDR, (__mmask8)0xFF,		\
  				(__v2di)(__m128i)INDEX,			\
  				(__v4sf)(__m128)V1, (int)SCALE)
  
  #define _mm_mask_i64scatter_ps(ADDR, MASK, INDEX, V1, SCALE)		\
!   __builtin_ia32_scatterdiv4sf ((void *)ADDR, (__mmask8)MASK,		\
  				(__v2di)(__m128i)INDEX,			\
  				(__v4sf)(__m128)V1, (int)SCALE)
  
  #define _mm256_i64scatter_pd(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scatterdiv4df ((void *)ADDR, (__mmask8)0xFF,		\
  				(__v4di)(__m256i)INDEX,			\
  				(__v4df)(__m256d)V1, (int)SCALE)
  
  #define _mm256_mask_i64scatter_pd(ADDR, MASK, INDEX, V1, SCALE)		\
!   __builtin_ia32_scatterdiv4df ((void *)ADDR, (__mmask8)MASK,		\
  				(__v4di)(__m256i)INDEX,			\
  				(__v4df)(__m256d)V1, (int)SCALE)
  
  #define _mm_i64scatter_pd(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scatterdiv2df ((void *)ADDR, (__mmask8)0xFF,		\
  				(__v2di)(__m128i)INDEX,			\
  				(__v2df)(__m128d)V1, (int)SCALE)
  
  #define _mm_mask_i64scatter_pd(ADDR, MASK, INDEX, V1, SCALE)		\
!   __builtin_ia32_scatterdiv2df ((void *)ADDR, (__mmask8)MASK,		\
  				(__v2di)(__m128i)INDEX,			\
  				(__v2df)(__m128d)V1, (int)SCALE)
  
  #define _mm256_i32scatter_epi32(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scattersiv8si ((void *)ADDR, (__mmask8)0xFF,		\
  				(__v8si)(__m256i)INDEX,			\
  				(__v8si)(__m256i)V1, (int)SCALE)
  
  #define _mm256_mask_i32scatter_epi32(ADDR, MASK, INDEX, V1, SCALE)	\
!   __builtin_ia32_scattersiv8si ((void *)ADDR, (__mmask8)MASK,		\
  				(__v8si)(__m256i)INDEX,			\
  				(__v8si)(__m256i)V1, (int)SCALE)
  
  #define _mm_i32scatter_epi32(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scattersiv4si ((void *)ADDR, (__mmask8)0xFF,		\
  				(__v4si)(__m128i)INDEX,			\
  				(__v4si)(__m128i)V1, (int)SCALE)
  
  #define _mm_mask_i32scatter_epi32(ADDR, MASK, INDEX, V1, SCALE)		\
!   __builtin_ia32_scattersiv4si ((void *)ADDR, (__mmask8)MASK,		\
  				(__v4si)(__m128i)INDEX,			\
  				(__v4si)(__m128i)V1, (int)SCALE)
  
  #define _mm256_i32scatter_epi64(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scattersiv4di ((void *)ADDR, (__mmask8)0xFF,		\
  				(__v4si)(__m128i)INDEX,			\
  				(__v4di)(__m256i)V1, (int)SCALE)
  
  #define _mm256_mask_i32scatter_epi64(ADDR, MASK, INDEX, V1, SCALE)	\
!   __builtin_ia32_scattersiv4di ((void *)ADDR, (__mmask8)MASK,		\
  				(__v4si)(__m128i)INDEX,			\
  				(__v4di)(__m256i)V1, (int)SCALE)
  
  #define _mm_i32scatter_epi64(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scattersiv2di ((void *)ADDR, (__mmask8)0xFF,		\
  				(__v4si)(__m128i)INDEX,			\
  				(__v2di)(__m128i)V1, (int)SCALE)
  
  #define _mm_mask_i32scatter_epi64(ADDR, MASK, INDEX, V1, SCALE)		\
!   __builtin_ia32_scattersiv2di ((void *)ADDR, (__mmask8)MASK,		\
  				(__v4si)(__m128i)INDEX,			\
  				(__v2di)(__m128i)V1, (int)SCALE)
  
  #define _mm256_i64scatter_epi32(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scatterdiv8si ((void *)ADDR, (__mmask8)0xFF,		\
  				(__v4di)(__m256i)INDEX,			\
  				(__v4si)(__m128i)V1, (int)SCALE)
  
  #define _mm256_mask_i64scatter_epi32(ADDR, MASK, INDEX, V1, SCALE)	\
!   __builtin_ia32_scatterdiv8si ((void *)ADDR, (__mmask8)MASK,		\
  				(__v4di)(__m256i)INDEX,			\
  				(__v4si)(__m128i)V1, (int)SCALE)
  
  #define _mm_i64scatter_epi32(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scatterdiv4si ((void *)ADDR, (__mmask8)0xFF,		\
  				(__v2di)(__m128i)INDEX,			\
  				(__v4si)(__m128i)V1, (int)SCALE)
  
  #define _mm_mask_i64scatter_epi32(ADDR, MASK, INDEX, V1, SCALE)		\
!   __builtin_ia32_scatterdiv4si ((void *)ADDR, (__mmask8)MASK,		\
  				(__v2di)(__m128i)INDEX,			\
  				(__v4si)(__m128i)V1, (int)SCALE)
  
  #define _mm256_i64scatter_epi64(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scatterdiv4di ((void *)ADDR, (__mmask8)0xFF,		\
  				(__v4di)(__m256i)INDEX,			\
  				(__v4di)(__m256i)V1, (int)SCALE)
  
  #define _mm256_mask_i64scatter_epi64(ADDR, MASK, INDEX, V1, SCALE)	\
!   __builtin_ia32_scatterdiv4di ((void *)ADDR, (__mmask8)MASK,		\
  				(__v4di)(__m256i)INDEX,			\
  				(__v4di)(__m256i)V1, (int)SCALE)
  
  #define _mm_i64scatter_epi64(ADDR, INDEX, V1, SCALE)			\
!   __builtin_ia32_scatterdiv2di ((void *)ADDR, (__mmask8)0xFF,		\
  				(__v2di)(__m128i)INDEX,			\
  				(__v2di)(__m128i)V1, (int)SCALE)
  
  #define _mm_mask_i64scatter_epi64(ADDR, MASK, INDEX, V1, SCALE)		\
!   __builtin_ia32_scatterdiv2di ((void *)ADDR, (__mmask8)MASK,		\
  				(__v2di)(__m128i)INDEX,			\
  				(__v2di)(__m128i)V1, (int)SCALE)
  
diff -Nrcpad gcc-5.4.0/gcc/config/i386/cpuid.h gcc-5.5.0/gcc/config/i386/cpuid.h
*** gcc-5.4.0/gcc/config/i386/cpuid.h	Thu Jun 18 10:56:43 2015
--- gcc-5.5.0/gcc/config/i386/cpuid.h	Thu Jun 22 11:31:28 2017
***************
*** 63,69 ****
  #define bit_MMXEXT	(1 << 22)
  #define bit_LM		(1 << 29)
  #define bit_3DNOWP	(1 << 30)
! #define bit_3DNOW	(1 << 31)
  
  /* Extended Features (%eax == 7) */
  /* %ebx */
--- 63,69 ----
  #define bit_MMXEXT	(1 << 22)
  #define bit_LM		(1 << 29)
  #define bit_3DNOWP	(1 << 30)
! #define bit_3DNOW	(1u << 31)
  
  /* Extended Features (%eax == 7) */
  /* %ebx */
***************
*** 79,85 ****
  #define bit_RDSEED	(1 << 18)
  #define bit_ADX	(1 << 19)
  #define bit_AVX512IFMA	(1 << 21)
- #define bit_PCOMMIT	(1 << 22)
  #define bit_CLFLUSHOPT	(1 << 23)
  #define bit_CLWB	(1 << 24)
  #define bit_AVX512PF	(1 << 26)
--- 79,84 ----
***************
*** 87,93 ****
  #define bit_AVX512CD	(1 << 28)
  #define bit_SHA		(1 << 29)
  #define bit_AVX512BW	(1 << 30)
! #define bit_AVX512VL	(1 << 31)
  
  /* %ecx */
  #define bit_PREFETCHWT1	  (1 << 0)
--- 86,92 ----
  #define bit_AVX512CD	(1 << 28)
  #define bit_SHA		(1 << 29)
  #define bit_AVX512BW	(1 << 30)
! #define bit_AVX512VL	(1u << 31)
  
  /* %ecx */
  #define bit_PREFETCHWT1	  (1 << 0)
***************
*** 168,174 ****
  
  
  /* Return highest supported input value for cpuid instruction.  ext can
!    be either 0x0 or 0x8000000 to return highest supported value for
     basic or extended cpuid information.  Function returns 0 if cpuid
     is not supported or whatever cpuid returns in eax register.  If sig
     pointer is non-null, then first four bytes of the signature
--- 167,173 ----
  
  
  /* Return highest supported input value for cpuid instruction.  ext can
!    be either 0x0 or 0x80000000 to return highest supported value for
     basic or extended cpuid information.  Function returns 0 if cpuid
     is not supported or whatever cpuid returns in eax register.  If sig
     pointer is non-null, then first four bytes of the signature
*************** __get_cpuid (unsigned int __level,
*** 235,242 ****
  	     unsigned int *__ecx, unsigned int *__edx)
  {
    unsigned int __ext = __level & 0x80000000;
  
!   if (__get_cpuid_max (__ext, 0) < __level)
      return 0;
  
    __cpuid (__level, *__eax, *__ebx, *__ecx, *__edx);
--- 234,242 ----
  	     unsigned int *__ecx, unsigned int *__edx)
  {
    unsigned int __ext = __level & 0x80000000;
+   unsigned int __maxlevel = __get_cpuid_max (__ext, 0);
  
!   if (__maxlevel == 0 || __maxlevel < __level)
      return 0;
  
    __cpuid (__level, *__eax, *__ebx, *__ecx, *__edx);
diff -Nrcpad gcc-5.4.0/gcc/config/i386/driver-i386.c gcc-5.5.0/gcc/config/i386/driver-i386.c
*** gcc-5.4.0/gcc/config/i386/driver-i386.c	Thu Jun 18 10:56:43 2015
--- gcc-5.5.0/gcc/config/i386/driver-i386.c	Thu Oct 13 21:19:00 2016
*************** const char *host_detect_local_cpu (int a
*** 413,419 ****
    unsigned int has_clflushopt = 0, has_xsavec = 0, has_xsaves = 0;
    unsigned int has_avx512dq = 0, has_avx512bw = 0, has_avx512vl = 0;
    unsigned int has_avx512vbmi = 0, has_avx512ifma = 0, has_clwb = 0;
!   unsigned int has_pcommit = 0, has_mwaitx = 0;
  
    bool arch;
  
--- 413,419 ----
    unsigned int has_clflushopt = 0, has_xsavec = 0, has_xsaves = 0;
    unsigned int has_avx512dq = 0, has_avx512bw = 0, has_avx512vl = 0;
    unsigned int has_avx512vbmi = 0, has_avx512ifma = 0, has_clwb = 0;
!   unsigned int has_mwaitx = 0;
  
    bool arch;
  
*************** const char *host_detect_local_cpu (int a
*** 491,497 ****
        has_avx512pf = ebx & bit_AVX512PF;
        has_avx512cd = ebx & bit_AVX512CD;
        has_sha = ebx & bit_SHA;
-       has_pcommit = ebx & bit_PCOMMIT;
        has_clflushopt = ebx & bit_CLFLUSHOPT;
        has_clwb = ebx & bit_CLWB;
        has_avx512dq = ebx & bit_AVX512DQ;
--- 491,496 ----
*************** const char *host_detect_local_cpu (int a
*** 630,662 ****
      }
    else if (vendor == signature_CENTAUR_ebx)
      {
!       if (arch)
  	{
! 	  switch (family)
! 	    {
! 	    case 6:
! 	      if (model > 9)
! 		/* Use the default detection procedure.  */
! 		processor = PROCESSOR_GENERIC;
! 	      else if (model == 9)
! 		cpu = "c3-2";
! 	      else if (model >= 6)
! 		cpu = "c3";
! 	      else
! 		processor = PROCESSOR_GENERIC;
! 	      break;
! 	    case 5:
! 	      if (has_3dnow)
! 		cpu = "winchip2";
! 	      else if (has_mmx)
! 		cpu = "winchip2-c6";
! 	      else
! 		processor = PROCESSOR_GENERIC;
! 	      break;
! 	    default:
! 	      /* We have no idea.  */
! 	      processor = PROCESSOR_GENERIC;
! 	    }
  	}
      }
    else
--- 629,655 ----
      }
    else if (vendor == signature_CENTAUR_ebx)
      {
!       processor = PROCESSOR_GENERIC;
! 
!       switch (family)
  	{
! 	default:
! 	  /* We have no idea.  */
! 	  break;
! 
! 	case 5:
! 	  if (has_3dnow || has_mmx)
! 	    processor = PROCESSOR_I486;
! 	  break;
! 
! 	case 6:
! 	  if (model > 9 || has_longmode)
! 	    /* Use the default detection procedure.  */
! 	    ;
! 	  else if (model == 9)
! 	    processor = PROCESSOR_PENTIUMPRO;
! 	  else if (model >= 6)
! 	    processor = PROCESSOR_I486;
  	}
      }
    else
*************** const char *host_detect_local_cpu (int a
*** 687,693 ****
        /* Default.  */
        break;
      case PROCESSOR_I486:
!       cpu = "i486";
        break;
      case PROCESSOR_PENTIUM:
        if (arch && has_mmx)
--- 680,697 ----
        /* Default.  */
        break;
      case PROCESSOR_I486:
!       if (arch && vendor == signature_CENTAUR_ebx)
! 	{
! 	  if (model >= 6)
! 	    cpu = "c3";
! 	  else if (has_3dnow)
! 	    cpu = "winchip2";
! 	  else
! 	    /* Assume WinChip C6.  */
! 	    cpu = "winchip-c6";
! 	}
!       else
! 	cpu = "i486";
        break;
      case PROCESSOR_PENTIUM:
        if (arch && has_mmx)
*************** const char *host_detect_local_cpu (int a
*** 804,811 ****
  		/* It is Pentium M.  */
  		cpu = "pentium-m";
  	      else if (has_sse)
! 		/* It is Pentium III.  */
! 		cpu = "pentium3";
  	      else if (has_mmx)
  		/* It is Pentium II.  */
  		cpu = "pentium2";
--- 808,820 ----
  		/* It is Pentium M.  */
  		cpu = "pentium-m";
  	      else if (has_sse)
! 		{
! 		  if (vendor == signature_CENTAUR_ebx)
! 		    cpu = "c3-2";
! 		  else
! 		    /* It is Pentium III.  */
! 		    cpu = "pentium3";
! 		}
  	      else if (has_mmx)
  		/* It is Pentium II.  */
  		cpu = "pentium2";
*************** const char *host_detect_local_cpu (int a
*** 886,891 ****
--- 895,905 ----
  	      else
  		cpu = "prescott";
  	    }
+ 	  else if (has_longmode)
+ 	    /* Perhaps some emulator?  Assume x86-64, otherwise gcc
+ 	       -march=native would be unusable for 64-bit compilations,
+ 	       as all the CPUs below are 32-bit only.  */
+ 	    cpu = "x86-64";
  	  else if (has_sse2)
  	    cpu = "pentium4";
  	  else if (has_cmov)
*************** const char *host_detect_local_cpu (int a
*** 953,959 ****
        const char *avx512ifma = has_avx512ifma ? " -mavx512ifma" : " -mno-avx512ifma";
        const char *avx512vbmi = has_avx512vbmi ? " -mavx512vbmi" : " -mno-avx512vbmi";
        const char *clwb = has_clwb ? " -mclwb" : " -mno-clwb";
-       const char *pcommit = has_pcommit ? " -mpcommit" : " -mno-pcommit";
        const char *mwaitx  = has_mwaitx  ? " -mmwaitx"  : " -mno-mwaitx"; 
  
        options = concat (options, mmx, mmx3dnow, sse, sse2, sse3, ssse3,
--- 967,972 ----
*************** const char *host_detect_local_cpu (int a
*** 964,970 ****
  			fxsr, xsave, xsaveopt, avx512f, avx512er,
  			avx512cd, avx512pf, prefetchwt1, clflushopt,
  			xsavec, xsaves, avx512dq, avx512bw, avx512vl,
! 			avx512ifma, avx512vbmi, clwb, pcommit, mwaitx, NULL);
      }
  
  done:
--- 977,983 ----
  			fxsr, xsave, xsaveopt, avx512f, avx512er,
  			avx512cd, avx512pf, prefetchwt1, clflushopt,
  			xsavec, xsaves, avx512dq, avx512bw, avx512vl,
! 			avx512ifma, avx512vbmi, clwb, mwaitx, NULL);
      }
  
  done:
diff -Nrcpad gcc-5.4.0/gcc/config/i386/gmm_malloc.h gcc-5.5.0/gcc/config/i386/gmm_malloc.h
*** gcc-5.4.0/gcc/config/i386/gmm_malloc.h	Mon Jan  5 12:33:28 2015
--- gcc-5.5.0/gcc/config/i386/gmm_malloc.h	Thu Jun  1 21:51:51 2017
***************
*** 27,74 ****
  #include <stdlib.h>
  #include <errno.h>
  
! static __inline__ void* 
! _mm_malloc (size_t size, size_t align)
  {
!   void * malloc_ptr;
!   void * aligned_ptr;
  
    /* Error if align is not a power of two.  */
!   if (align & (align - 1))
      {
        errno = EINVAL;
!       return ((void*) 0);
      }
  
!   if (size == 0)
      return ((void *) 0);
  
   /* Assume malloc'd pointer is aligned at least to sizeof (void*).
      If necessary, add another sizeof (void*) to store the value
      returned by malloc. Effectively this enforces a minimum alignment
      of sizeof double. */     
!     if (align < 2 * sizeof (void *))
!       align = 2 * sizeof (void *);
  
!   malloc_ptr = malloc (size + align);
!   if (!malloc_ptr)
      return ((void *) 0);
  
    /* Align  We have at least sizeof (void *) space below malloc'd ptr. */
!   aligned_ptr = (void *) (((size_t) malloc_ptr + align)
! 			  & ~((size_t) (align) - 1));
  
    /* Store the original pointer just before p.  */	
!   ((void **) aligned_ptr) [-1] = malloc_ptr;
  
!   return aligned_ptr;
  }
  
  static __inline__ void
! _mm_free (void * aligned_ptr)
  {
!   if (aligned_ptr)
!     free (((void **) aligned_ptr) [-1]);
  }
  
  #endif /* _MM_MALLOC_H_INCLUDED */
--- 27,74 ----
  #include <stdlib.h>
  #include <errno.h>
  
! static __inline__ void * 
! _mm_malloc (size_t __size, size_t __align)
  {
!   void * __malloc_ptr;
!   void * __aligned_ptr;
  
    /* Error if align is not a power of two.  */
!   if (__align & (__align - 1))
      {
        errno = EINVAL;
!       return ((void *) 0);
      }
  
!   if (__size == 0)
      return ((void *) 0);
  
   /* Assume malloc'd pointer is aligned at least to sizeof (void*).
      If necessary, add another sizeof (void*) to store the value
      returned by malloc. Effectively this enforces a minimum alignment
      of sizeof double. */     
!     if (__align < 2 * sizeof (void *))
!       __align = 2 * sizeof (void *);
  
!   __malloc_ptr = malloc (__size + __align);
!   if (!__malloc_ptr)
      return ((void *) 0);
  
    /* Align  We have at least sizeof (void *) space below malloc'd ptr. */
!   __aligned_ptr = (void *) (((size_t) __malloc_ptr + __align)
! 			    & ~((size_t) (__align) - 1));
  
    /* Store the original pointer just before p.  */	
!   ((void **) __aligned_ptr)[-1] = __malloc_ptr;
  
!   return __aligned_ptr;
  }
  
  static __inline__ void
! _mm_free (void *__aligned_ptr)
  {
!   if (__aligned_ptr)
!     free (((void **) __aligned_ptr)[-1]);
  }
  
  #endif /* _MM_MALLOC_H_INCLUDED */
diff -Nrcpad gcc-5.4.0/gcc/config/i386/i386-builtin-types.def gcc-5.5.0/gcc/config/i386/i386-builtin-types.def
*** gcc-5.4.0/gcc/config/i386/i386-builtin-types.def	Thu Jun 18 10:56:43 2015
--- gcc-5.5.0/gcc/config/i386/i386-builtin-types.def	Fri Feb 17 16:35:37 2017
*************** DEF_FUNCTION_TYPE (V4SI, V4SI, PCINT, V2
*** 1117,1153 ****
  DEF_FUNCTION_TYPE (V4SI, V4SI, PCINT, V4DI, V4SI, INT)
  DEF_FUNCTION_TYPE (V8SI, V8SI, PCINT, V4DI, V8SI, INT)
  
- DEF_FUNCTION_TYPE (V16SF, V16SF, PCFLOAT, V16SI, HI, INT)
  DEF_FUNCTION_TYPE (V16SF, V16SF, PCFLOAT, V8DI, HI, INT)
- DEF_FUNCTION_TYPE (V8DF, V8DF, PCDOUBLE, V8SI, QI, INT)
  DEF_FUNCTION_TYPE (V8DF, V8DF, PCDOUBLE, V16SI, QI, INT)
- DEF_FUNCTION_TYPE (V8SF, V8SF, PCFLOAT, V8DI, QI, INT)
- DEF_FUNCTION_TYPE (V8DF, V8DF, PCDOUBLE, V8DI, QI, INT)
- DEF_FUNCTION_TYPE (V16SI, V16SI, PCINT, V16SI, HI, INT)
  DEF_FUNCTION_TYPE (V16SI, V16SI, PCINT, V8DI, HI, INT)
- DEF_FUNCTION_TYPE (V8DI, V8DI, PCINT64, V8SI, QI, INT)
  DEF_FUNCTION_TYPE (V8DI, V8DI, PCINT64, V16SI, QI, INT)
- DEF_FUNCTION_TYPE (V8SI, V8SI, PCINT, V8DI, QI, INT)
- DEF_FUNCTION_TYPE (V8DI, V8DI, PCINT64, V8DI, QI, INT)
- DEF_FUNCTION_TYPE (V2DF, V2DF, PCDOUBLE, V4SI, QI, INT)
- DEF_FUNCTION_TYPE (V4DF, V4DF, PCDOUBLE, V4SI, QI, INT)
  DEF_FUNCTION_TYPE (V4DF, V4DF, PCDOUBLE, V8SI, QI, INT)
- DEF_FUNCTION_TYPE (V2DF, V2DF, PCDOUBLE, V2DI, QI, INT)
- DEF_FUNCTION_TYPE (V4DF, V4DF, PCDOUBLE, V4DI, QI, INT)
- DEF_FUNCTION_TYPE (V4SF, V4SF, PCFLOAT, V4SI, QI, INT)
- DEF_FUNCTION_TYPE (V8SF, V8SF, PCFLOAT, V8SI, QI, INT)
- DEF_FUNCTION_TYPE (V4SF, V4SF, PCFLOAT, V2DI, QI, INT)
- DEF_FUNCTION_TYPE (V4SF, V4SF, PCFLOAT, V4DI, QI, INT)
  DEF_FUNCTION_TYPE (V8SF, V8SF, PCFLOAT, V4DI, QI, INT)
- DEF_FUNCTION_TYPE (V2DI, V2DI, PCINT64, V4SI, QI, INT)
- DEF_FUNCTION_TYPE (V4DI, V4DI, PCINT64, V4SI, QI, INT)
  DEF_FUNCTION_TYPE (V4DI, V4DI, PCINT64, V8SI, QI, INT)
- DEF_FUNCTION_TYPE (V2DI, V2DI, PCINT64, V2DI, QI, INT)
- DEF_FUNCTION_TYPE (V4DI, V4DI, PCINT64, V4DI, QI, INT)
- DEF_FUNCTION_TYPE (V4SI, V4SI, PCINT, V4SI, QI, INT)
- DEF_FUNCTION_TYPE (V8SI, V8SI, PCINT, V8SI, QI, INT)
- DEF_FUNCTION_TYPE (V4SI, V4SI, PCINT, V2DI, QI, INT)
- DEF_FUNCTION_TYPE (V4SI, V4SI, PCINT, V4DI, QI, INT)
  DEF_FUNCTION_TYPE (V8SI, V8SI, PCINT, V4DI, QI, INT)
  
  DEF_FUNCTION_TYPE (VOID, PFLOAT, HI, V16SI, V16SF, INT)
--- 1117,1129 ----
*************** DEF_FUNCTION_TYPE (VOID, PINT, QI, V8DI,
*** 1172,1184 ****
  DEF_FUNCTION_TYPE (VOID, PINT, QI, V4DI, V4SI, INT)
  DEF_FUNCTION_TYPE (VOID, PINT, QI, V2DI, V4SI, INT)
  DEF_FUNCTION_TYPE (VOID, PLONGLONG, QI, V8DI, V8DI, INT)
  
! DEF_FUNCTION_TYPE (VOID, QI, V8SI, PCINT64, INT, INT)
! DEF_FUNCTION_TYPE (VOID, PLONGLONG, QI, V4DI, V4DI, INT)
! DEF_FUNCTION_TYPE (VOID, PLONGLONG, QI, V2DI, V2DI, INT)
! DEF_FUNCTION_TYPE (VOID, HI, V16SI, PCINT, INT, INT)
! DEF_FUNCTION_TYPE (VOID, QI, V8DI, PCINT64, INT, INT)
! DEF_FUNCTION_TYPE (VOID, QI, V8DI, PCINT, INT, INT)
  
  DEF_FUNCTION_TYPE_ALIAS (V2DF_FTYPE_V2DF, ROUND)
  DEF_FUNCTION_TYPE_ALIAS (V4DF_FTYPE_V4DF, ROUND)
--- 1148,1209 ----
  DEF_FUNCTION_TYPE (VOID, PINT, QI, V4DI, V4SI, INT)
  DEF_FUNCTION_TYPE (VOID, PINT, QI, V2DI, V4SI, INT)
  DEF_FUNCTION_TYPE (VOID, PLONGLONG, QI, V8DI, V8DI, INT)
+ DEF_FUNCTION_TYPE (VOID, PFLOAT, HI, V8DI, V16SF, INT)
+ DEF_FUNCTION_TYPE (VOID, PDOUBLE, QI, V16SI, V8DF, INT)
+ DEF_FUNCTION_TYPE (VOID, PINT, HI, V8DI, V16SI, INT)
+ DEF_FUNCTION_TYPE (VOID, PLONGLONG, QI, V16SI, V8DI, INT)
  
! DEF_FUNCTION_TYPE (V16SF, V16SF, PCVOID, V16SI, HI, INT)
! DEF_FUNCTION_TYPE (V8DF, V8DF, PCVOID, V8SI, QI, INT)
! DEF_FUNCTION_TYPE (V8SF, V8SF, PCVOID, V8DI, QI, INT)
! DEF_FUNCTION_TYPE (V8DF, V8DF, PCVOID, V8DI, QI, INT)
! DEF_FUNCTION_TYPE (V16SI, V16SI, PCVOID, V16SI, HI, INT)
! DEF_FUNCTION_TYPE (V8DI, V8DI, PCVOID, V8SI, QI, INT)
! DEF_FUNCTION_TYPE (V8SI, V8SI, PCVOID, V8DI, QI, INT)
! DEF_FUNCTION_TYPE (V8DI, V8DI, PCVOID, V8DI, QI, INT)
! DEF_FUNCTION_TYPE (VOID, PVOID, HI, V16SI, V16SF, INT)
! DEF_FUNCTION_TYPE (VOID, PVOID, QI, V8SI, V8DF, INT)
! DEF_FUNCTION_TYPE (VOID, PVOID, QI, V8DI, V8SF, INT)
! DEF_FUNCTION_TYPE (VOID, PVOID, QI, V8DI, V8DF, INT)
! DEF_FUNCTION_TYPE (VOID, PVOID, HI, V16SI, V16SI, INT)
! DEF_FUNCTION_TYPE (VOID, PVOID, QI, V8SI, V8DI, INT)
! DEF_FUNCTION_TYPE (VOID, PVOID, QI, V8DI, V8SI, INT)
! DEF_FUNCTION_TYPE (VOID, PVOID, QI, V8DI, V8DI, INT)
! DEF_FUNCTION_TYPE (V2DF, V2DF, PCVOID, V4SI, QI, INT)
! DEF_FUNCTION_TYPE (V4DF, V4DF, PCVOID, V4SI, QI, INT)
! DEF_FUNCTION_TYPE (V2DF, V2DF, PCVOID, V2DI, QI, INT)
! DEF_FUNCTION_TYPE (V4DF, V4DF, PCVOID, V4DI, QI, INT)
! DEF_FUNCTION_TYPE (V4SF, V4SF, PCVOID, V4SI, QI, INT)
! DEF_FUNCTION_TYPE (V8SF, V8SF, PCVOID, V8SI, QI, INT)
! DEF_FUNCTION_TYPE (V4SF, V4SF, PCVOID, V2DI, QI, INT)
! DEF_FUNCTION_TYPE (V4SF, V4SF, PCVOID, V4DI, QI, INT)
! DEF_FUNCTION_TYPE (V2DI, V2DI, PCVOID, V4SI, QI, INT)
! DEF_FUNCTION_TYPE (V4DI, V4DI, PCVOID, V4SI, QI, INT)
! DEF_FUNCTION_TYPE (V2DI, V2DI, PCVOID, V2DI, QI, INT)
! DEF_FUNCTION_TYPE (V4DI, V4DI, PCVOID, V4DI, QI, INT)
! DEF_FUNCTION_TYPE (V4SI, V4SI, PCVOID, V4SI, QI, INT)
! DEF_FUNCTION_TYPE (V8SI, V8SI, PCVOID, V8SI, QI, INT)
! DEF_FUNCTION_TYPE (V4SI, V4SI, PCVOID, V2DI, QI, INT)
! DEF_FUNCTION_TYPE (V4SI, V4SI, PCVOID, V4DI, QI, INT)
! DEF_FUNCTION_TYPE (VOID, PVOID, QI, V8SI, V8SF, INT)
! DEF_FUNCTION_TYPE (VOID, PVOID, QI, V4SI, V4SF, INT)
! DEF_FUNCTION_TYPE (VOID, PVOID, QI, V4SI, V4DF, INT)
! DEF_FUNCTION_TYPE (VOID, PVOID, QI, V4SI, V2DF, INT)
! DEF_FUNCTION_TYPE (VOID, PVOID, QI, V4DI, V4SF, INT)
! DEF_FUNCTION_TYPE (VOID, PVOID, QI, V2DI, V4SF, INT)
! DEF_FUNCTION_TYPE (VOID, PVOID, QI, V4DI, V4DF, INT)
! DEF_FUNCTION_TYPE (VOID, PVOID, QI, V2DI, V2DF, INT)
! DEF_FUNCTION_TYPE (VOID, PVOID, QI, V8SI, V8SI, INT)
! DEF_FUNCTION_TYPE (VOID, PVOID, QI, V4SI, V4SI, INT)
! DEF_FUNCTION_TYPE (VOID, PVOID, QI, V4SI, V4DI, INT)
! DEF_FUNCTION_TYPE (VOID, PVOID, QI, V4SI, V2DI, INT)
! DEF_FUNCTION_TYPE (VOID, PVOID, QI, V4DI, V4SI, INT)
! DEF_FUNCTION_TYPE (VOID, PVOID, QI, V2DI, V4SI, INT)
! DEF_FUNCTION_TYPE (VOID, PVOID, QI, V4DI, V4DI, INT)
! DEF_FUNCTION_TYPE (VOID, PVOID, QI, V2DI, V2DI, INT)
! DEF_FUNCTION_TYPE (VOID, QI, V8SI, PCVOID, INT, INT)
! DEF_FUNCTION_TYPE (VOID, HI, V16SI, PCVOID, INT, INT)
! DEF_FUNCTION_TYPE (VOID, QI, V8DI, PCVOID, INT, INT)
  
  DEF_FUNCTION_TYPE_ALIAS (V2DF_FTYPE_V2DF, ROUND)
  DEF_FUNCTION_TYPE_ALIAS (V4DF_FTYPE_V4DF, ROUND)
diff -Nrcpad gcc-5.4.0/gcc/config/i386/i386-c.c gcc-5.5.0/gcc/config/i386/i386-c.c
*** gcc-5.4.0/gcc/config/i386/i386-c.c	Thu Jun 18 10:56:43 2015
--- gcc-5.5.0/gcc/config/i386/i386-c.c	Thu Oct 13 21:19:00 2016
*************** ix86_target_macros_internal (HOST_WIDE_I
*** 428,435 ****
      def_or_undef (parse_in, "__XSAVES__");
    if (isa_flag & OPTION_MASK_ISA_MPX)
      def_or_undef (parse_in, "__MPX__");
-   if (isa_flag & OPTION_MASK_ISA_PCOMMIT)
-     def_or_undef (parse_in, "__PCOMMIT__");
    if (isa_flag & OPTION_MASK_ISA_CLWB)
      def_or_undef (parse_in, "__CLWB__");
    if (isa_flag & OPTION_MASK_ISA_MWAITX)
--- 428,433 ----
diff -Nrcpad gcc-5.4.0/gcc/config/i386/i386.c gcc-5.5.0/gcc/config/i386/i386.c
*** gcc-5.4.0/gcc/config/i386/i386.c	Fri May 20 13:24:29 2016
--- gcc-5.5.0/gcc/config/i386/i386.c	Mon Oct  2 18:44:07 2017
*************** ix86_target_string (HOST_WIDE_INT isa, i
*** 2678,2684 ****
      { "-mxsaves",	OPTION_MASK_ISA_XSAVES },
      { "-mmpx",          OPTION_MASK_ISA_MPX },
      { "-mclwb",		OPTION_MASK_ISA_CLWB },
-     { "-mpcommit",	OPTION_MASK_ISA_PCOMMIT },
      { "-mmwaitx",	OPTION_MASK_ISA_MWAITX  },
    };
  
--- 2678,2683 ----
*************** ix86_option_override_internal (bool main
*** 3192,3199 ****
  #define PTA_AVX512IFMA		(HOST_WIDE_INT_1 << 53)
  #define PTA_AVX512VBMI		(HOST_WIDE_INT_1 << 54)
  #define PTA_CLWB		(HOST_WIDE_INT_1 << 55)
! #define PTA_PCOMMIT		(HOST_WIDE_INT_1 << 56)
! #define PTA_MWAITX		(HOST_WIDE_INT_1 << 57)
  
  #define PTA_CORE2 \
    (PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3 | PTA_SSSE3 \
--- 3191,3197 ----
  #define PTA_AVX512IFMA		(HOST_WIDE_INT_1 << 53)
  #define PTA_AVX512VBMI		(HOST_WIDE_INT_1 << 54)
  #define PTA_CLWB		(HOST_WIDE_INT_1 << 55)
! #define PTA_MWAITX		(HOST_WIDE_INT_1 << 56)
  
  #define PTA_CORE2 \
    (PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3 | PTA_SSSE3 \
*************** ix86_option_override_internal (bool main
*** 3756,3764 ****
  	if (processor_alias_table[i].flags & PTA_PREFETCHWT1
  	    && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_PREFETCHWT1))
  	  opts->x_ix86_isa_flags |= OPTION_MASK_ISA_PREFETCHWT1;
- 	if (processor_alias_table[i].flags & PTA_PCOMMIT
- 	    && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_PCOMMIT))
- 	  opts->x_ix86_isa_flags |= OPTION_MASK_ISA_PCOMMIT;
  	if (processor_alias_table[i].flags & PTA_CLWB
  	    && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_CLWB))
  	  opts->x_ix86_isa_flags |= OPTION_MASK_ISA_CLWB;
--- 3754,3759 ----
*************** ix86_option_override_internal (bool main
*** 4020,4025 ****
--- 4015,4026 ----
      opts->x_ix86_isa_flags
        |= OPTION_MASK_ISA_LZCNT & ~opts->x_ix86_isa_flags_explicit;
  
+   /* Disable BMI, BMI2 and TBM instructions for -m16.  */
+   if (TARGET_16BIT_P(opts->x_ix86_isa_flags))
+     opts->x_ix86_isa_flags
+       &= ~((OPTION_MASK_ISA_BMI | OPTION_MASK_ISA_BMI2 | OPTION_MASK_ISA_TBM)
+ 	   & ~opts->x_ix86_isa_flags_explicit);
+ 
    /* Validate -mpreferred-stack-boundary= value or default it to
       PREFERRED_STACK_BOUNDARY_DEFAULT.  */
    ix86_preferred_stack_boundary = PREFERRED_STACK_BOUNDARY_DEFAULT;
*************** ix86_option_override_internal (bool main
*** 4356,4367 ****
    gcc_assert ((opts->x_target_flags & MASK_LONG_DOUBLE_64) == 0
  	      || (opts->x_target_flags & MASK_LONG_DOUBLE_128) == 0);
  
-   /* Save the initial options in case the user does function specific
-      options.  */
-   if (main_args_p)
-     target_option_default_node = target_option_current_node
-       = build_target_option_node (opts);
- 
    /* Handle stack protector */
    if (!opts_set->x_ix86_stack_protector_guard)
      opts->x_ix86_stack_protector_guard
--- 4357,4362 ----
*************** ix86_option_override_internal (bool main
*** 4381,4386 ****
--- 4376,4387 ----
        ix86_parse_stringop_strategy_string (str, true);
        free (str);
      }
+ 
+   /* Save the initial options in case the user does function specific
+      options.  */
+   if (main_args_p)
+     target_option_default_node = target_option_current_node
+       = build_target_option_node (opts);
  }
  
  /* Implement the TARGET_OPTION_OVERRIDE hook.  */
*************** ix86_valid_target_attribute_inner_p (tre
*** 4772,4778 ****
      IX86_ATTR_ISA ("avx512vbmi",	OPT_mavx512vbmi),
      IX86_ATTR_ISA ("avx512ifma",	OPT_mavx512ifma),
      IX86_ATTR_ISA ("clwb",	OPT_mclwb),
-     IX86_ATTR_ISA ("pcommit",	OPT_mpcommit),
      IX86_ATTR_ISA ("mwaitx",	OPT_mmwaitx),
  
      /* enum options */
--- 4773,4778 ----
*************** ix86_expand_split_stack_prologue (void)
*** 12704,12709 ****
--- 12704,12711 ----
  				GEN_INT (UNITS_PER_WORD), constm1_rtx,
  				NULL_RTX, false);
    add_function_usage_to (call_insn, call_fusage);
+   /* Indicate that this function can't jump to non-local gotos.  */
+   make_reg_eh_region_note_nothrow_nononlocal (as_a <rtx_insn *> (call_insn));
  
    /* In order to make call/return prediction work right, we now need
       to execute a return instruction.  See
*************** legitimize_tls_address (rtx x, enum tls_
*** 14292,14298 ****
  	  base = get_thread_pointer (tp_mode,
  				     for_mov || !TARGET_TLS_DIRECT_SEG_REFS);
  	  off = force_reg (tp_mode, off);
! 	  return gen_rtx_PLUS (tp_mode, base, off);
  	}
        else
  	{
--- 14294,14302 ----
  	  base = get_thread_pointer (tp_mode,
  				     for_mov || !TARGET_TLS_DIRECT_SEG_REFS);
  	  off = force_reg (tp_mode, off);
! 	  dest = gen_rtx_PLUS (tp_mode, base, off);
! 	  if (tp_mode != Pmode)
! 	    dest = convert_to_mode (Pmode, dest, 1);
  	}
        else
  	{
*************** ix86_print_operand (FILE *file, rtx x, i
*** 15585,15592 ****
  	      break;
  
  	    default:
! 	      output_operand_lossage
! 		("invalid operand size for operand code 'O'");
  	      return;
  	    }
  
--- 15589,15596 ----
  	      break;
  
  	    default:
! 	      output_operand_lossage ("invalid operand size for operand "
! 				      "code 'O'");
  	      return;
  	    }
  
*************** ix86_print_operand (FILE *file, rtx x, i
*** 15620,15634 ****
  		  return;
  
  		default:
! 		  output_operand_lossage
! 		    ("invalid operand size for operand code 'z'");
  		  return;
  		}
  	    }
  
  	  if (GET_MODE_CLASS (GET_MODE (x)) == MODE_FLOAT)
! 	    warning
! 	      (0, "non-integer operand used with operand code 'z'");
  	  /* FALLTHRU */
  
  	case 'Z':
--- 15624,15637 ----
  		  return;
  
  		default:
! 		  output_operand_lossage ("invalid operand size for operand "
! 					  "code 'z'");
  		  return;
  		}
  	    }
  
  	  if (GET_MODE_CLASS (GET_MODE (x)) == MODE_FLOAT)
! 	    warning (0, "non-integer operand used with operand code 'z'");
  	  /* FALLTHRU */
  
  	case 'Z':
*************** ix86_print_operand (FILE *file, rtx x, i
*** 15690,15702 ****
  	    }
  	  else
  	    {
! 	      output_operand_lossage
! 		("invalid operand type used with operand code 'Z'");
  	      return;
  	    }
  
! 	  output_operand_lossage
! 	    ("invalid operand size for operand code 'Z'");
  	  return;
  
  	case 'd':
--- 15693,15704 ----
  	    }
  	  else
  	    {
! 	      output_operand_lossage ("invalid operand type used with "
! 				      "operand code 'Z'");
  	      return;
  	    }
  
! 	  output_operand_lossage ("invalid operand size for operand code 'Z'");
  	  return;
  
  	case 'd':
*************** ix86_print_operand (FILE *file, rtx x, i
*** 15888,15894 ****
  	  break;
  
  	case 'K':
! 	  gcc_assert (CONST_INT_P (x));
  
  	  if (INTVAL (x) & IX86_HLE_ACQUIRE)
  #ifdef HAVE_AS_IX86_HLE
--- 15890,15901 ----
  	  break;
  
  	case 'K':
! 	  if (!CONST_INT_P (x))
! 	    {
! 	      output_operand_lossage ("operand is not an integer, invalid "
! 				      "operand code 'K'");
! 	      return;
! 	    }
  
  	  if (INTVAL (x) & IX86_HLE_ACQUIRE)
  #ifdef HAVE_AS_IX86_HLE
*************** ix86_print_operand (FILE *file, rtx x, i
*** 15911,15918 ****
  	  return;
  
  	case 'r':
! 	  gcc_assert (CONST_INT_P (x));
! 	  gcc_assert (INTVAL (x) == ROUND_SAE);
  
  	  if (ASSEMBLER_DIALECT == ASM_INTEL)
  	    fputs (", ", file);
--- 15918,15929 ----
  	  return;
  
  	case 'r':
! 	  if (!CONST_INT_P (x) || INTVAL (x) != ROUND_SAE)
! 	    {
! 	      output_operand_lossage ("operand is not a specific integer, "
! 				      "invalid operand code 'r'");
! 	      return;
! 	    }
  
  	  if (ASSEMBLER_DIALECT == ASM_INTEL)
  	    fputs (", ", file);
*************** ix86_print_operand (FILE *file, rtx x, i
*** 15925,15931 ****
  	  return;
  
  	case 'R':
! 	  gcc_assert (CONST_INT_P (x));
  
  	  if (ASSEMBLER_DIALECT == ASM_INTEL)
  	    fputs (", ", file);
--- 15936,15947 ----
  	  return;
  
  	case 'R':
! 	  if (!CONST_INT_P (x))
! 	    {
! 	      output_operand_lossage ("operand is not an integer, invalid "
! 				      "operand code 'R'");
! 	      return;
! 	    }
  
  	  if (ASSEMBLER_DIALECT == ASM_INTEL)
  	    fputs (", ", file);
*************** ix86_print_operand (FILE *file, rtx x, i
*** 15945,15951 ****
  	      fputs ("{rz-sae}", file);
  	      break;
  	    default:
! 	      gcc_unreachable ();
  	    }
  
  	  if (ASSEMBLER_DIALECT == ASM_ATT)
--- 15961,15968 ----
  	      fputs ("{rz-sae}", file);
  	      break;
  	    default:
! 	      output_operand_lossage ("operand is not a specific integer, "
! 				      "invalid operand code 'R'");
  	    }
  
  	  if (ASSEMBLER_DIALECT == ASM_ATT)
*************** ix86_print_operand (FILE *file, rtx x, i
*** 16040,16046 ****
  	  return;
  
  	default:
! 	    output_operand_lossage ("invalid operand code '%c'", code);
  	}
      }
  
--- 16057,16063 ----
  	  return;
  
  	default:
! 	  output_operand_lossage ("invalid operand code '%c'", code);
  	}
      }
  
*************** ix86_expand_vector_move (machine_mode mo
*** 17599,17610 ****
       of the register, once we have that information we may be able
       to handle some of them more efficiently.  */
    if (can_create_pseudo_p ()
-       && register_operand (op0, mode)
        && (CONSTANT_P (op1)
  	  || (GET_CODE (op1) == SUBREG
  	      && CONSTANT_P (SUBREG_REG (op1))))
!       && !standard_sse_constant_p (op1))
!     op1 = validize_mem (force_const_mem (mode, op1));
  
    /* We need to check memory alignment for SSE mode since attribute
       can make operands unaligned.  */
--- 17616,17644 ----
       of the register, once we have that information we may be able
       to handle some of them more efficiently.  */
    if (can_create_pseudo_p ()
        && (CONSTANT_P (op1)
  	  || (GET_CODE (op1) == SUBREG
  	      && CONSTANT_P (SUBREG_REG (op1))))
!       && ((register_operand (op0, mode)
! 	   && !standard_sse_constant_p (op1))
! 	  /* ix86_expand_vector_move_misalign() does not like constants.  */
! 	  || (SSE_REG_MODE_P (mode)
! 	      && MEM_P (op0)
! 	      && MEM_ALIGN (op0) < align)))
!     {
!       if (SUBREG_P (op1))
! 	{
! 	  machine_mode imode = GET_MODE (SUBREG_REG (op1));
! 	  rtx r = force_const_mem (imode, SUBREG_REG (op1));
! 	  if (r)
! 	    r = validize_mem (r);
! 	  else
! 	    r = force_reg (imode, SUBREG_REG (op1));
! 	  op1 = simplify_gen_subreg (mode, r, imode, SUBREG_BYTE (op1));
! 	}
!       else
! 	op1 = validize_mem (force_const_mem (mode, op1));
!     }
  
    /* We need to check memory alignment for SSE mode since attribute
       can make operands unaligned.  */
*************** ix86_expand_vector_move (machine_mode mo
*** 17615,17627 ****
      {
        rtx tmp[2];
  
!       /* ix86_expand_vector_move_misalign() does not like constants ... */
!       if (CONSTANT_P (op1)
! 	  || (GET_CODE (op1) == SUBREG
! 	      && CONSTANT_P (SUBREG_REG (op1))))
! 	op1 = validize_mem (force_const_mem (mode, op1));
! 
!       /* ... nor both arguments in memory.  */
        if (!register_operand (op0, mode)
  	  && !register_operand (op1, mode))
  	op1 = force_reg (mode, op1);
--- 17649,17656 ----
      {
        rtx tmp[2];
  
!       /* ix86_expand_vector_move_misalign() does not like both
! 	 arguments in memory.  */
        if (!register_operand (op0, mode)
  	  && !register_operand (op1, mode))
  	op1 = force_reg (mode, op1);
*************** ix86_avx256_split_vector_move_misalign (
*** 17707,17713 ****
  	  m = adjust_address (op0, mode, 0);
  	  emit_insn (extract (m, op1, const0_rtx));
  	  m = adjust_address (op0, mode, 16);
! 	  emit_insn (extract (m, op1, const1_rtx));
  	}
        else
  	emit_insn (store_unaligned (op0, op1));
--- 17736,17742 ----
  	  m = adjust_address (op0, mode, 0);
  	  emit_insn (extract (m, op1, const0_rtx));
  	  m = adjust_address (op0, mode, 16);
! 	  emit_insn (extract (m, copy_rtx (op1), const1_rtx));
  	}
        else
  	emit_insn (store_unaligned (op0, op1));
*************** ix86_expand_vector_move_misalign (machin
*** 18015,18021 ****
  	      m = adjust_address (op0, V2SFmode, 0);
  	      emit_insn (gen_sse_storelps (m, op1));
  	      m = adjust_address (op0, V2SFmode, 8);
! 	      emit_insn (gen_sse_storehps (m, op1));
  	    }
  	}
      }
--- 18044,18050 ----
  	      m = adjust_address (op0, V2SFmode, 0);
  	      emit_insn (gen_sse_storelps (m, op1));
  	      m = adjust_address (op0, V2SFmode, 8);
! 	      emit_insn (gen_sse_storehps (m, copy_rtx (op1)));
  	    }
  	}
      }
*************** ix86_split_idivmod (machine_mode mode, r
*** 18409,18421 ****
  
    if (signed_p)
      {
!       div = gen_rtx_DIV (SImode, operands[2], operands[3]);
!       mod = gen_rtx_MOD (SImode, operands[2], operands[3]);
      }
    else
      {
!       div = gen_rtx_UDIV (SImode, operands[2], operands[3]);
!       mod = gen_rtx_UMOD (SImode, operands[2], operands[3]);
      }
  
    /* Extract remainder from AH.  */
--- 18438,18450 ----
  
    if (signed_p)
      {
!       div = gen_rtx_DIV (mode, operands[2], operands[3]);
!       mod = gen_rtx_MOD (mode, operands[2], operands[3]);
      }
    else
      {
!       div = gen_rtx_UDIV (mode, operands[2], operands[3]);
!       mod = gen_rtx_UMOD (mode, operands[2], operands[3]);
      }
  
    /* Extract remainder from AH.  */
*************** ix86_expand_sse_cmp (rtx dest, enum rtx_
*** 21527,21532 ****
--- 21556,21562 ----
      cmp_op1 = force_reg (cmp_ops_mode, cmp_op1);
  
    if (optimize
+       || (maskcmp && cmp_mode != mode)
        || reg_overlap_mentioned_p (dest, op_true)
        || reg_overlap_mentioned_p (dest, op_false))
      dest = gen_reg_rtx (maskcmp ? cmp_mode : mode);
*************** memory_address_length (rtx addr, bool le
*** 26077,26083 ****
    else if (disp && !base && !index)
      {
        len += 4;
!       if (rip_relative_addr_p (&parts))
  	len++;
      }
    else
--- 26107,26113 ----
    else if (disp && !base && !index)
      {
        len += 4;
!       if (!rip_relative_addr_p (&parts))
  	len++;
      }
    else
*************** ix86_local_alignment (tree exp, machine_
*** 27678,27684 ****
  		  != TYPE_MAIN_VARIANT (va_list_type_node)))
  	  && TYPE_SIZE (type)
  	  && TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST
! 	  && wi::geu_p (TYPE_SIZE (type), 16)
  	  && align < 128)
  	return 128;
      }
--- 27708,27714 ----
  		  != TYPE_MAIN_VARIANT (va_list_type_node)))
  	  && TYPE_SIZE (type)
  	  && TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST
! 	  && wi::geu_p (TYPE_SIZE (type), 128)
  	  && align < 128)
  	return 128;
      }
*************** enum ix86_builtins
*** 30492,30500 ****
    /* CLWB instructions.  */
    IX86_BUILTIN_CLWB,
  
-   /* PCOMMIT instructions.  */
-   IX86_BUILTIN_PCOMMIT,
- 
    /* CLFLUSHOPT instructions.  */
    IX86_BUILTIN_CLFLUSHOPT,
  
--- 30522,30527 ----
*************** static const struct builtin_description
*** 30994,31002 ****
  /* Special builtins with variable number of arguments.  */
  static const struct builtin_description bdesc_special_args[] =
  {
!   { ~OPTION_MASK_ISA_64BIT, CODE_FOR_nothing, "__builtin_ia32_rdtsc", IX86_BUILTIN_RDTSC, UNKNOWN, (int) UINT64_FTYPE_VOID },
!   { ~OPTION_MASK_ISA_64BIT, CODE_FOR_nothing, "__builtin_ia32_rdtscp", IX86_BUILTIN_RDTSCP, UNKNOWN, (int) UINT64_FTYPE_PUNSIGNED },
!   { ~OPTION_MASK_ISA_64BIT, CODE_FOR_pause, "__builtin_ia32_pause", IX86_BUILTIN_PAUSE, UNKNOWN, (int) VOID_FTYPE_VOID },
  
    /* 80387 (for use internally for atomic compound assignment).  */
    { 0, CODE_FOR_fnstenv, "__builtin_ia32_fnstenv", IX86_BUILTIN_FNSTENV, UNKNOWN, (int) VOID_FTYPE_PVOID },
--- 31021,31029 ----
  /* Special builtins with variable number of arguments.  */
  static const struct builtin_description bdesc_special_args[] =
  {
!   { 0, CODE_FOR_nothing, "__builtin_ia32_rdtsc", IX86_BUILTIN_RDTSC, UNKNOWN, (int) UINT64_FTYPE_VOID },
!   { 0, CODE_FOR_nothing, "__builtin_ia32_rdtscp", IX86_BUILTIN_RDTSCP, UNKNOWN, (int) UINT64_FTYPE_PUNSIGNED },
!   { 0, CODE_FOR_pause, "__builtin_ia32_pause", IX86_BUILTIN_PAUSE, UNKNOWN, (int) VOID_FTYPE_VOID },
  
    /* 80387 (for use internally for atomic compound assignment).  */
    { 0, CODE_FOR_fnstenv, "__builtin_ia32_fnstenv", IX86_BUILTIN_FNSTENV, UNKNOWN, (int) VOID_FTYPE_PVOID },
*************** static const struct builtin_description
*** 31282,31302 ****
    { OPTION_MASK_ISA_AVX512VL, CODE_FOR_avx512vl_ss_truncatev4siv4hi2_mask_store, "__builtin_ia32_pmovsdw128mem_mask", IX86_BUILTIN_PMOVSDW128_MEM, UNKNOWN, (int) VOID_FTYPE_PV8HI_V4SI_QI },
    { OPTION_MASK_ISA_AVX512VL, CODE_FOR_avx512vl_us_truncatev8siv8hi2_mask_store, "__builtin_ia32_pmovusdw256mem_mask", IX86_BUILTIN_PMOVUSDW256_MEM, UNKNOWN, (int) VOID_FTYPE_PV8HI_V8SI_QI },
    { OPTION_MASK_ISA_AVX512VL, CODE_FOR_avx512vl_us_truncatev4siv4hi2_mask_store, "__builtin_ia32_pmovusdw128mem_mask", IX86_BUILTIN_PMOVUSDW128_MEM, UNKNOWN, (int) VOID_FTYPE_PV8HI_V4SI_QI },
- 
-   /* PCOMMIT.  */
-   { OPTION_MASK_ISA_PCOMMIT, CODE_FOR_pcommit, "__builtin_ia32_pcommit", IX86_BUILTIN_PCOMMIT, UNKNOWN, (int) VOID_FTYPE_VOID },
  };
  
  /* Builtins with variable number of arguments.  */
  static const struct builtin_description bdesc_args[] =
  {
!   { ~OPTION_MASK_ISA_64BIT, CODE_FOR_bsr, "__builtin_ia32_bsrsi", IX86_BUILTIN_BSRSI, UNKNOWN, (int) INT_FTYPE_INT },
    { OPTION_MASK_ISA_64BIT, CODE_FOR_bsr_rex64, "__builtin_ia32_bsrdi", IX86_BUILTIN_BSRDI, UNKNOWN, (int) INT64_FTYPE_INT64 },
!   { ~OPTION_MASK_ISA_64BIT, CODE_FOR_nothing, "__builtin_ia32_rdpmc", IX86_BUILTIN_RDPMC, UNKNOWN, (int) UINT64_FTYPE_INT },
!   { ~OPTION_MASK_ISA_64BIT, CODE_FOR_rotlqi3, "__builtin_ia32_rolqi", IX86_BUILTIN_ROLQI, UNKNOWN, (int) UINT8_FTYPE_UINT8_INT },
!   { ~OPTION_MASK_ISA_64BIT, CODE_FOR_rotlhi3, "__builtin_ia32_rolhi", IX86_BUILTIN_ROLHI, UNKNOWN, (int) UINT16_FTYPE_UINT16_INT },
!   { ~OPTION_MASK_ISA_64BIT, CODE_FOR_rotrqi3, "__builtin_ia32_rorqi", IX86_BUILTIN_RORQI, UNKNOWN, (int) UINT8_FTYPE_UINT8_INT },
!   { ~OPTION_MASK_ISA_64BIT, CODE_FOR_rotrhi3, "__builtin_ia32_rorhi", IX86_BUILTIN_RORHI, UNKNOWN, (int) UINT16_FTYPE_UINT16_INT },
  
    /* MMX */
    { OPTION_MASK_ISA_MMX, CODE_FOR_mmx_addv8qi3, "__builtin_ia32_paddb", IX86_BUILTIN_PADDB, UNKNOWN, (int) V8QI_FTYPE_V8QI_V8QI },
--- 31309,31326 ----
    { OPTION_MASK_ISA_AVX512VL, CODE_FOR_avx512vl_ss_truncatev4siv4hi2_mask_store, "__builtin_ia32_pmovsdw128mem_mask", IX86_BUILTIN_PMOVSDW128_MEM, UNKNOWN, (int) VOID_FTYPE_PV8HI_V4SI_QI },
    { OPTION_MASK_ISA_AVX512VL, CODE_FOR_avx512vl_us_truncatev8siv8hi2_mask_store, "__builtin_ia32_pmovusdw256mem_mask", IX86_BUILTIN_PMOVUSDW256_MEM, UNKNOWN, (int) VOID_FTYPE_PV8HI_V8SI_QI },
    { OPTION_MASK_ISA_AVX512VL, CODE_FOR_avx512vl_us_truncatev4siv4hi2_mask_store, "__builtin_ia32_pmovusdw128mem_mask", IX86_BUILTIN_PMOVUSDW128_MEM, UNKNOWN, (int) VOID_FTYPE_PV8HI_V4SI_QI },
  };
  
  /* Builtins with variable number of arguments.  */
  static const struct builtin_description bdesc_args[] =
  {
!   { 0, CODE_FOR_bsr, "__builtin_ia32_bsrsi", IX86_BUILTIN_BSRSI, UNKNOWN, (int) INT_FTYPE_INT },
    { OPTION_MASK_ISA_64BIT, CODE_FOR_bsr_rex64, "__builtin_ia32_bsrdi", IX86_BUILTIN_BSRDI, UNKNOWN, (int) INT64_FTYPE_INT64 },
!   { 0, CODE_FOR_nothing, "__builtin_ia32_rdpmc", IX86_BUILTIN_RDPMC, UNKNOWN, (int) UINT64_FTYPE_INT },
!   { 0, CODE_FOR_rotlqi3, "__builtin_ia32_rolqi", IX86_BUILTIN_ROLQI, UNKNOWN, (int) UINT8_FTYPE_UINT8_INT },
!   { 0, CODE_FOR_rotlhi3, "__builtin_ia32_rolhi", IX86_BUILTIN_ROLHI, UNKNOWN, (int) UINT16_FTYPE_UINT16_INT },
!   { 0, CODE_FOR_rotrqi3, "__builtin_ia32_rorqi", IX86_BUILTIN_RORQI, UNKNOWN, (int) UINT8_FTYPE_UINT8_INT },
!   { 0, CODE_FOR_rotrhi3, "__builtin_ia32_rorhi", IX86_BUILTIN_RORHI, UNKNOWN, (int) UINT16_FTYPE_UINT16_INT },
  
    /* MMX */
    { OPTION_MASK_ISA_MMX, CODE_FOR_mmx_addv8qi3, "__builtin_ia32_paddb", IX86_BUILTIN_PADDB, UNKNOWN, (int) V8QI_FTYPE_V8QI_V8QI },
*************** ix86_init_mmx_sse_builtins (void)
*** 34018,34052 ****
  
    /* AVX512F */
    def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gathersiv16sf",
! 	       V16SF_FTYPE_V16SF_PCFLOAT_V16SI_HI_INT,
  	       IX86_BUILTIN_GATHER3SIV16SF);
  
    def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gathersiv8df",
! 	       V8DF_FTYPE_V8DF_PCDOUBLE_V8SI_QI_INT,
  	       IX86_BUILTIN_GATHER3SIV8DF);
  
    def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gatherdiv16sf",
! 	       V8SF_FTYPE_V8SF_PCFLOAT_V8DI_QI_INT,
  	       IX86_BUILTIN_GATHER3DIV16SF);
  
    def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gatherdiv8df",
! 	       V8DF_FTYPE_V8DF_PCDOUBLE_V8DI_QI_INT,
  	       IX86_BUILTIN_GATHER3DIV8DF);
  
    def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gathersiv16si",
! 	       V16SI_FTYPE_V16SI_PCINT_V16SI_HI_INT,
  	       IX86_BUILTIN_GATHER3SIV16SI);
  
    def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gathersiv8di",
! 	       V8DI_FTYPE_V8DI_PCINT64_V8SI_QI_INT,
  	       IX86_BUILTIN_GATHER3SIV8DI);
  
    def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gatherdiv16si",
! 	       V8SI_FTYPE_V8SI_PCINT_V8DI_QI_INT,
  	       IX86_BUILTIN_GATHER3DIV16SI);
  
    def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gatherdiv8di",
! 	       V8DI_FTYPE_V8DI_PCINT64_V8DI_QI_INT,
  	       IX86_BUILTIN_GATHER3DIV8DI);
  
    def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gatheraltsiv8df ",
--- 34042,34076 ----
  
    /* AVX512F */
    def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gathersiv16sf",
! 	       V16SF_FTYPE_V16SF_PCVOID_V16SI_HI_INT,
  	       IX86_BUILTIN_GATHER3SIV16SF);
  
    def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gathersiv8df",
! 	       V8DF_FTYPE_V8DF_PCVOID_V8SI_QI_INT,
  	       IX86_BUILTIN_GATHER3SIV8DF);
  
    def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gatherdiv16sf",
! 	       V8SF_FTYPE_V8SF_PCVOID_V8DI_QI_INT,
  	       IX86_BUILTIN_GATHER3DIV16SF);
  
    def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gatherdiv8df",
! 	       V8DF_FTYPE_V8DF_PCVOID_V8DI_QI_INT,
  	       IX86_BUILTIN_GATHER3DIV8DF);
  
    def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gathersiv16si",
! 	       V16SI_FTYPE_V16SI_PCVOID_V16SI_HI_INT,
  	       IX86_BUILTIN_GATHER3SIV16SI);
  
    def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gathersiv8di",
! 	       V8DI_FTYPE_V8DI_PCVOID_V8SI_QI_INT,
  	       IX86_BUILTIN_GATHER3SIV8DI);
  
    def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gatherdiv16si",
! 	       V8SI_FTYPE_V8SI_PCVOID_V8DI_QI_INT,
  	       IX86_BUILTIN_GATHER3DIV16SI);
  
    def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gatherdiv8di",
! 	       V8DI_FTYPE_V8DI_PCVOID_V8DI_QI_INT,
  	       IX86_BUILTIN_GATHER3DIV8DI);
  
    def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gatheraltsiv8df ",
*************** ix86_init_mmx_sse_builtins (void)
*** 34066,34165 ****
  	       IX86_BUILTIN_GATHER3ALTDIV16SI);
  
    def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_scattersiv16sf",
! 	       VOID_FTYPE_PFLOAT_HI_V16SI_V16SF_INT,
  	       IX86_BUILTIN_SCATTERSIV16SF);
  
    def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_scattersiv8df",
! 	       VOID_FTYPE_PDOUBLE_QI_V8SI_V8DF_INT,
  	       IX86_BUILTIN_SCATTERSIV8DF);
  
    def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_scatterdiv16sf",
! 	       VOID_FTYPE_PFLOAT_QI_V8DI_V8SF_INT,
  	       IX86_BUILTIN_SCATTERDIV16SF);
  
    def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_scatterdiv8df",
! 	       VOID_FTYPE_PDOUBLE_QI_V8DI_V8DF_INT,
  	       IX86_BUILTIN_SCATTERDIV8DF);
  
    def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_scattersiv16si",
! 	       VOID_FTYPE_PINT_HI_V16SI_V16SI_INT,
  	       IX86_BUILTIN_SCATTERSIV16SI);
  
    def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_scattersiv8di",
! 	       VOID_FTYPE_PLONGLONG_QI_V8SI_V8DI_INT,
  	       IX86_BUILTIN_SCATTERSIV8DI);
  
    def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_scatterdiv16si",
! 	       VOID_FTYPE_PINT_QI_V8DI_V8SI_INT,
  	       IX86_BUILTIN_SCATTERDIV16SI);
  
    def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_scatterdiv8di",
! 	       VOID_FTYPE_PLONGLONG_QI_V8DI_V8DI_INT,
  	       IX86_BUILTIN_SCATTERDIV8DI);
  
    /* AVX512VL */
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3siv2df",
! 	       V2DF_FTYPE_V2DF_PCDOUBLE_V4SI_QI_INT,
  	       IX86_BUILTIN_GATHER3SIV2DF);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3siv4df",
! 	       V4DF_FTYPE_V4DF_PCDOUBLE_V4SI_QI_INT,
  	       IX86_BUILTIN_GATHER3SIV4DF);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3div2df",
! 	       V2DF_FTYPE_V2DF_PCDOUBLE_V2DI_QI_INT,
  	       IX86_BUILTIN_GATHER3DIV2DF);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3div4df",
! 	       V4DF_FTYPE_V4DF_PCDOUBLE_V4DI_QI_INT,
  	       IX86_BUILTIN_GATHER3DIV4DF);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3siv4sf",
! 	       V4SF_FTYPE_V4SF_PCFLOAT_V4SI_QI_INT,
  	       IX86_BUILTIN_GATHER3SIV4SF);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3siv8sf",
! 	       V8SF_FTYPE_V8SF_PCFLOAT_V8SI_QI_INT,
  	       IX86_BUILTIN_GATHER3SIV8SF);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3div4sf",
! 	       V4SF_FTYPE_V4SF_PCFLOAT_V2DI_QI_INT,
  	       IX86_BUILTIN_GATHER3DIV4SF);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3div8sf",
! 	       V4SF_FTYPE_V4SF_PCFLOAT_V4DI_QI_INT,
  	       IX86_BUILTIN_GATHER3DIV8SF);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3siv2di",
! 	       V2DI_FTYPE_V2DI_PCINT64_V4SI_QI_INT,
  	       IX86_BUILTIN_GATHER3SIV2DI);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3siv4di",
! 	       V4DI_FTYPE_V4DI_PCINT64_V4SI_QI_INT,
  	       IX86_BUILTIN_GATHER3SIV4DI);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3div2di",
! 	       V2DI_FTYPE_V2DI_PCINT64_V2DI_QI_INT,
  	       IX86_BUILTIN_GATHER3DIV2DI);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3div4di",
! 	       V4DI_FTYPE_V4DI_PCINT64_V4DI_QI_INT,
  	       IX86_BUILTIN_GATHER3DIV4DI);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3siv4si",
! 	       V4SI_FTYPE_V4SI_PCINT_V4SI_QI_INT,
  	       IX86_BUILTIN_GATHER3SIV4SI);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3siv8si",
! 	       V8SI_FTYPE_V8SI_PCINT_V8SI_QI_INT,
  	       IX86_BUILTIN_GATHER3SIV8SI);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3div4si",
! 	       V4SI_FTYPE_V4SI_PCINT_V2DI_QI_INT,
  	       IX86_BUILTIN_GATHER3DIV4SI);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3div8si",
! 	       V4SI_FTYPE_V4SI_PCINT_V4DI_QI_INT,
  	       IX86_BUILTIN_GATHER3DIV8SI);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3altsiv4df ",
--- 34090,34189 ----
  	       IX86_BUILTIN_GATHER3ALTDIV16SI);
  
    def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_scattersiv16sf",
! 	       VOID_FTYPE_PVOID_HI_V16SI_V16SF_INT,
  	       IX86_BUILTIN_SCATTERSIV16SF);
  
    def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_scattersiv8df",
! 	       VOID_FTYPE_PVOID_QI_V8SI_V8DF_INT,
  	       IX86_BUILTIN_SCATTERSIV8DF);
  
    def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_scatterdiv16sf",
! 	       VOID_FTYPE_PVOID_QI_V8DI_V8SF_INT,
  	       IX86_BUILTIN_SCATTERDIV16SF);
  
    def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_scatterdiv8df",
! 	       VOID_FTYPE_PVOID_QI_V8DI_V8DF_INT,
  	       IX86_BUILTIN_SCATTERDIV8DF);
  
    def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_scattersiv16si",
! 	       VOID_FTYPE_PVOID_HI_V16SI_V16SI_INT,
  	       IX86_BUILTIN_SCATTERSIV16SI);
  
    def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_scattersiv8di",
! 	       VOID_FTYPE_PVOID_QI_V8SI_V8DI_INT,
  	       IX86_BUILTIN_SCATTERSIV8DI);
  
    def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_scatterdiv16si",
! 	       VOID_FTYPE_PVOID_QI_V8DI_V8SI_INT,
  	       IX86_BUILTIN_SCATTERDIV16SI);
  
    def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_scatterdiv8di",
! 	       VOID_FTYPE_PVOID_QI_V8DI_V8DI_INT,
  	       IX86_BUILTIN_SCATTERDIV8DI);
  
    /* AVX512VL */
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3siv2df",
! 	       V2DF_FTYPE_V2DF_PCVOID_V4SI_QI_INT,
  	       IX86_BUILTIN_GATHER3SIV2DF);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3siv4df",
! 	       V4DF_FTYPE_V4DF_PCVOID_V4SI_QI_INT,
  	       IX86_BUILTIN_GATHER3SIV4DF);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3div2df",
! 	       V2DF_FTYPE_V2DF_PCVOID_V2DI_QI_INT,
  	       IX86_BUILTIN_GATHER3DIV2DF);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3div4df",
! 	       V4DF_FTYPE_V4DF_PCVOID_V4DI_QI_INT,
  	       IX86_BUILTIN_GATHER3DIV4DF);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3siv4sf",
! 	       V4SF_FTYPE_V4SF_PCVOID_V4SI_QI_INT,
  	       IX86_BUILTIN_GATHER3SIV4SF);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3siv8sf",
! 	       V8SF_FTYPE_V8SF_PCVOID_V8SI_QI_INT,
  	       IX86_BUILTIN_GATHER3SIV8SF);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3div4sf",
! 	       V4SF_FTYPE_V4SF_PCVOID_V2DI_QI_INT,
  	       IX86_BUILTIN_GATHER3DIV4SF);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3div8sf",
! 	       V4SF_FTYPE_V4SF_PCVOID_V4DI_QI_INT,
  	       IX86_BUILTIN_GATHER3DIV8SF);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3siv2di",
! 	       V2DI_FTYPE_V2DI_PCVOID_V4SI_QI_INT,
  	       IX86_BUILTIN_GATHER3SIV2DI);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3siv4di",
! 	       V4DI_FTYPE_V4DI_PCVOID_V4SI_QI_INT,
  	       IX86_BUILTIN_GATHER3SIV4DI);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3div2di",
! 	       V2DI_FTYPE_V2DI_PCVOID_V2DI_QI_INT,
  	       IX86_BUILTIN_GATHER3DIV2DI);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3div4di",
! 	       V4DI_FTYPE_V4DI_PCVOID_V4DI_QI_INT,
  	       IX86_BUILTIN_GATHER3DIV4DI);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3siv4si",
! 	       V4SI_FTYPE_V4SI_PCVOID_V4SI_QI_INT,
  	       IX86_BUILTIN_GATHER3SIV4SI);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3siv8si",
! 	       V8SI_FTYPE_V8SI_PCVOID_V8SI_QI_INT,
  	       IX86_BUILTIN_GATHER3SIV8SI);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3div4si",
! 	       V4SI_FTYPE_V4SI_PCVOID_V2DI_QI_INT,
  	       IX86_BUILTIN_GATHER3DIV4SI);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3div8si",
! 	       V4SI_FTYPE_V4SI_PCVOID_V4DI_QI_INT,
  	       IX86_BUILTIN_GATHER3DIV8SI);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3altsiv4df ",
*************** ix86_init_mmx_sse_builtins (void)
*** 34179,34271 ****
  	       IX86_BUILTIN_GATHER3ALTDIV8SI);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scattersiv8sf",
! 	       VOID_FTYPE_PFLOAT_QI_V8SI_V8SF_INT,
  	       IX86_BUILTIN_SCATTERSIV8SF);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scattersiv4sf",
! 	       VOID_FTYPE_PFLOAT_QI_V4SI_V4SF_INT,
  	       IX86_BUILTIN_SCATTERSIV4SF);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scattersiv4df",
! 	       VOID_FTYPE_PDOUBLE_QI_V4SI_V4DF_INT,
  	       IX86_BUILTIN_SCATTERSIV4DF);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scattersiv2df",
! 	       VOID_FTYPE_PDOUBLE_QI_V4SI_V2DF_INT,
  	       IX86_BUILTIN_SCATTERSIV2DF);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scatterdiv8sf",
! 	       VOID_FTYPE_PFLOAT_QI_V4DI_V4SF_INT,
  	       IX86_BUILTIN_SCATTERDIV8SF);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scatterdiv4sf",
! 	       VOID_FTYPE_PFLOAT_QI_V2DI_V4SF_INT,
  	       IX86_BUILTIN_SCATTERDIV4SF);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scatterdiv4df",
! 	       VOID_FTYPE_PDOUBLE_QI_V4DI_V4DF_INT,
  	       IX86_BUILTIN_SCATTERDIV4DF);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scatterdiv2df",
! 	       VOID_FTYPE_PDOUBLE_QI_V2DI_V2DF_INT,
  	       IX86_BUILTIN_SCATTERDIV2DF);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scattersiv8si",
! 	       VOID_FTYPE_PINT_QI_V8SI_V8SI_INT,
  	       IX86_BUILTIN_SCATTERSIV8SI);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scattersiv4si",
! 	       VOID_FTYPE_PINT_QI_V4SI_V4SI_INT,
  	       IX86_BUILTIN_SCATTERSIV4SI);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scattersiv4di",
! 	       VOID_FTYPE_PLONGLONG_QI_V4SI_V4DI_INT,
  	       IX86_BUILTIN_SCATTERSIV4DI);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scattersiv2di",
! 	       VOID_FTYPE_PLONGLONG_QI_V4SI_V2DI_INT,
  	       IX86_BUILTIN_SCATTERSIV2DI);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scatterdiv8si",
! 	       VOID_FTYPE_PINT_QI_V4DI_V4SI_INT,
  	       IX86_BUILTIN_SCATTERDIV8SI);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scatterdiv4si",
! 	       VOID_FTYPE_PINT_QI_V2DI_V4SI_INT,
  	       IX86_BUILTIN_SCATTERDIV4SI);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scatterdiv4di",
! 	       VOID_FTYPE_PLONGLONG_QI_V4DI_V4DI_INT,
  	       IX86_BUILTIN_SCATTERDIV4DI);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scatterdiv2di",
! 	       VOID_FTYPE_PLONGLONG_QI_V2DI_V2DI_INT,
  	       IX86_BUILTIN_SCATTERDIV2DI);
  
    /* AVX512PF */
    def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfdpd",
! 	       VOID_FTYPE_QI_V8SI_PCINT64_INT_INT,
  	       IX86_BUILTIN_GATHERPFDPD);
    def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfdps",
! 	       VOID_FTYPE_HI_V16SI_PCINT_INT_INT,
  	       IX86_BUILTIN_GATHERPFDPS);
    def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfqpd",
! 	       VOID_FTYPE_QI_V8DI_PCINT64_INT_INT,
  	       IX86_BUILTIN_GATHERPFQPD);
    def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfqps",
! 	       VOID_FTYPE_QI_V8DI_PCINT_INT_INT,
  	       IX86_BUILTIN_GATHERPFQPS);
    def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_scatterpfdpd",
! 	       VOID_FTYPE_QI_V8SI_PCINT64_INT_INT,
  	       IX86_BUILTIN_SCATTERPFDPD);
    def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_scatterpfdps",
! 	       VOID_FTYPE_HI_V16SI_PCINT_INT_INT,
  	       IX86_BUILTIN_SCATTERPFDPS);
    def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_scatterpfqpd",
! 	       VOID_FTYPE_QI_V8DI_PCINT64_INT_INT,
  	       IX86_BUILTIN_SCATTERPFQPD);
    def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_scatterpfqps",
! 	       VOID_FTYPE_QI_V8DI_PCINT_INT_INT,
  	       IX86_BUILTIN_SCATTERPFQPS);
  
    /* SHA */
--- 34203,34295 ----
  	       IX86_BUILTIN_GATHER3ALTDIV8SI);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scattersiv8sf",
! 	       VOID_FTYPE_PVOID_QI_V8SI_V8SF_INT,
  	       IX86_BUILTIN_SCATTERSIV8SF);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scattersiv4sf",
! 	       VOID_FTYPE_PVOID_QI_V4SI_V4SF_INT,
  	       IX86_BUILTIN_SCATTERSIV4SF);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scattersiv4df",
! 	       VOID_FTYPE_PVOID_QI_V4SI_V4DF_INT,
  	       IX86_BUILTIN_SCATTERSIV4DF);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scattersiv2df",
! 	       VOID_FTYPE_PVOID_QI_V4SI_V2DF_INT,
  	       IX86_BUILTIN_SCATTERSIV2DF);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scatterdiv8sf",
! 	       VOID_FTYPE_PVOID_QI_V4DI_V4SF_INT,
  	       IX86_BUILTIN_SCATTERDIV8SF);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scatterdiv4sf",
! 	       VOID_FTYPE_PVOID_QI_V2DI_V4SF_INT,
  	       IX86_BUILTIN_SCATTERDIV4SF);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scatterdiv4df",
! 	       VOID_FTYPE_PVOID_QI_V4DI_V4DF_INT,
  	       IX86_BUILTIN_SCATTERDIV4DF);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scatterdiv2df",
! 	       VOID_FTYPE_PVOID_QI_V2DI_V2DF_INT,
  	       IX86_BUILTIN_SCATTERDIV2DF);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scattersiv8si",
! 	       VOID_FTYPE_PVOID_QI_V8SI_V8SI_INT,
  	       IX86_BUILTIN_SCATTERSIV8SI);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scattersiv4si",
! 	       VOID_FTYPE_PVOID_QI_V4SI_V4SI_INT,
  	       IX86_BUILTIN_SCATTERSIV4SI);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scattersiv4di",
! 	       VOID_FTYPE_PVOID_QI_V4SI_V4DI_INT,
  	       IX86_BUILTIN_SCATTERSIV4DI);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scattersiv2di",
! 	       VOID_FTYPE_PVOID_QI_V4SI_V2DI_INT,
  	       IX86_BUILTIN_SCATTERSIV2DI);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scatterdiv8si",
! 	       VOID_FTYPE_PVOID_QI_V4DI_V4SI_INT,
  	       IX86_BUILTIN_SCATTERDIV8SI);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scatterdiv4si",
! 	       VOID_FTYPE_PVOID_QI_V2DI_V4SI_INT,
  	       IX86_BUILTIN_SCATTERDIV4SI);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scatterdiv4di",
! 	       VOID_FTYPE_PVOID_QI_V4DI_V4DI_INT,
  	       IX86_BUILTIN_SCATTERDIV4DI);
  
    def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scatterdiv2di",
! 	       VOID_FTYPE_PVOID_QI_V2DI_V2DI_INT,
  	       IX86_BUILTIN_SCATTERDIV2DI);
  
    /* AVX512PF */
    def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfdpd",
! 	       VOID_FTYPE_QI_V8SI_PCVOID_INT_INT,
  	       IX86_BUILTIN_GATHERPFDPD);
    def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfdps",
! 	       VOID_FTYPE_HI_V16SI_PCVOID_INT_INT,
  	       IX86_BUILTIN_GATHERPFDPS);
    def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfqpd",
! 	       VOID_FTYPE_QI_V8DI_PCVOID_INT_INT,
  	       IX86_BUILTIN_GATHERPFQPD);
    def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfqps",
! 	       VOID_FTYPE_QI_V8DI_PCVOID_INT_INT,
  	       IX86_BUILTIN_GATHERPFQPS);
    def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_scatterpfdpd",
! 	       VOID_FTYPE_QI_V8SI_PCVOID_INT_INT,
  	       IX86_BUILTIN_SCATTERPFDPD);
    def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_scatterpfdps",
! 	       VOID_FTYPE_HI_V16SI_PCVOID_INT_INT,
  	       IX86_BUILTIN_SCATTERPFDPS);
    def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_scatterpfqpd",
! 	       VOID_FTYPE_QI_V8DI_PCVOID_INT_INT,
  	       IX86_BUILTIN_SCATTERPFQPD);
    def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_scatterpfqps",
! 	       VOID_FTYPE_QI_V8DI_PCVOID_INT_INT,
  	       IX86_BUILTIN_SCATTERPFQPS);
  
    /* SHA */
*************** ix86_init_mmx_sse_builtins (void)
*** 34369,34379 ****
  	       IX86_BUILTIN_SBB64);
  
    /* Read/write FLAGS.  */
!   def_builtin (~OPTION_MASK_ISA_64BIT, "__builtin_ia32_readeflags_u32",
                 UNSIGNED_FTYPE_VOID, IX86_BUILTIN_READ_FLAGS);
    def_builtin (OPTION_MASK_ISA_64BIT, "__builtin_ia32_readeflags_u64",
                 UINT64_FTYPE_VOID, IX86_BUILTIN_READ_FLAGS);
!   def_builtin (~OPTION_MASK_ISA_64BIT, "__builtin_ia32_writeeflags_u32",
                 VOID_FTYPE_UNSIGNED, IX86_BUILTIN_WRITE_FLAGS);
    def_builtin (OPTION_MASK_ISA_64BIT, "__builtin_ia32_writeeflags_u64",
                 VOID_FTYPE_UINT64, IX86_BUILTIN_WRITE_FLAGS);
--- 34393,34403 ----
  	       IX86_BUILTIN_SBB64);
  
    /* Read/write FLAGS.  */
!   def_builtin (0, "__builtin_ia32_readeflags_u32",
                 UNSIGNED_FTYPE_VOID, IX86_BUILTIN_READ_FLAGS);
    def_builtin (OPTION_MASK_ISA_64BIT, "__builtin_ia32_readeflags_u64",
                 UINT64_FTYPE_VOID, IX86_BUILTIN_READ_FLAGS);
!   def_builtin (0, "__builtin_ia32_writeeflags_u32",
                 VOID_FTYPE_UNSIGNED, IX86_BUILTIN_WRITE_FLAGS);
    def_builtin (OPTION_MASK_ISA_64BIT, "__builtin_ia32_writeeflags_u64",
                 VOID_FTYPE_UINT64, IX86_BUILTIN_WRITE_FLAGS);
*************** sorted_attr_string (tree arglist)
*** 35013,35018 ****
--- 35037,35045 ----
      {
        const char *str = TREE_STRING_POINTER (TREE_VALUE (arg));
        size_t len = strlen (str);
+       /* Skip empty string.  */
+       if (len == 0)
+ 	continue;
        str_len_sum += len + 1;
        if (arg != arglist)
  	argnum++;
*************** sorted_attr_string (tree arglist)
*** 35027,35037 ****
--- 35054,35074 ----
      {
        const char *str = TREE_STRING_POINTER (TREE_VALUE (arg));
        size_t len = strlen (str);
+       /* Skip empty string.  */
+       if (len == 0)
+ 	continue;
        memcpy (attr_str + str_len_sum, str, len);
        attr_str[str_len_sum + len] = TREE_CHAIN (arg) ? ',' : '\0';
        str_len_sum += len + 1;
      }
  
+   /* Strip ',' character at the end.  */
+   if (str_len_sum > 0 && attr_str[str_len_sum - 1] == ',')
+     {
+       attr_str[str_len_sum - 1] = '\0';
+       str_len_sum--;
+     }
+ 
    /* Replace "=,-" with "_".  */
    for (i = 0; i < strlen (attr_str); i++)
      if (attr_str[i] == '=' || attr_str[i]== '-')
*************** ix86_expand_multi_arg_builtin (enum insn
*** 36218,36223 ****
--- 36255,36262 ----
        || GET_MODE (target) != tmode
        || !insn_data[icode].operand[0].predicate (target, tmode))
      target = gen_reg_rtx (tmode);
+   else if (memory_operand (target, tmode))
+     num_memory++;
  
    gcc_assert (nargs <= 4);
  
*************** ix86_expand_args_builtin (const struct b
*** 37543,37548 ****
--- 37582,37589 ----
  	  || GET_MODE (target) != tmode
  	  || !insn_p->operand[0].predicate (target, tmode))
  	target = gen_reg_rtx (tmode);
+       else if (memory_operand (target, tmode))
+ 	num_memory++;
        real_target = target;
      }
    else
*************** ix86_expand_args_builtin (const struct b
*** 37562,37571 ****
  	{
  	  /* SIMD shift insns take either an 8-bit immediate or
  	     register as count.  But builtin functions take int as
! 	     count.  If count doesn't match, we put it in register.  */
  	  if (!match)
  	    {
! 	      op = simplify_gen_subreg (SImode, op, GET_MODE (op), 0);
  	      if (!insn_p->operand[i + 1].predicate (op, mode))
  		op = copy_to_reg (op);
  	    }
--- 37603,37619 ----
  	{
  	  /* SIMD shift insns take either an 8-bit immediate or
  	     register as count.  But builtin functions take int as
! 	     count.  If count doesn't match, we put it in register.
! 	     The instructions are using 64-bit count, if op is just
! 	     32-bit, zero-extend it, as negative shift counts
! 	     are undefined behavior and zero-extension is more
! 	     efficient.  */
  	  if (!match)
  	    {
! 	      if (SCALAR_INT_MODE_P (GET_MODE (op)))
! 		op = convert_modes (mode, GET_MODE (op), op, 1);
! 	      else
! 		op = simplify_gen_subreg (mode, op, GET_MODE (op), 0);
  	      if (!insn_p->operand[i + 1].predicate (op, mode))
  		op = copy_to_reg (op);
  	    }
*************** ix86_expand_args_builtin (const struct b
*** 37748,37753 ****
--- 37796,37802 ----
      case 5:
        pat = GEN_FCN (icode) (real_target, args[0].op, args[1].op,
  			     args[2].op, args[3].op, args[4].op);
+       break;
      case 6:
        pat = GEN_FCN (icode) (real_target, args[0].op, args[1].op,
  			     args[2].op, args[3].op, args[4].op,
*************** ix86_expand_round_builtin (const struct
*** 38123,38128 ****
--- 38172,38178 ----
      case 5:
        pat = GEN_FCN (icode) (target, args[0].op, args[1].op,
  			     args[2].op, args[3].op, args[4].op);
+       break;
      case 6:
        pat = GEN_FCN (icode) (target, args[0].op, args[1].op,
  			     args[2].op, args[3].op, args[4].op,
*************** ix86_expand_builtin (tree exp, rtx targe
*** 38733,38741 ****
       Originally the builtin was not created if it wasn't applicable to the
       current ISA based on the command line switches.  With function specific
       options, we need to check in the context of the function making the call
!      whether it is supported.  */
!   if (ix86_builtins_isa[fcode].isa
!       && !(ix86_builtins_isa[fcode].isa & ix86_isa_flags))
      {
        char *opts = ix86_target_string (ix86_builtins_isa[fcode].isa, 0, NULL,
  				       NULL, (enum fpmath_unit) 0, false);
--- 38783,38800 ----
       Originally the builtin was not created if it wasn't applicable to the
       current ISA based on the command line switches.  With function specific
       options, we need to check in the context of the function making the call
!      whether it is supported.  Treat AVX512VL specially.  For other flags,
!      if isa includes more than one ISA bit, treat those are requiring any
!      of them.  For AVX512VL, require both AVX512VL and the non-AVX512VL
!      ISAs.  Similarly for 64BIT, but we shouldn't be building such builtins
!      at all, -m64 is a whole TU option.  */
!   if (((ix86_builtins_isa[fcode].isa
! 	& ~(OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_64BIT))
!        && !(ix86_builtins_isa[fcode].isa
! 	    & ~(OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_64BIT)
! 	    & ix86_isa_flags))
!       || ((ix86_builtins_isa[fcode].isa & OPTION_MASK_ISA_AVX512VL)
! 	  && !(ix86_isa_flags & OPTION_MASK_ISA_AVX512VL)))
      {
        char *opts = ix86_target_string (ix86_builtins_isa[fcode].isa, 0, NULL,
  				       NULL, (enum fpmath_unit) 0, false);
*************** ix86_expand_builtin (tree exp, rtx targe
*** 39529,39537 ****
        mode0 = DImode;
  
  rdrand_step:
-       op0 = gen_reg_rtx (mode0);
-       emit_insn (GEN_FCN (icode) (op0));
- 
        arg0 = CALL_EXPR_ARG (exp, 0);
        op1 = expand_normal (arg0);
        if (!address_operand (op1, VOIDmode))
--- 39588,39593 ----
*************** rdrand_step:
*** 39539,39544 ****
--- 39595,39604 ----
  	  op1 = convert_memory_address (Pmode, op1);
  	  op1 = copy_addr_to_reg (op1);
  	}
+ 
+       op0 = gen_reg_rtx (mode0);
+       emit_insn (GEN_FCN (icode) (op0));
+ 
        emit_move_insn (gen_rtx_MEM (mode0, op1), op0);
  
        op1 = gen_reg_rtx (SImode);
*************** rdrand_step:
*** 39547,39554 ****
        /* Emit SImode conditional move.  */
        if (mode0 == HImode)
  	{
! 	  op2 = gen_reg_rtx (SImode);
! 	  emit_insn (gen_zero_extendhisi2 (op2, op0));
  	}
        else if (mode0 == SImode)
  	op2 = op0;
--- 39607,39626 ----
        /* Emit SImode conditional move.  */
        if (mode0 == HImode)
  	{
! 	  if (TARGET_ZERO_EXTEND_WITH_AND
! 	      && optimize_function_for_speed_p (cfun))
! 	    {
! 	      op2 = force_reg (SImode, const0_rtx);
! 
! 	      emit_insn (gen_movstricthi
! 			 (gen_lowpart (HImode, op2), op0));
! 	    }
! 	  else
! 	    {
! 	      op2 = gen_reg_rtx (SImode);
! 
! 	      emit_insn (gen_zero_extendhisi2 (op2, op0));
! 	    }
  	}
        else if (mode0 == SImode)
  	op2 = op0;
*************** rdrand_step:
*** 39580,39588 ****
        mode0 = DImode;
  
  rdseed_step:
-       op0 = gen_reg_rtx (mode0);
-       emit_insn (GEN_FCN (icode) (op0));
- 
        arg0 = CALL_EXPR_ARG (exp, 0);
        op1 = expand_normal (arg0);
        if (!address_operand (op1, VOIDmode))
--- 39652,39657 ----
*************** rdseed_step:
*** 39590,39595 ****
--- 39659,39668 ----
  	  op1 = convert_memory_address (Pmode, op1);
  	  op1 = copy_addr_to_reg (op1);
  	}
+ 
+       op0 = gen_reg_rtx (mode0);
+       emit_insn (GEN_FCN (icode) (op0));
+ 
        emit_move_insn (gen_rtx_MEM (mode0, op1), op0);
  
        op2 = gen_reg_rtx (QImode);
*************** rdseed_step:
*** 39695,39708 ****
  
      case IX86_BUILTIN_KORTESTC16:
        icode = CODE_FOR_kortestchi;
!       mode0 = HImode;
!       mode1 = CCCmode;
        goto kortest;
  
      case IX86_BUILTIN_KORTESTZ16:
        icode = CODE_FOR_kortestzhi;
!       mode0 = HImode;
!       mode1 = CCZmode;
  
      kortest:
        arg0 = CALL_EXPR_ARG (exp, 0); /* Mask reg src1.  */
--- 39768,39779 ----
  
      case IX86_BUILTIN_KORTESTC16:
        icode = CODE_FOR_kortestchi;
!       mode3 = CCCmode;
        goto kortest;
  
      case IX86_BUILTIN_KORTESTZ16:
        icode = CODE_FOR_kortestzhi;
!       mode3 = CCZmode;
  
      kortest:
        arg0 = CALL_EXPR_ARG (exp, 0); /* Mask reg src1.  */
*************** rdseed_step:
*** 39710,39728 ****
        op0 = expand_normal (arg0);
        op1 = expand_normal (arg1);
  
!       op0 = copy_to_reg (op0);
!       op0 = simplify_gen_subreg (mode0, op0, GET_MODE (op0), 0);
!       op1 = copy_to_reg (op1);
!       op1 = simplify_gen_subreg (mode0, op1, GET_MODE (op1), 0);
  
        target = gen_reg_rtx (QImode);
-       emit_insn (gen_rtx_SET (mode0, target, const0_rtx));
  
        /* Emit kortest.  */
        emit_insn (GEN_FCN (icode) (op0, op1));
        /* And use setcc to return result from flags.  */
        ix86_expand_setcc (target, EQ,
! 			 gen_rtx_REG (mode1, FLAGS_REG), const0_rtx);
        return target;
  
      case IX86_BUILTIN_GATHERSIV2DF:
--- 39781,39812 ----
        op0 = expand_normal (arg0);
        op1 = expand_normal (arg1);
  
!       mode0 = insn_data[icode].operand[0].mode;
!       mode1 = insn_data[icode].operand[1].mode;
! 
!       if (GET_MODE (op0) != VOIDmode)
! 	op0 = force_reg (GET_MODE (op0), op0);
! 
!       op0 = gen_lowpart (mode0, op0);
! 
!       if (!insn_data[icode].operand[0].predicate (op0, mode0))
! 	op0 = copy_to_mode_reg (mode0, op0);
! 
!       if (GET_MODE (op1) != VOIDmode)
! 	op1 = force_reg (GET_MODE (op1), op1);
! 
!       op1 = gen_lowpart (mode1, op1);
! 
!       if (!insn_data[icode].operand[1].predicate (op1, mode1))
! 	op1 = copy_to_mode_reg (mode1, op1);
  
        target = gen_reg_rtx (QImode);
  
        /* Emit kortest.  */
        emit_insn (GEN_FCN (icode) (op0, op1));
        /* And use setcc to return result from flags.  */
        ix86_expand_setcc (target, EQ,
! 			 gen_rtx_REG (mode3, FLAGS_REG), const0_rtx);
        return target;
  
      case IX86_BUILTIN_GATHERSIV2DF:
*************** ix86_vector_duplicate_value (machine_mod
*** 43985,43994 ****
    if (recog_memoized (insn) < 0)
      {
        rtx_insn *seq;
        /* If that fails, force VAL into a register.  */
  
        start_sequence ();
!       XEXP (dup, 0) = force_reg (GET_MODE_INNER (mode), val);
        seq = get_insns ();
        end_sequence ();
        if (seq)
--- 44069,44084 ----
    if (recog_memoized (insn) < 0)
      {
        rtx_insn *seq;
+       machine_mode innermode = GET_MODE_INNER (mode);
+       rtx reg;
+ 
        /* If that fails, force VAL into a register.  */
  
        start_sequence ();
!       reg = force_reg (innermode, val);
!       if (GET_MODE (reg) != innermode)
! 	reg = gen_lowpart (innermode, reg);
!       XEXP (dup, 0) = reg;
        seq = get_insns ();
        end_sequence ();
        if (seq)
diff -Nrcpad gcc-5.4.0/gcc/config/i386/i386.h gcc-5.5.0/gcc/config/i386/i386.h
*** gcc-5.4.0/gcc/config/i386/i386.h	Wed May 25 08:08:08 2016
--- gcc-5.5.0/gcc/config/i386/i386.h	Thu Oct 13 21:19:00 2016
*************** see the files COPYING3 and COPYING.RUNTI
*** 150,157 ****
  #define TARGET_PREFETCHWT1_P(x)	TARGET_ISA_PREFETCHWT1_P(x)
  #define TARGET_MPX	TARGET_ISA_MPX
  #define TARGET_MPX_P(x)	TARGET_ISA_MPX_P(x)
- #define TARGET_PCOMMIT	TARGET_ISA_PCOMMIT
- #define TARGET_PCOMMIT_P(x)	TARGET_ISA_PCOMMIT_P(x)
  #define TARGET_CLWB	TARGET_ISA_CLWB
  #define TARGET_CLWB_P(x)	TARGET_ISA_CLWB_P(x)
  #define TARGET_MWAITX	TARGET_ISA_MWAITX
--- 150,155 ----
diff -Nrcpad gcc-5.4.0/gcc/config/i386/i386.md gcc-5.5.0/gcc/config/i386/i386.md
*** gcc-5.4.0/gcc/config/i386/i386.md	Wed Mar 30 12:38:21 2016
--- gcc-5.5.0/gcc/config/i386/i386.md	Tue Jul 18 21:44:03 2017
***************
*** 255,263 ****
    ;; For CLWB support
    UNSPECV_CLWB
  
-   ;; For PCOMMIT support
-   UNSPECV_PCOMMIT
- 
    ;; For CLFLUSHOPT support
    UNSPECV_CLFLUSHOPT
  
--- 255,260 ----
***************
*** 2819,2824 ****
--- 2816,2851 ----
    operands[0] = replace_equiv_address (operands[0], stack_pointer_rtx);
  })
  
+ (define_insn_and_split "*pushxf_rounded"
+   [(set (mem:XF
+ 	  (pre_modify:P
+ 	    (reg:P SP_REG)
+ 	    (plus:P (reg:P SP_REG) (const_int -16))))
+ 	(match_operand:XF 0 "nonmemory_no_elim_operand" "f,r,*r,C"))]
+   "TARGET_64BIT"
+   "#"
+   "&& 1"
+   [(set (reg:P SP_REG) (plus:P (reg:P SP_REG) (const_int -16)))
+    (set (match_dup 1) (match_dup 0))]
+ {
+   rtx pat = PATTERN (curr_insn);
+   operands[1] = SET_DEST (pat);
+ 
+   /* Preserve memory attributes. */
+   operands[1] = replace_equiv_address (operands[1], stack_pointer_rtx);
+ }
+   [(set_attr "type" "multi")
+    (set_attr "unit" "i387,*,*,*")
+    (set (attr "mode")
+ 	(cond [(eq_attr "alternative" "1,2,3")
+ 		 (const_string "DI")
+ 	      ]
+ 	      (const_string "XF")))
+    (set (attr "preferred_for_size")
+      (cond [(eq_attr "alternative" "1")
+               (symbol_ref "false")]
+            (symbol_ref "true")))])
+ 
  (define_insn "*pushxf"
    [(set (match_operand:XF 0 "push_operand" "=<,<,<,<")
  	(match_operand:XF 1 "general_no_elim_operand" "f,r,*r,oF"))]
***************
*** 2974,2980 ****
  	(match_operand:TF 1 "general_operand"	   "C ,xm,x,*roF,*rC"))]
    "(TARGET_64BIT || TARGET_SSE)
     && !(MEM_P (operands[0]) && MEM_P (operands[1]))
!    && (!can_create_pseudo_p ()
         || (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE)
         || GET_CODE (operands[1]) != CONST_DOUBLE
         || (optimize_function_for_size_p (cfun)
--- 3001,3007 ----
  	(match_operand:TF 1 "general_operand"	   "C ,xm,x,*roF,*rC"))]
    "(TARGET_64BIT || TARGET_SSE)
     && !(MEM_P (operands[0]) && MEM_P (operands[1]))
!    && (lra_in_progress || reload_completed
         || (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE)
         || GET_CODE (operands[1]) != CONST_DOUBLE
         || (optimize_function_for_size_p (cfun)
***************
*** 3044,3050 ****
  	(match_operand:XF 1 "general_operand"
  	 "fm,f,G,roF,r , *roF,*r,F ,C"))]
    "!(MEM_P (operands[0]) && MEM_P (operands[1]))
!    && (!can_create_pseudo_p ()
         || (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE)
         || GET_CODE (operands[1]) != CONST_DOUBLE
         || (optimize_function_for_size_p (cfun)
--- 3071,3077 ----
  	(match_operand:XF 1 "general_operand"
  	 "fm,f,G,roF,r , *roF,*r,F ,C"))]
    "!(MEM_P (operands[0]) && MEM_P (operands[1]))
!    && (lra_in_progress || reload_completed
         || (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE)
         || GET_CODE (operands[1]) != CONST_DOUBLE
         || (optimize_function_for_size_p (cfun)
***************
*** 3098,3104 ****
  	(match_operand:DF 1 "general_operand"
      "Yf*fm,Yf*f,G   ,roF,r ,*roF,*r,F ,rm,rC,C ,F ,C,v,m,v,C ,*x,m ,*x,Yj,r"))]
    "!(MEM_P (operands[0]) && MEM_P (operands[1]))
!    && (!can_create_pseudo_p ()
         || (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE)
         || GET_CODE (operands[1]) != CONST_DOUBLE
         || (optimize_function_for_size_p (cfun)
--- 3125,3131 ----
  	(match_operand:DF 1 "general_operand"
      "Yf*fm,Yf*f,G   ,roF,r ,*roF,*r,F ,rm,rC,C ,F ,C,v,m,v,C ,*x,m ,*x,Yj,r"))]
    "!(MEM_P (operands[0]) && MEM_P (operands[1]))
!    && (lra_in_progress || reload_completed
         || (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE)
         || GET_CODE (operands[1]) != CONST_DOUBLE
         || (optimize_function_for_size_p (cfun)
***************
*** 3281,3287 ****
  	(match_operand:SF 1 "general_operand"
  	  "Yf*fm,Yf*f,G   ,rmF,rF,C,v,m,v,Yj,r  ,*y ,m  ,*y,*Yn,r"))]
    "!(MEM_P (operands[0]) && MEM_P (operands[1]))
!    && (!can_create_pseudo_p ()
         || (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE)
         || GET_CODE (operands[1]) != CONST_DOUBLE
         || (optimize_function_for_size_p (cfun)
--- 3308,3314 ----
  	(match_operand:SF 1 "general_operand"
  	  "Yf*fm,Yf*f,G   ,rmF,rF,C,v,m,v,Yj,r  ,*y ,m  ,*y,*Yn,r"))]
    "!(MEM_P (operands[0]) && MEM_P (operands[1]))
!    && (lra_in_progress || reload_completed
         || (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE)
         || GET_CODE (operands[1]) != CONST_DOUBLE
         || (optimize_function_for_size_p (cfun)
***************
*** 5132,5138 ****
  (define_expand "floatunsdisf2"
    [(use (match_operand:SF 0 "register_operand"))
     (use (match_operand:DI 1 "nonimmediate_operand"))]
!   "TARGET_64BIT && TARGET_SSE_MATH"
    "x86_emit_floatuns (operands); DONE;")
  
  (define_expand "floatunsdidf2"
--- 5159,5165 ----
  (define_expand "floatunsdisf2"
    [(use (match_operand:SF 0 "register_operand"))
     (use (match_operand:DI 1 "nonimmediate_operand"))]
!   "TARGET_64BIT && TARGET_SSE && TARGET_SSE_MATH"
    "x86_emit_floatuns (operands); DONE;")
  
  (define_expand "floatunsdidf2"
***************
*** 7080,7100 ****
  		(match_operand:XF 2 "register_operand")))]
    "TARGET_80387")
  
! (define_expand "divdf3"
!   [(set (match_operand:DF 0 "register_operand")
!  	(div:DF (match_operand:DF 1 "register_operand")
!  		(match_operand:DF 2 "nonimmediate_operand")))]
!    "(TARGET_80387 && X87_ENABLE_ARITH (DFmode))
!     || (TARGET_SSE2 && TARGET_SSE_MATH)")
! 
! (define_expand "divsf3"
!   [(set (match_operand:SF 0 "register_operand")
! 	(div:SF (match_operand:SF 1 "register_operand")
! 		(match_operand:SF 2 "nonimmediate_operand")))]
!   "(TARGET_80387 && X87_ENABLE_ARITH (SFmode))
!     || TARGET_SSE_MATH"
  {
!   if (TARGET_SSE_MATH
        && TARGET_RECIP_DIV
        && optimize_insn_for_speed_p ()
        && flag_finite_math_only && !flag_trapping_math
--- 7107,7121 ----
  		(match_operand:XF 2 "register_operand")))]
    "TARGET_80387")
  
! (define_expand "div<mode>3"
!   [(set (match_operand:MODEF 0 "register_operand")
! 	(div:MODEF (match_operand:MODEF 1 "register_operand")
! 		   (match_operand:MODEF 2 "nonimmediate_operand")))]
!   "(TARGET_80387 && X87_ENABLE_ARITH (<MODE>mode))
!     || (SSE_FLOAT_MODE_P (<MODE>mode) && TARGET_SSE_MATH)"
  {
!   if (<MODE>mode == SFmode
!       && TARGET_SSE && TARGET_SSE_MATH
        && TARGET_RECIP_DIV
        && optimize_insn_for_speed_p ()
        && flag_finite_math_only && !flag_trapping_math
***************
*** 8364,8370 ****
    [(set (match_operand:HI 0 "nonimmediate_operand" "=r,rm,!k")
  	(any_or:HI
  	 (match_operand:HI 1 "nonimmediate_operand" "%0,0,k")
! 	 (match_operand:HI 2 "general_operand" "<g>,r<i>,k")))
     (clobber (reg:CC FLAGS_REG))]
    "ix86_binary_operator_ok (<CODE>, HImode, operands)"
    "@
--- 8385,8391 ----
    [(set (match_operand:HI 0 "nonimmediate_operand" "=r,rm,!k")
  	(any_or:HI
  	 (match_operand:HI 1 "nonimmediate_operand" "%0,0,k")
! 	 (match_operand:HI 2 "general_operand" "rmn,rn,k")))
     (clobber (reg:CC FLAGS_REG))]
    "ix86_binary_operator_ok (<CODE>, HImode, operands)"
    "@
***************
*** 8446,8452 ****
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_AVX512F"
  {
!   if (which_alternative == 1 && <MODE>mode == QImode && TARGET_AVX512DQ)
      return "kxnorb\t{%2, %1, %0|%0, %1, %2}";
    return "kxnorw\t{%2, %1, %0|%0, %1, %2}";
  }
--- 8467,8476 ----
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_AVX512F"
  {
!   if (which_alternative == 0)
!     return "#";
! 
!   if (<MODE>mode == QImode && TARGET_AVX512DQ)
      return "kxnorb\t{%2, %1, %0|%0, %1, %2}";
    return "kxnorw\t{%2, %1, %0|%0, %1, %2}";
  }
***************
*** 9285,9291 ****
    "ix86_expand_binary_operator (ASHIFT, <MODE>mode, operands); DONE;")
  
  (define_insn "*ashl<mode>3_doubleword"
!   [(set (match_operand:DWI 0 "register_operand" "=&r,r")
  	(ashift:DWI (match_operand:DWI 1 "reg_or_pm1_operand" "n,0")
  		    (match_operand:QI 2 "nonmemory_operand" "<S>c,<S>c")))
     (clobber (reg:CC FLAGS_REG))]
--- 9309,9315 ----
    "ix86_expand_binary_operator (ASHIFT, <MODE>mode, operands); DONE;")
  
  (define_insn "*ashl<mode>3_doubleword"
!   [(set (match_operand:DWI 0 "register_operand" "=&r,&r")
  	(ashift:DWI (match_operand:DWI 1 "reg_or_pm1_operand" "n,0")
  		    (match_operand:QI 2 "nonmemory_operand" "<S>c,<S>c")))
     (clobber (reg:CC FLAGS_REG))]
***************
*** 9918,9924 ****
     (set_attr "mode" "<MODE>")])
  
  (define_insn_and_split "*<shift_insn><mode>3_doubleword"
!   [(set (match_operand:DWI 0 "register_operand" "=r")
  	(any_shiftrt:DWI (match_operand:DWI 1 "register_operand" "0")
  			 (match_operand:QI 2 "nonmemory_operand" "<S>c")))
     (clobber (reg:CC FLAGS_REG))]
--- 9942,9948 ----
     (set_attr "mode" "<MODE>")])
  
  (define_insn_and_split "*<shift_insn><mode>3_doubleword"
!   [(set (match_operand:DWI 0 "register_operand" "=&r")
  	(any_shiftrt:DWI (match_operand:DWI 1 "register_operand" "0")
  			 (match_operand:QI 2 "nonmemory_operand" "<S>c")))
     (clobber (reg:CC FLAGS_REG))]
***************
*** 10431,10440 ****
    split_double_mode (<DWI>mode, &operands[0], 1, &operands[4], &operands[5]);
  })
  
  (define_insn "*bmi2_rorx<mode>3_1"
    [(set (match_operand:SWI48 0 "register_operand" "=r")
! 	(rotatert:SWI48 (match_operand:SWI48 1 "nonimmediate_operand" "rm")
! 			(match_operand:QI 2 "immediate_operand" "<S>")))]
    "TARGET_BMI2"
    "rorx\t{%2, %1, %0|%0, %1, %2}"
    [(set_attr "type" "rotatex")
--- 10455,10469 ----
    split_double_mode (<DWI>mode, &operands[0], 1, &operands[4], &operands[5]);
  })
  
+ (define_mode_attr rorx_immediate_operand
+ 	[(SI "const_0_to_31_operand")
+ 	 (DI "const_0_to_63_operand")])
+ 
  (define_insn "*bmi2_rorx<mode>3_1"
    [(set (match_operand:SWI48 0 "register_operand" "=r")
! 	(rotatert:SWI48
! 	  (match_operand:SWI48 1 "nonimmediate_operand" "rm")
! 	  (match_operand:QI 2 "<rorx_immediate_operand>" "<S>")))]
    "TARGET_BMI2"
    "rorx\t{%2, %1, %0|%0, %1, %2}"
    [(set_attr "type" "rotatex")
***************
*** 10477,10496 ****
  (define_split
    [(set (match_operand:SWI48 0 "register_operand")
  	(rotate:SWI48 (match_operand:SWI48 1 "nonimmediate_operand")
! 		      (match_operand:QI 2 "immediate_operand")))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_BMI2 && reload_completed"
    [(set (match_dup 0)
  	(rotatert:SWI48 (match_dup 1) (match_dup 2)))]
  {
!   operands[2]
!     = GEN_INT (GET_MODE_BITSIZE (<MODE>mode) - INTVAL (operands[2]));
  })
  
  (define_split
    [(set (match_operand:SWI48 0 "register_operand")
  	(rotatert:SWI48 (match_operand:SWI48 1 "nonimmediate_operand")
! 			(match_operand:QI 2 "immediate_operand")))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_BMI2 && reload_completed"
    [(set (match_dup 0)
--- 10506,10526 ----
  (define_split
    [(set (match_operand:SWI48 0 "register_operand")
  	(rotate:SWI48 (match_operand:SWI48 1 "nonimmediate_operand")
! 		      (match_operand:QI 2 "const_int_operand")))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_BMI2 && reload_completed"
    [(set (match_dup 0)
  	(rotatert:SWI48 (match_dup 1) (match_dup 2)))]
  {
!   int bitsize = GET_MODE_BITSIZE (<MODE>mode);
! 
!   operands[2] = GEN_INT ((bitsize - INTVAL (operands[2])) % bitsize);
  })
  
  (define_split
    [(set (match_operand:SWI48 0 "register_operand")
  	(rotatert:SWI48 (match_operand:SWI48 1 "nonimmediate_operand")
! 			(match_operand:QI 2 "const_int_operand")))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_BMI2 && reload_completed"
    [(set (match_dup 0)
***************
*** 10500,10506 ****
    [(set (match_operand:DI 0 "register_operand" "=r")
  	(zero_extend:DI
  	  (rotatert:SI (match_operand:SI 1 "nonimmediate_operand" "rm")
! 		       (match_operand:QI 2 "immediate_operand" "I"))))]
    "TARGET_64BIT && TARGET_BMI2"
    "rorx\t{%2, %1, %k0|%k0, %1, %2}"
    [(set_attr "type" "rotatex")
--- 10530,10536 ----
    [(set (match_operand:DI 0 "register_operand" "=r")
  	(zero_extend:DI
  	  (rotatert:SI (match_operand:SI 1 "nonimmediate_operand" "rm")
! 		       (match_operand:QI 2 "const_0_to_31_operand" "I"))))]
    "TARGET_64BIT && TARGET_BMI2"
    "rorx\t{%2, %1, %k0|%k0, %1, %2}"
    [(set_attr "type" "rotatex")
***************
*** 10544,10564 ****
    [(set (match_operand:DI 0 "register_operand")
  	(zero_extend:DI
  	  (rotate:SI (match_operand:SI 1 "nonimmediate_operand")
! 		     (match_operand:QI 2 "immediate_operand"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT && TARGET_BMI2 && reload_completed"
    [(set (match_dup 0)
  	(zero_extend:DI (rotatert:SI (match_dup 1) (match_dup 2))))]
  {
!   operands[2]
!     = GEN_INT (GET_MODE_BITSIZE (SImode) - INTVAL (operands[2]));
  })
  
  (define_split
    [(set (match_operand:DI 0 "register_operand")
  	(zero_extend:DI
  	  (rotatert:SI (match_operand:SI 1 "nonimmediate_operand")
! 		       (match_operand:QI 2 "immediate_operand"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT && TARGET_BMI2 && reload_completed"
    [(set (match_dup 0)
--- 10574,10595 ----
    [(set (match_operand:DI 0 "register_operand")
  	(zero_extend:DI
  	  (rotate:SI (match_operand:SI 1 "nonimmediate_operand")
! 		     (match_operand:QI 2 "const_int_operand"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT && TARGET_BMI2 && reload_completed"
    [(set (match_dup 0)
  	(zero_extend:DI (rotatert:SI (match_dup 1) (match_dup 2))))]
  {
!   int bitsize = GET_MODE_BITSIZE (SImode);
! 
!   operands[2] = GEN_INT ((bitsize - INTVAL (operands[2])) % bitsize);
  })
  
  (define_split
    [(set (match_operand:DI 0 "register_operand")
  	(zero_extend:DI
  	  (rotatert:SI (match_operand:SI 1 "nonimmediate_operand")
! 		       (match_operand:QI 2 "const_int_operand"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT && TARGET_BMI2 && reload_completed"
    [(set (match_dup 0)
***************
*** 11625,11631 ****
  	(zero_extend (match_dup 1)))]
    "(peep2_reg_dead_p (3, operands[1])
      || operands_match_p (operands[1], operands[3]))
!    && ! reg_overlap_mentioned_p (operands[3], operands[0])"
    [(set (match_dup 4) (match_dup 0))
     (set (strict_low_part (match_dup 5))
  	(match_dup 2))]
--- 11656,11663 ----
  	(zero_extend (match_dup 1)))]
    "(peep2_reg_dead_p (3, operands[1])
      || operands_match_p (operands[1], operands[3]))
!    && ! reg_overlap_mentioned_p (operands[3], operands[0])
!    && peep2_regno_dead_p (0, FLAGS_REG)"
    [(set (match_dup 4) (match_dup 0))
     (set (strict_low_part (match_dup 5))
  	(match_dup 2))]
***************
*** 11645,11651 ****
  	(zero_extend (match_dup 1)))]
    "(peep2_reg_dead_p (3, operands[1])
      || operands_match_p (operands[1], operands[3]))
!    && ! reg_overlap_mentioned_p (operands[3], operands[0])"
    [(parallel [(set (match_dup 5) (match_dup 0))
  	      (match_dup 4)])
     (set (strict_low_part (match_dup 6))
--- 11677,11685 ----
  	(zero_extend (match_dup 1)))]
    "(peep2_reg_dead_p (3, operands[1])
      || operands_match_p (operands[1], operands[3]))
!    && ! reg_overlap_mentioned_p (operands[3], operands[0])
!    && ! reg_set_p (operands[3], operands[4])
!    && peep2_regno_dead_p (0, FLAGS_REG)"
    [(parallel [(set (match_dup 5) (match_dup 0))
  	      (match_dup 4)])
     (set (strict_low_part (match_dup 6))
***************
*** 11667,11673 ****
  		   (and:SI (match_dup 3) (const_int 255)))
  	      (clobber (reg:CC FLAGS_REG))])]
    "REGNO (operands[1]) == REGNO (operands[3])
!    && ! reg_overlap_mentioned_p (operands[3], operands[0])"
    [(set (match_dup 4) (match_dup 0))
     (set (strict_low_part (match_dup 5))
  	(match_dup 2))]
--- 11701,11708 ----
  		   (and:SI (match_dup 3) (const_int 255)))
  	      (clobber (reg:CC FLAGS_REG))])]
    "REGNO (operands[1]) == REGNO (operands[3])
!    && ! reg_overlap_mentioned_p (operands[3], operands[0])
!    && peep2_regno_dead_p (0, FLAGS_REG)"
    [(set (match_dup 4) (match_dup 0))
     (set (strict_low_part (match_dup 5))
  	(match_dup 2))]
***************
*** 11688,11694 ****
  	      (clobber (reg:CC FLAGS_REG))])]
    "(peep2_reg_dead_p (3, operands[1])
      || operands_match_p (operands[1], operands[3]))
!    && ! reg_overlap_mentioned_p (operands[3], operands[0])"
    [(parallel [(set (match_dup 5) (match_dup 0))
  	      (match_dup 4)])
     (set (strict_low_part (match_dup 6))
--- 11723,11731 ----
  	      (clobber (reg:CC FLAGS_REG))])]
    "(peep2_reg_dead_p (3, operands[1])
      || operands_match_p (operands[1], operands[3]))
!    && ! reg_overlap_mentioned_p (operands[3], operands[0])
!    && ! reg_set_p (operands[3], operands[4])
!    && peep2_regno_dead_p (0, FLAGS_REG)"
    [(parallel [(set (match_dup 5) (match_dup 0))
  	      (match_dup 4)])
     (set (strict_low_part (match_dup 6))
***************
*** 13744,13750 ****
    [(set (match_operand:SF 0 "register_operand" "=x")
  	(unspec:SF [(match_operand:SF 1 "nonimmediate_operand" "xm")]
  		   UNSPEC_RCP))]
!   "TARGET_SSE_MATH"
    "%vrcpss\t{%1, %d0|%d0, %1}"
    [(set_attr "type" "sse")
     (set_attr "atom_sse_attr" "rcp")
--- 13781,13787 ----
    [(set (match_operand:SF 0 "register_operand" "=x")
  	(unspec:SF [(match_operand:SF 1 "nonimmediate_operand" "xm")]
  		   UNSPEC_RCP))]
!   "TARGET_SSE && TARGET_SSE_MATH"
    "%vrcpss\t{%1, %d0|%d0, %1}"
    [(set_attr "type" "sse")
     (set_attr "atom_sse_attr" "rcp")
***************
*** 14053,14059 ****
    [(set (match_operand:SF 0 "register_operand" "=x")
  	(unspec:SF [(match_operand:SF 1 "nonimmediate_operand" "xm")]
  		   UNSPEC_RSQRT))]
!   "TARGET_SSE_MATH"
    "%vrsqrtss\t{%1, %d0|%d0, %1}"
    [(set_attr "type" "sse")
     (set_attr "atom_sse_attr" "rcp")
--- 14090,14096 ----
    [(set (match_operand:SF 0 "register_operand" "=x")
  	(unspec:SF [(match_operand:SF 1 "nonimmediate_operand" "xm")]
  		   UNSPEC_RSQRT))]
!   "TARGET_SSE && TARGET_SSE_MATH"
    "%vrsqrtss\t{%1, %d0|%d0, %1}"
    [(set_attr "type" "sse")
     (set_attr "atom_sse_attr" "rcp")
***************
*** 14065,14071 ****
    [(set (match_operand:SF 0 "register_operand")
  	(unspec:SF [(match_operand:SF 1 "nonimmediate_operand")]
  		   UNSPEC_RSQRT))]
!   "TARGET_SSE_MATH"
  {
    ix86_emit_swsqrtsf (operands[0], operands[1], SFmode, 1);
    DONE;
--- 14102,14108 ----
    [(set (match_operand:SF 0 "register_operand")
  	(unspec:SF [(match_operand:SF 1 "nonimmediate_operand")]
  		   UNSPEC_RSQRT))]
!   "TARGET_SSE && TARGET_SSE_MATH"
  {
    ix86_emit_swsqrtsf (operands[0], operands[1], SFmode, 1);
    DONE;
***************
*** 14094,14100 ****
     || (SSE_FLOAT_MODE_P (<MODE>mode) && TARGET_SSE_MATH)"
  {
    if (<MODE>mode == SFmode
!       && TARGET_SSE_MATH
        && TARGET_RECIP_SQRT
        && !optimize_function_for_size_p (cfun)
        && flag_finite_math_only && !flag_trapping_math
--- 14131,14137 ----
     || (SSE_FLOAT_MODE_P (<MODE>mode) && TARGET_SSE_MATH)"
  {
    if (<MODE>mode == SFmode
!       && TARGET_SSE && TARGET_SSE_MATH
        && TARGET_RECIP_SQRT
        && !optimize_function_for_size_p (cfun)
        && flag_finite_math_only && !flag_trapping_math
***************
*** 18871,18883 ****
    [(set_attr "type" "other")
     (set_attr "length" "3")])
  
- (define_insn "pcommit"
-   [(unspec_volatile [(const_int 0)] UNSPECV_PCOMMIT)]
-   "TARGET_PCOMMIT"
-   "pcommit"
-   [(set_attr "type" "other")
-    (set_attr "length" "4")])
- 
  (define_insn "clwb"
    [(unspec_volatile [(match_operand 0 "address_operand" "p")]
                     UNSPECV_CLWB)]
--- 18908,18913 ----
diff -Nrcpad gcc-5.4.0/gcc/config/i386/i386.opt gcc-5.5.0/gcc/config/i386/i386.opt
*** gcc-5.4.0/gcc/config/i386/i386.opt	Thu Jun 18 10:56:43 2015
--- gcc-5.5.0/gcc/config/i386/i386.opt	Thu Oct 13 21:19:00 2016
*************** Target Report Mask(ISA_CLWB) Var(ix86_is
*** 747,754 ****
  Support CLWB instruction
  
  mpcommit
! Target Report Mask(ISA_PCOMMIT) Var(ix86_isa_flags) Save
! Support PCOMMIT instruction
  
  mfxsr
  Target Report Mask(ISA_FXSR) Var(ix86_isa_flags) Save
--- 747,754 ----
  Support CLWB instruction
  
  mpcommit
! Target Undocumented Warn(%<-mpcommit%> was deprecated)
! ;; Deprecated
  
  mfxsr
  Target Report Mask(ISA_FXSR) Var(ix86_isa_flags) Save
diff -Nrcpad gcc-5.4.0/gcc/config/i386/ia32intrin.h gcc-5.5.0/gcc/config/i386/ia32intrin.h
*** gcc-5.4.0/gcc/config/i386/ia32intrin.h	Mon Jan  5 12:33:28 2015
--- gcc-5.5.0/gcc/config/i386/ia32intrin.h	Thu Jun  1 21:51:51 2017
*************** __readeflags (void)
*** 249,257 ****
  /* Write flags register */
  extern __inline void
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! __writeeflags (unsigned long long X)
  {
!   __builtin_ia32_writeeflags_u64 (X);
  }
  
  #define _bswap64(a)		__bswapq(a)
--- 249,257 ----
  /* Write flags register */
  extern __inline void
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! __writeeflags (unsigned long long __X)
  {
!   __builtin_ia32_writeeflags_u64 (__X);
  }
  
  #define _bswap64(a)		__bswapq(a)
*************** __readeflags (void)
*** 269,277 ****
  /* Write flags register */
  extern __inline void
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! __writeeflags (unsigned int X)
  {
!   __builtin_ia32_writeeflags_u32 (X);
  }
  
  #endif
--- 269,277 ----
  /* Write flags register */
  extern __inline void
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! __writeeflags (unsigned int __X)
  {
!   __builtin_ia32_writeeflags_u32 (__X);
  }
  
  #endif
diff -Nrcpad gcc-5.4.0/gcc/config/i386/lwpintrin.h gcc-5.5.0/gcc/config/i386/lwpintrin.h
*** gcc-5.4.0/gcc/config/i386/lwpintrin.h	Mon Jan  5 12:33:28 2015
--- gcc-5.5.0/gcc/config/i386/lwpintrin.h	Thu Jun  1 21:51:51 2017
***************
*** 35,43 ****
  #endif /* __LWP__ */
  
  extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! __llwpcb (void *pcbAddress)
  {
!   __builtin_ia32_llwpcb (pcbAddress);
  }
  
  extern __inline void * __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 35,43 ----
  #endif /* __LWP__ */
  
  extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! __llwpcb (void *__pcbAddress)
  {
!   __builtin_ia32_llwpcb (__pcbAddress);
  }
  
  extern __inline void * __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** __slwpcb (void)
*** 48,63 ****
  
  #ifdef __OPTIMIZE__
  extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! __lwpval32 (unsigned int data2, unsigned int data1, unsigned int flags)
  {
!   __builtin_ia32_lwpval32 (data2, data1, flags);
  }
  
  #ifdef __x86_64__
  extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! __lwpval64 (unsigned long long data2, unsigned int data1, unsigned int flags)
  {
!   __builtin_ia32_lwpval64 (data2, data1, flags);
  }
  #endif
  #else
--- 48,64 ----
  
  #ifdef __OPTIMIZE__
  extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! __lwpval32 (unsigned int __data2, unsigned int __data1, unsigned int __flags)
  {
!   __builtin_ia32_lwpval32 (__data2, __data1, __flags);
  }
  
  #ifdef __x86_64__
  extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! __lwpval64 (unsigned long long __data2, unsigned int __data1,
! 	    unsigned int __flags)
  {
!   __builtin_ia32_lwpval64 (__data2, __data1, __flags);
  }
  #endif
  #else
*************** __lwpval64 (unsigned long long data2, un
*** 74,89 ****
  
  #ifdef __OPTIMIZE__
  extern __inline unsigned char __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! __lwpins32 (unsigned int data2, unsigned int data1, unsigned int flags)
  {
!   return __builtin_ia32_lwpins32 (data2, data1, flags);
  }
  
  #ifdef __x86_64__
  extern __inline unsigned char __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! __lwpins64 (unsigned long long data2, unsigned int data1, unsigned int flags)
  {
!   return __builtin_ia32_lwpins64 (data2, data1, flags);
  }
  #endif
  #else
--- 75,91 ----
  
  #ifdef __OPTIMIZE__
  extern __inline unsigned char __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! __lwpins32 (unsigned int __data2, unsigned int __data1, unsigned int __flags)
  {
!   return __builtin_ia32_lwpins32 (__data2, __data1, __flags);
  }
  
  #ifdef __x86_64__
  extern __inline unsigned char __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! __lwpins64 (unsigned long long __data2, unsigned int __data1,
! 	    unsigned int __flags)
  {
!   return __builtin_ia32_lwpins64 (__data2, __data1, __flags);
  }
  #endif
  #else
diff -Nrcpad gcc-5.4.0/gcc/config/i386/mmx.md gcc-5.5.0/gcc/config/i386/mmx.md
*** gcc-5.4.0/gcc/config/i386/mmx.md	Mon Jan  5 12:33:28 2015
--- gcc-5.5.0/gcc/config/i386/mmx.md	Tue May 30 08:23:29 2017
***************
*** 78,86 ****
  
  (define_insn "*mov<mode>_internal"
    [(set (match_operand:MMXMODE 0 "nonimmediate_operand"
!     "=r ,o ,r,r ,m ,?!y,!y,?!y,m  ,r   ,?!Ym,v,v,v,m,*x,*x,*x,m ,r ,Yi,!Ym,*Yi")
  	(match_operand:MMXMODE 1 "vector_move_operand"
!     "rCo,rC,C,rm,rC,C  ,!y,m  ,?!y,?!Yn,r   ,C,v,m,v,C ,*x,m ,*x,Yj,r ,*Yj,!Yn"))]
    "TARGET_MMX
     && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
  {
--- 78,86 ----
  
  (define_insn "*mov<mode>_internal"
    [(set (match_operand:MMXMODE 0 "nonimmediate_operand"
!     "=r ,o ,r,r ,m ,?!y,!y,?!y,m  ,r   ,?!Ym,v,v,v,m,r ,Yi,!Ym,*Yi")
  	(match_operand:MMXMODE 1 "vector_move_operand"
!     "rCo,rC,C,rm,rC,C  ,!y,m  ,?!y,?!Yn,r   ,C,v,m,v,Yj,r ,*Yj,!Yn"))]
    "TARGET_MMX
     && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
  {
***************
*** 146,152 ****
    [(set (attr "isa")
       (cond [(eq_attr "alternative" "0,1")
  	      (const_string "nox64")
! 	    (eq_attr "alternative" "2,3,4,9,10,11,12,13,14,19,20")
  	      (const_string "x64")
  	   ]
  	   (const_string "*")))
--- 146,152 ----
    [(set (attr "isa")
       (cond [(eq_attr "alternative" "0,1")
  	      (const_string "nox64")
! 	    (eq_attr "alternative" "2,3,4,9,10,15,16")
  	      (const_string "x64")
  	   ]
  	   (const_string "*")))
***************
*** 159,172 ****
  	      (const_string "mmx")
  	    (eq_attr "alternative" "6,7,8,9,10")
  	      (const_string "mmxmov")
! 	    (eq_attr "alternative" "11,15")
  	      (const_string "sselog1")
! 	    (eq_attr "alternative" "21,22")
  	      (const_string "ssecvt")
  	   ]
  	   (const_string "ssemov")))
     (set (attr "prefix_rex")
!      (if_then_else (eq_attr "alternative" "9,10,19,20")
         (const_string "1")
         (const_string "*")))
     (set (attr "prefix")
--- 159,172 ----
  	      (const_string "mmx")
  	    (eq_attr "alternative" "6,7,8,9,10")
  	      (const_string "mmxmov")
! 	    (eq_attr "alternative" "11")
  	      (const_string "sselog1")
! 	    (eq_attr "alternative" "17,18")
  	      (const_string "ssecvt")
  	   ]
  	   (const_string "ssemov")))
     (set (attr "prefix_rex")
!      (if_then_else (eq_attr "alternative" "9,10,15,16")
         (const_string "1")
         (const_string "*")))
     (set (attr "prefix")
***************
*** 181,187 ****
     (set (attr "mode")
       (cond [(eq_attr "alternative" "2")
  	      (const_string "SI")
! 	    (eq_attr "alternative" "11,12,15,16")
  	      (cond [(ior (match_operand 0 "ext_sse_reg_operand")
  			  (match_operand 1 "ext_sse_reg_operand"))
  			(const_string "XI")
--- 181,187 ----
     (set (attr "mode")
       (cond [(eq_attr "alternative" "2")
  	      (const_string "SI")
! 	    (eq_attr "alternative" "11,12")
  	      (cond [(ior (match_operand 0 "ext_sse_reg_operand")
  			  (match_operand 1 "ext_sse_reg_operand"))
  			(const_string "XI")
***************
*** 197,203 ****
  		    ]
  		    (const_string "TI"))
  
! 	    (and (eq_attr "alternative" "13,14,17,18")
  	    	 (ior (match_test "<MODE>mode == V2SFmode")
  		      (not (match_test "TARGET_SSE2"))))
  	      (const_string "V2SF")
--- 197,203 ----
  		    ]
  		    (const_string "TI"))
  
! 	    (and (eq_attr "alternative" "13,14")
  	    	 (ior (match_test "<MODE>mode == V2SFmode")
  		      (not (match_test "TARGET_SSE2"))))
  	      (const_string "V2SF")
***************
*** 918,924 ****
    [(set (match_operand:MMXMODE24 0 "register_operand" "=y")
          (ashiftrt:MMXMODE24
  	  (match_operand:MMXMODE24 1 "register_operand" "0")
! 	  (match_operand:SI 2 "nonmemory_operand" "yN")))]
    "TARGET_MMX"
    "psra<mmxvecsize>\t{%2, %0|%0, %2}"
    [(set_attr "type" "mmxshft")
--- 918,924 ----
    [(set (match_operand:MMXMODE24 0 "register_operand" "=y")
          (ashiftrt:MMXMODE24
  	  (match_operand:MMXMODE24 1 "register_operand" "0")
! 	  (match_operand:DI 2 "nonmemory_operand" "yN")))]
    "TARGET_MMX"
    "psra<mmxvecsize>\t{%2, %0|%0, %2}"
    [(set_attr "type" "mmxshft")
***************
*** 932,938 ****
    [(set (match_operand:MMXMODE248 0 "register_operand" "=y")
          (any_lshift:MMXMODE248
  	  (match_operand:MMXMODE248 1 "register_operand" "0")
! 	  (match_operand:SI 2 "nonmemory_operand" "yN")))]
    "TARGET_MMX"
    "p<vshift><mmxvecsize>\t{%2, %0|%0, %2}"
    [(set_attr "type" "mmxshft")
--- 932,938 ----
    [(set (match_operand:MMXMODE248 0 "register_operand" "=y")
          (any_lshift:MMXMODE248
  	  (match_operand:MMXMODE248 1 "register_operand" "0")
! 	  (match_operand:DI 2 "nonmemory_operand" "yN")))]
    "TARGET_MMX"
    "p<vshift><mmxvecsize>\t{%2, %0|%0, %2}"
    [(set_attr "type" "mmxshft")
diff -Nrcpad gcc-5.4.0/gcc/config/i386/pcommitintrin.h gcc-5.5.0/gcc/config/i386/pcommitintrin.h
*** gcc-5.4.0/gcc/config/i386/pcommitintrin.h	Mon Jan  5 12:33:28 2015
--- gcc-5.5.0/gcc/config/i386/pcommitintrin.h	Thu Jan  1 00:00:00 1970
***************
*** 1,49 ****
- /* Copyright (C) 2013-2015 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.
- 
-    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/>.  */
- 
- #if !defined _X86INTRIN_H_INCLUDED
- # error "Never use <pcommitintrin.h> directly; include <x86intrin.h> instead."
- #endif
- 
- #ifndef _PCOMMITINTRIN_H_INCLUDED
- #define _PCOMMITINTRIN_H_INCLUDED
- 
- #ifndef __PCOMMIT__
- #pragma GCC push_options
- #pragma GCC target("pcommit")
- #define __DISABLE_PCOMMIT__
- #endif /* __PCOMMIT__ */
- 
- extern __inline void
- __attribute__((__gnu_inline__, __always_inline__, __artificial__))
- _mm_pcommit (void)
- {
-   __builtin_ia32_pcommit ();
- }
- 
- #ifdef __DISABLE_PCOMMIT__
- #undef __DISABLE_PCOMMIT__
- #pragma GCC pop_options
- #endif /* __DISABLE_PCOMMIT__ */
- 
- #endif /* _PCOMMITINTRIN_H_INCLUDED */
--- 0 ----
diff -Nrcpad gcc-5.4.0/gcc/config/i386/pmm_malloc.h gcc-5.5.0/gcc/config/i386/pmm_malloc.h
*** gcc-5.4.0/gcc/config/i386/pmm_malloc.h	Mon Jan  5 12:33:28 2015
--- gcc-5.5.0/gcc/config/i386/pmm_malloc.h	Thu Jun  1 21:51:51 2017
*************** extern "C" int posix_memalign (void **,
*** 35,57 ****
  #endif
  
  static __inline void *
! _mm_malloc (size_t size, size_t alignment)
  {
!   void *ptr;
!   if (alignment == 1)
!     return malloc (size);
!   if (alignment == 2 || (sizeof (void *) == 8 && alignment == 4))
!     alignment = sizeof (void *);
!   if (posix_memalign (&ptr, alignment, size) == 0)
!     return ptr;
    else
      return NULL;
  }
  
  static __inline void
! _mm_free (void * ptr)
  {
!   free (ptr);
  }
  
  #endif /* _MM_MALLOC_H_INCLUDED */
--- 35,57 ----
  #endif
  
  static __inline void *
! _mm_malloc (size_t __size, size_t __alignment)
  {
!   void *__ptr;
!   if (__alignment == 1)
!     return malloc (__size);
!   if (__alignment == 2 || (sizeof (void *) == 8 && __alignment == 4))
!     __alignment = sizeof (void *);
!   if (posix_memalign (&__ptr, __alignment, __size) == 0)
!     return __ptr;
    else
      return NULL;
  }
  
  static __inline void
! _mm_free (void *__ptr)
  {
!   free (__ptr);
  }
  
  #endif /* _MM_MALLOC_H_INCLUDED */
diff -Nrcpad gcc-5.4.0/gcc/config/i386/rdseedintrin.h gcc-5.5.0/gcc/config/i386/rdseedintrin.h
*** gcc-5.4.0/gcc/config/i386/rdseedintrin.h	Mon Jan  5 12:33:28 2015
--- gcc-5.5.0/gcc/config/i386/rdseedintrin.h	Thu Jun  1 21:51:51 2017
***************
*** 37,60 ****
  
  extern __inline int
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _rdseed16_step (unsigned short *p)
  {
!     return __builtin_ia32_rdseed_hi_step (p);
  }
  
  extern __inline int
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _rdseed32_step (unsigned int *p)
  {
!     return __builtin_ia32_rdseed_si_step (p);
  }
  
  #ifdef __x86_64__
  extern __inline int
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _rdseed64_step (unsigned long long *p)
  {
!     return __builtin_ia32_rdseed_di_step (p);
  }
  #endif
  
--- 37,60 ----
  
  extern __inline int
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _rdseed16_step (unsigned short *__p)
  {
!     return __builtin_ia32_rdseed_hi_step (__p);
  }
  
  extern __inline int
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _rdseed32_step (unsigned int *__p)
  {
!     return __builtin_ia32_rdseed_si_step (__p);
  }
  
  #ifdef __x86_64__
  extern __inline int
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _rdseed64_step (unsigned long long *__p)
  {
!     return __builtin_ia32_rdseed_di_step (__p);
  }
  #endif
  
diff -Nrcpad gcc-5.4.0/gcc/config/i386/rtmintrin.h gcc-5.5.0/gcc/config/i386/rtmintrin.h
*** gcc-5.4.0/gcc/config/i386/rtmintrin.h	Mon Jan  5 12:33:28 2015
--- gcc-5.5.0/gcc/config/i386/rtmintrin.h	Thu Jun  1 21:51:51 2017
*************** _xend (void)
*** 68,76 ****
  #ifdef __OPTIMIZE__
  extern __inline void
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _xabort (const unsigned int imm)
  {
!   __builtin_ia32_xabort (imm);
  }
  #else
  #define _xabort(N)  __builtin_ia32_xabort (N)
--- 68,76 ----
  #ifdef __OPTIMIZE__
  extern __inline void
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _xabort (const unsigned int __imm)
  {
!   __builtin_ia32_xabort (__imm);
  }
  #else
  #define _xabort(N)  __builtin_ia32_xabort (N)
diff -Nrcpad gcc-5.4.0/gcc/config/i386/sse.md gcc-5.5.0/gcc/config/i386/sse.md
*** gcc-5.4.0/gcc/config/i386/sse.md	Fri Apr 15 15:13:42 2016
--- gcc-5.5.0/gcc/config/i386/sse.md	Tue May 30 08:23:29 2017
***************
*** 4494,4500 ****
  (define_insn "<floatsuffix>float<sseintvecmodelower><mode>2<mask_name><round_name>"
    [(set (match_operand:VF2_AVX512VL 0 "register_operand" "=v")
  	(any_float:VF2_AVX512VL
! 	  (match_operand:<sseintvecmode> 1 "nonimmediate_operand" "vm")))]
    "TARGET_AVX512DQ"
    "vcvt<floatsuffix>qq2pd\t{<round_mask_op2>%1, %0<mask_operand2>|%0<mask_operand2>, %1<round_mask_op2>}"
    [(set_attr "type" "ssecvt")
--- 4494,4500 ----
  (define_insn "<floatsuffix>float<sseintvecmodelower><mode>2<mask_name><round_name>"
    [(set (match_operand:VF2_AVX512VL 0 "register_operand" "=v")
  	(any_float:VF2_AVX512VL
! 	  (match_operand:<sseintvecmode> 1 "nonimmediate_operand" "<round_constraint>")))]
    "TARGET_AVX512DQ"
    "vcvt<floatsuffix>qq2pd\t{<round_mask_op2>%1, %0<mask_operand2>|%0<mask_operand2>, %1<round_mask_op2>}"
    [(set_attr "type" "ssecvt")
***************
*** 9936,9942 ****
    [(set (match_operand:VI24_AVX2 0 "register_operand" "=x,x")
  	(ashiftrt:VI24_AVX2
  	  (match_operand:VI24_AVX2 1 "register_operand" "0,x")
! 	  (match_operand:SI 2 "nonmemory_operand" "xN,xN")))]
    "TARGET_SSE2"
    "@
     psra<ssemodesuffix>\t{%2, %0|%0, %2}
--- 9936,9942 ----
    [(set (match_operand:VI24_AVX2 0 "register_operand" "=x,x")
  	(ashiftrt:VI24_AVX2
  	  (match_operand:VI24_AVX2 1 "register_operand" "0,x")
! 	  (match_operand:DI 2 "nonmemory_operand" "xN,xN")))]
    "TARGET_SSE2"
    "@
     psra<ssemodesuffix>\t{%2, %0|%0, %2}
***************
*** 9955,9961 ****
    [(set (match_operand:VI24_AVX512BW_1 0 "register_operand" "=v,v")
  	(ashiftrt:VI24_AVX512BW_1
  	  (match_operand:VI24_AVX512BW_1 1 "nonimmediate_operand" "v,vm")
! 	  (match_operand:SI 2 "nonmemory_operand" "v,N")))]
    "TARGET_AVX512VL"
    "vpsra<ssemodesuffix>\t{%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2}"
    [(set_attr "type" "sseishft")
--- 9955,9961 ----
    [(set (match_operand:VI24_AVX512BW_1 0 "register_operand" "=v,v")
  	(ashiftrt:VI24_AVX512BW_1
  	  (match_operand:VI24_AVX512BW_1 1 "nonimmediate_operand" "v,vm")
! 	  (match_operand:DI 2 "nonmemory_operand" "v,N")))]
    "TARGET_AVX512VL"
    "vpsra<ssemodesuffix>\t{%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2}"
    [(set_attr "type" "sseishft")
***************
*** 9983,9989 ****
    [(set (match_operand:VI248_AVX512BW_AVX512VL 0 "register_operand" "=v,v")
  	(ashiftrt:VI248_AVX512BW_AVX512VL
  	  (match_operand:VI248_AVX512BW_AVX512VL 1 "nonimmediate_operand" "v,vm")
! 	  (match_operand:SI 2 "nonmemory_operand" "v,N")))]
    "TARGET_AVX512F"
    "vpsra<ssemodesuffix>\t{%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2}"
    [(set_attr "type" "sseishft")
--- 9983,9989 ----
    [(set (match_operand:VI248_AVX512BW_AVX512VL 0 "register_operand" "=v,v")
  	(ashiftrt:VI248_AVX512BW_AVX512VL
  	  (match_operand:VI248_AVX512BW_AVX512VL 1 "nonimmediate_operand" "v,vm")
! 	  (match_operand:DI 2 "nonmemory_operand" "v,N")))]
    "TARGET_AVX512F"
    "vpsra<ssemodesuffix>\t{%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2}"
    [(set_attr "type" "sseishft")
***************
*** 9997,10003 ****
    [(set (match_operand:VI2_AVX2_AVX512BW 0 "register_operand" "=x,v")
  	(any_lshift:VI2_AVX2_AVX512BW
  	  (match_operand:VI2_AVX2_AVX512BW 1 "register_operand" "0,v")
! 	  (match_operand:SI 2 "nonmemory_operand" "xN,vN")))]
    "TARGET_SSE2 && <mask_mode512bit_condition> && <mask_avx512bw_condition>"
    "@
     p<vshift><ssemodesuffix>\t{%2, %0|%0, %2}
--- 9997,10003 ----
    [(set (match_operand:VI2_AVX2_AVX512BW 0 "register_operand" "=x,v")
  	(any_lshift:VI2_AVX2_AVX512BW
  	  (match_operand:VI2_AVX2_AVX512BW 1 "register_operand" "0,v")
! 	  (match_operand:DI 2 "nonmemory_operand" "xN,vN")))]
    "TARGET_SSE2 && <mask_mode512bit_condition> && <mask_avx512bw_condition>"
    "@
     p<vshift><ssemodesuffix>\t{%2, %0|%0, %2}
***************
*** 10016,10022 ****
    [(set (match_operand:VI48_AVX2 0 "register_operand" "=x,v")
  	(any_lshift:VI48_AVX2
  	  (match_operand:VI48_AVX2 1 "register_operand" "0,v")
! 	  (match_operand:SI 2 "nonmemory_operand" "xN,vN")))]
    "TARGET_SSE2 && <mask_mode512bit_condition>"
    "@
     p<vshift><ssemodesuffix>\t{%2, %0|%0, %2}
--- 10016,10022 ----
    [(set (match_operand:VI48_AVX2 0 "register_operand" "=x,v")
  	(any_lshift:VI48_AVX2
  	  (match_operand:VI48_AVX2 1 "register_operand" "0,v")
! 	  (match_operand:DI 2 "nonmemory_operand" "xN,vN")))]
    "TARGET_SSE2 && <mask_mode512bit_condition>"
    "@
     p<vshift><ssemodesuffix>\t{%2, %0|%0, %2}
***************
*** 10035,10041 ****
    [(set (match_operand:VI48_512 0 "register_operand" "=v,v")
  	(any_lshift:VI48_512
  	  (match_operand:VI48_512 1 "nonimmediate_operand" "v,m")
! 	  (match_operand:SI 2 "nonmemory_operand" "vN,N")))]
    "TARGET_AVX512F && <mask_mode512bit_condition>"
    "vp<vshift><ssemodesuffix>\t{%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2}"
    [(set_attr "isa" "avx512f")
--- 10035,10041 ----
    [(set (match_operand:VI48_512 0 "register_operand" "=v,v")
  	(any_lshift:VI48_512
  	  (match_operand:VI48_512 1 "nonimmediate_operand" "v,m")
! 	  (match_operand:DI 2 "nonmemory_operand" "vN,N")))]
    "TARGET_AVX512F && <mask_mode512bit_condition>"
    "vp<vshift><ssemodesuffix>\t{%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2}"
    [(set_attr "isa" "avx512f")
***************
*** 10178,10184 ****
    "TARGET_AVX512F"
    "ix86_fixup_binary_operands_no_copy (<CODE>, <MODE>mode, operands);")
  
! (define_insn "*avx512bw_<code><mode>3<mask_name>"
    [(set (match_operand:VI48_AVX512VL 0 "register_operand" "=v")
  	(maxmin:VI48_AVX512VL
  	  (match_operand:VI48_AVX512VL 1 "nonimmediate_operand" "%v")
--- 10178,10184 ----
    "TARGET_AVX512F"
    "ix86_fixup_binary_operands_no_copy (<CODE>, <MODE>mode, operands);")
  
! (define_insn "*avx512f_<code><mode>3<mask_name>"
    [(set (match_operand:VI48_AVX512VL 0 "register_operand" "=v")
  	(maxmin:VI48_AVX512VL
  	  (match_operand:VI48_AVX512VL 1 "nonimmediate_operand" "%v")
***************
*** 10202,10211 ****
     (set_attr "mode" "<sseinsnmode>")])
  
  (define_expand "<code><mode>3"
!   [(set (match_operand:VI8_AVX2_AVX512BW 0 "register_operand")
! 	(maxmin:VI8_AVX2_AVX512BW
! 	  (match_operand:VI8_AVX2_AVX512BW 1 "register_operand")
! 	  (match_operand:VI8_AVX2_AVX512BW 2 "register_operand")))]
    "TARGET_SSE4_2"
  {
    if (TARGET_AVX512F
--- 10202,10211 ----
     (set_attr "mode" "<sseinsnmode>")])
  
  (define_expand "<code><mode>3"
!   [(set (match_operand:VI8_AVX2_AVX512F 0 "register_operand")
! 	(maxmin:VI8_AVX2_AVX512F
! 	  (match_operand:VI8_AVX2_AVX512F 1 "register_operand")
! 	  (match_operand:VI8_AVX2_AVX512F 2 "register_operand")))]
    "TARGET_SSE4_2"
  {
    if (TARGET_AVX512F
***************
*** 10979,10985 ****
        gcc_assert (TARGET_AVX);
     case MODE_V4SF:
        gcc_assert (TARGET_SSE);
-       gcc_assert (!<mask_applied>);
        tmp = "<logic>ps";
        break;
  
--- 10979,10984 ----
***************
*** 11866,11872 ****
  		       (const_int 12) (const_int 13)
  		       (const_int 14) (const_int 15)]))))]
    "TARGET_AVX512DQ"
!   "vinsert<shuffletype>32x8\t{$0x0, %2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2, $0x0}"
    [(set_attr "type" "sselog")
     (set_attr "length_immediate" "1")
     (set_attr "prefix" "evex")
--- 11865,11871 ----
  		       (const_int 12) (const_int 13)
  		       (const_int 14) (const_int 15)]))))]
    "TARGET_AVX512DQ"
!   "vinsert<shuffletype>32x8\t{$0x0, %2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2, 0x0}"
    [(set_attr "type" "sselog")
     (set_attr "length_immediate" "1")
     (set_attr "prefix" "evex")
***************
*** 11883,11889 ****
  		       (const_int 6) (const_int 7)]))
  	  (match_operand:<ssehalfvecmode> 2 "nonimmediate_operand" "vm")))]
    "TARGET_AVX512DQ"
!   "vinsert<shuffletype>32x8\t{$0x1, %2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2, $0x1}"
    [(set_attr "type" "sselog")
     (set_attr "length_immediate" "1")
     (set_attr "prefix" "evex")
--- 11882,11888 ----
  		       (const_int 6) (const_int 7)]))
  	  (match_operand:<ssehalfvecmode> 2 "nonimmediate_operand" "vm")))]
    "TARGET_AVX512DQ"
!   "vinsert<shuffletype>32x8\t{$0x1, %2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2, 0x1}"
    [(set_attr "type" "sselog")
     (set_attr "length_immediate" "1")
     (set_attr "prefix" "evex")
***************
*** 11898,11904 ****
  	    (parallel [(const_int 4) (const_int 5)
  		       (const_int 6) (const_int 7)]))))]
    "TARGET_AVX512F"
!   "vinsert<shuffletype>64x4\t{$0x0, %2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2, $0x0}"
    [(set_attr "type" "sselog")
     (set_attr "length_immediate" "1")
     (set_attr "prefix" "evex")
--- 11897,11903 ----
  	    (parallel [(const_int 4) (const_int 5)
  		       (const_int 6) (const_int 7)]))))]
    "TARGET_AVX512F"
!   "vinsert<shuffletype>64x4\t{$0x0, %2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2, 0x0}"
    [(set_attr "type" "sselog")
     (set_attr "length_immediate" "1")
     (set_attr "prefix" "evex")
***************
*** 11913,11919 ****
  		       (const_int 2) (const_int 3)]))
  	  (match_operand:<ssehalfvecmode> 2 "nonimmediate_operand" "vm")))]
    "TARGET_AVX512F"
!   "vinsert<shuffletype>64x4\t{$0x1, %2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2, $0x1}"
    [(set_attr "type" "sselog")
     (set_attr "length_immediate" "1")
     (set_attr "prefix" "evex")
--- 11912,11918 ----
  		       (const_int 2) (const_int 3)]))
  	  (match_operand:<ssehalfvecmode> 2 "nonimmediate_operand" "vm")))]
    "TARGET_AVX512F"
!   "vinsert<shuffletype>64x4\t{$0x1, %2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2, 0x1}"
    [(set_attr "type" "sselog")
     (set_attr "length_immediate" "1")
     (set_attr "prefix" "evex")
***************
*** 13060,13069 ****
  ;; movd instead of movq is required to handle broken assemblers.
  (define_insn "vec_concatv2di"
    [(set (match_operand:V2DI 0 "register_operand"
! 	  "=Yr,*x,x ,Yi,x ,!x,x,x,x,x,x")
  	(vec_concat:V2DI
  	  (match_operand:DI 1 "nonimmediate_operand"
! 	  "  0, 0,x ,r ,xm,*y,0,x,0,0,x")
  	  (match_operand:DI 2 "vector_move_operand"
  	  "*rm,rm,rm,C ,C ,C ,x,x,x,m,m")))]
    "TARGET_SSE"
--- 13059,13068 ----
  ;; movd instead of movq is required to handle broken assemblers.
  (define_insn "vec_concatv2di"
    [(set (match_operand:V2DI 0 "register_operand"
! 	  "=Yr,*x,x ,Yi,x ,x    ,x,x,x,x,x")
  	(vec_concat:V2DI
  	  (match_operand:DI 1 "nonimmediate_operand"
! 	  "  0, 0,x ,r ,xm,?!*Yn,0,x,0,0,x")
  	  (match_operand:DI 2 "vector_move_operand"
  	  "*rm,rm,rm,C ,C ,C ,x,x,x,m,m")))]
    "TARGET_SSE"
diff -Nrcpad gcc-5.4.0/gcc/config/i386/stringop.opt gcc-5.5.0/gcc/config/i386/stringop.opt
*** gcc-5.4.0/gcc/config/i386/stringop.opt	Mon Jan  5 12:33:28 2015
--- gcc-5.5.0/gcc/config/i386/stringop.opt	Thu Jan  1 00:00:00 1970
***************
*** 1,31 ****
- /* Definitions for stringop option handling for IA-32.
-    Copyright (C) 2013-2015 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 files COPYING3.  If not,
- see <http://www.gnu.org/licenses/>.  */
- 
- Enum(stringop_alg) String(rep_byte) Value(rep_prefix_1_byte)
- 
- #undef DEF_ENUM
- #define DEF_ENUM EnumValue
- 
- #undef DEF_ALG
- #define DEF_ALG(alg, name) Enum(stringop_alg) String(name) Value(alg)
- 
- #include "stringop.def"
- 
- #undef DEF_ENUM
- #undef DEF_ALG
--- 0 ----
diff -Nrcpad gcc-5.4.0/gcc/config/i386/x86-64.h gcc-5.5.0/gcc/config/i386/x86-64.h
*** gcc-5.4.0/gcc/config/i386/x86-64.h	Mon Jan  5 12:33:28 2015
--- gcc-5.5.0/gcc/config/i386/x86-64.h	Sat Feb 18 22:58:48 2017
*************** see the files COPYING3 and COPYING.RUNTI
*** 49,55 ****
  #define WCHAR_TYPE_SIZE 32
  
  #undef ASM_SPEC
! #define ASM_SPEC "%{m32:--32} %{m64:--64} %{mx32:--x32}"
  
  #undef ASM_OUTPUT_ALIGNED_BSS
  #define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
--- 49,55 ----
  #define WCHAR_TYPE_SIZE 32
  
  #undef ASM_SPEC
! #define ASM_SPEC "%{m16|m32:--32} %{m64:--64} %{mx32:--x32}"
  
  #undef ASM_OUTPUT_ALIGNED_BSS
  #define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
diff -Nrcpad gcc-5.4.0/gcc/config/i386/x86intrin.h gcc-5.5.0/gcc/config/i386/x86intrin.h
*** gcc-5.4.0/gcc/config/i386/x86intrin.h	Thu Jun 18 10:56:43 2015
--- gcc-5.5.0/gcc/config/i386/x86intrin.h	Thu Oct 13 21:19:00 2016
***************
*** 77,84 ****
  
  #include <clwbintrin.h>
  
- #include <pcommitintrin.h>
- 
  #include <clflushoptintrin.h>
  
  #include <xsavesintrin.h>
--- 77,82 ----
diff -Nrcpad gcc-5.4.0/gcc/config/nds32/nds32.md gcc-5.5.0/gcc/config/nds32/nds32.md
*** gcc-5.4.0/gcc/config/nds32/nds32.md	Fri Jan 16 06:45:09 2015
--- gcc-5.5.0/gcc/config/nds32/nds32.md	Tue Jan 10 04:23:35 2017
*************** create_template:
*** 2289,2299 ****
    emit_jump_insn (gen_cbranchsi4 (test, operands[0], operands[2],
  				  operands[4]));
  
!   operands[5] = gen_reg_rtx (SImode);
!   /* Step C, D, E, and F, using another temporary register operands[5].  */
!   emit_jump_insn (gen_casesi_internal (operands[0],
! 				       operands[3],
! 				       operands[5]));
    DONE;
  })
  
--- 2289,2297 ----
    emit_jump_insn (gen_cbranchsi4 (test, operands[0], operands[2],
  				  operands[4]));
  
!   /* Step C, D, E, and F, using another temporary register.  */
!   rtx tmp = gen_reg_rtx (SImode);
!   emit_jump_insn (gen_casesi_internal (operands[0], operands[3], tmp));
    DONE;
  })
  
diff -Nrcpad gcc-5.4.0/gcc/config/pa/pa-64.h gcc-5.5.0/gcc/config/pa/pa-64.h
*** gcc-5.4.0/gcc/config/pa/pa-64.h	Mon Jan  5 12:33:28 2015
--- gcc-5.5.0/gcc/config/pa/pa-64.h	Mon Mar  6 22:55:33 2017
*************** along with GCC; see the file COPYING3.
*** 83,89 ****
     arguments are padded down when BYTES_BIG_ENDIAN is true.  We don't
     want aggregates padded down.  */
  
! #define PAD_VARARGS_DOWN (!AGGREGATE_TYPE_P (type))
  
  /* In the PA architecture, it is not possible to directly move data
     between GENERAL_REGS and FP_REGS.  On the 32-bit port, we use the
--- 83,92 ----
     arguments are padded down when BYTES_BIG_ENDIAN is true.  We don't
     want aggregates padded down.  */
  
! #define PAD_VARARGS_DOWN \
!   (!AGGREGATE_TYPE_P (type) \
!    && TREE_CODE (type) != COMPLEX_TYPE \
!    && TREE_CODE (type) != VECTOR_TYPE)
  
  /* In the PA architecture, it is not possible to directly move data
     between GENERAL_REGS and FP_REGS.  On the 32-bit port, we use the
diff -Nrcpad gcc-5.4.0/gcc/config/pa/pa.h gcc-5.5.0/gcc/config/pa/pa.h
*** gcc-5.4.0/gcc/config/pa/pa.h	Mon Jan  5 12:33:28 2015
--- gcc-5.5.0/gcc/config/pa/pa.h	Sat Oct 29 15:47:41 2016
*************** typedef struct GTY(()) machine_function
*** 298,306 ****
  /* A bit-field declared as `int' forces `int' alignment for the struct.  */
  #define PCC_BITFIELD_TYPE_MATTERS 1
  
! /* No data type wants to be aligned rounder than this.  */
  #define BIGGEST_ALIGNMENT (2 * BITS_PER_WORD)
  
  /* Get around hp-ux assembler bug, and make strcpy of constants fast.  */
  #define CONSTANT_ALIGNMENT(EXP, ALIGN)		\
    (TREE_CODE (EXP) == STRING_CST		\
--- 298,320 ----
  /* A bit-field declared as `int' forces `int' alignment for the struct.  */
  #define PCC_BITFIELD_TYPE_MATTERS 1
  
! /* No data type wants to be aligned rounder than this.  The long double
!    type has 16-byte alignment on the 64-bit target even though it was never
!    implemented in hardware.  The software implementation only needs 8-byte
!    alignment.  This matches the biggest alignment of the HP compilers.  */
  #define BIGGEST_ALIGNMENT (2 * BITS_PER_WORD)
  
+ /* Alignment, in bits, a C conformant malloc implementation has to provide.
+    The HP-UX malloc implementation provides a default alignment of 8 bytes.
+    It should be 16 bytes on the 64-bit target since long double has 16-byte
+    alignment.  It can be increased with mallopt but it's non critical since
+    long double was never implemented in hardware.  The glibc implementation
+    currently provides 8-byte alignment.  It should be 16 bytes since various
+    POSIX types such as pthread_mutex_t require 16-byte alignment.  Again,
+    this is non critical since 16-byte alignment is no longer needed for
+    atomic operations.  */
+ #define MALLOC_ABI_ALIGNMENT (TARGET_SOM ? 64 : 128)
+ 
  /* Get around hp-ux assembler bug, and make strcpy of constants fast.  */
  #define CONSTANT_ALIGNMENT(EXP, ALIGN)		\
    (TREE_CODE (EXP) == STRING_CST		\
diff -Nrcpad gcc-5.4.0/gcc/config/phoenix.h gcc-5.5.0/gcc/config/phoenix.h
*** gcc-5.4.0/gcc/config/phoenix.h	Thu Jan  1 00:00:00 1970
--- gcc-5.5.0/gcc/config/phoenix.h	Wed Aug 31 09:38:42 2016
***************
*** 0 ****
--- 1,33 ----
+ /* Base configuration file for all Phoenix-RTOS targets.
+    Copyright (C) 2016 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/>.  */
+ 
+ #undef TARGET_OS_CPP_BUILTINS
+ #define TARGET_OS_CPP_BUILTINS()           \
+     do {                                   \
+       builtin_define_std ("phoenix");      \
+       builtin_define_std ("unix");         \
+       builtin_assert ("system=phoenix");   \
+       builtin_assert ("system=unix");      \
+     } while(0);
+ 
+ #define STD_LIB_SPEC "%{!shared:%{g*:-lg} %{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p}}"
+ 
+ /* This will prevent selecting 'unsigned long int' instead of 'unsigned int' as 'uint32_t' in stdint-newlib.h. */
+ #undef STDINT_LONG32
+ #define STDINT_LONG32		0
diff -Nrcpad gcc-5.4.0/gcc/config/rl78/rl78-expand.md gcc-5.5.0/gcc/config/rl78/rl78-expand.md
*** gcc-5.4.0/gcc/config/rl78/rl78-expand.md	Tue Feb 24 21:52:19 2015
--- gcc-5.5.0/gcc/config/rl78/rl78-expand.md	Thu Aug 18 12:14:33 2016
***************
*** 159,165 ****
    [(set (match_operand:HI 0 "register_operand")
          (mult:HI (zero_extend:HI (match_operand:QI 1 "register_operand"))
                   (zero_extend:HI (match_operand:QI 2 "register_operand"))))]
!   "!TARGET_G10"
    ""
  )
  
--- 159,165 ----
    [(set (match_operand:HI 0 "register_operand")
          (mult:HI (zero_extend:HI (match_operand:QI 1 "register_operand"))
                   (zero_extend:HI (match_operand:QI 2 "register_operand"))))]
!   ""
    ""
  )
  
diff -Nrcpad gcc-5.4.0/gcc/config/rl78/rl78-real.md gcc-5.5.0/gcc/config/rl78/rl78-real.md
*** gcc-5.4.0/gcc/config/rl78/rl78-real.md	Wed Mar  4 14:54:15 2015
--- gcc-5.5.0/gcc/config/rl78/rl78-real.md	Thu Aug 18 12:14:33 2016
***************
*** 179,185 ****
    [(set (match_operand:HI 0 "register_operand" "=A,A")
          (mult:HI (match_operand:HI 1 "rl78_nonfar_operand" "0,0")
                   (match_operand:HI 2 "rl78_24_operand" "N,i")))]
!   "rl78_real_insns_ok () && !TARGET_G10"
    "@
     shlw\t%0, 1
     shlw\t%0, 2"
--- 179,185 ----
    [(set (match_operand:HI 0 "register_operand" "=A,A")
          (mult:HI (match_operand:HI 1 "rl78_nonfar_operand" "0,0")
                   (match_operand:HI 2 "rl78_24_operand" "N,i")))]
!   "rl78_real_insns_ok ()"
    "@
     shlw\t%0, 1
     shlw\t%0, 2"
***************
*** 189,195 ****
    [(set (match_operand:HI 0 "nonimmediate_operand" "=A")
          (mult:HI (zero_extend:HI (match_operand:QI 1 "general_operand" "%a"))
                   (zero_extend:HI (match_operand:QI 2 "general_operand" "x"))))]
!   "rl78_real_insns_ok () && !TARGET_G10"
    "mulu\t%2"
  )
  
--- 189,195 ----
    [(set (match_operand:HI 0 "nonimmediate_operand" "=A")
          (mult:HI (zero_extend:HI (match_operand:QI 1 "general_operand" "%a"))
                   (zero_extend:HI (match_operand:QI 2 "general_operand" "x"))))]
!   "rl78_real_insns_ok ()"
    "mulu\t%2"
  )
  
diff -Nrcpad gcc-5.4.0/gcc/config/rl78/rl78-virt.md gcc-5.5.0/gcc/config/rl78/rl78-virt.md
*** gcc-5.4.0/gcc/config/rl78/rl78-virt.md	Thu Mar 19 04:00:51 2015
--- gcc-5.5.0/gcc/config/rl78/rl78-virt.md	Thu Aug 18 12:14:33 2016
***************
*** 116,122 ****
    [(set (match_operand:HI 0 "register_operand" "=vm")
          (mult:HI (match_operand:HI 1 "rl78_nonfar_operand" "%vim")
                   (match_operand:HI 2 "rl78_24_operand" "Ni")))]
!   "rl78_virt_insns_ok () && !TARGET_G10"
    "v.mulu\t%0, %1, %2"
    [(set_attr "valloc" "umul")]
  )
--- 116,122 ----
    [(set (match_operand:HI 0 "register_operand" "=vm")
          (mult:HI (match_operand:HI 1 "rl78_nonfar_operand" "%vim")
                   (match_operand:HI 2 "rl78_24_operand" "Ni")))]
!   "rl78_virt_insns_ok ()"
    "v.mulu\t%0, %1, %2"
    [(set_attr "valloc" "umul")]
  )
***************
*** 125,131 ****
    [(set (match_operand:HI 0 "register_operand" "=vm")
          (mult:HI (zero_extend:HI (match_operand:QI 1 "rl78_nonfar_operand" "%vim"))
                   (zero_extend:HI (match_operand:QI 2 "general_operand" "vim"))))]
!   "rl78_virt_insns_ok () && !TARGET_G10"
    "v.mulu\t%0, %2"
    [(set_attr "valloc" "umul")]
  )
--- 125,131 ----
    [(set (match_operand:HI 0 "register_operand" "=vm")
          (mult:HI (zero_extend:HI (match_operand:QI 1 "rl78_nonfar_operand" "%vim"))
                   (zero_extend:HI (match_operand:QI 2 "general_operand" "vim"))))]
!   "rl78_virt_insns_ok ()"
    "v.mulu\t%0, %2"
    [(set_attr "valloc" "umul")]
  )
diff -Nrcpad gcc-5.4.0/gcc/config/rs6000/altivec.md gcc-5.5.0/gcc/config/rs6000/altivec.md
*** gcc-5.4.0/gcc/config/rs6000/altivec.md	Wed Feb 17 17:49:22 2016
--- gcc-5.5.0/gcc/config/rs6000/altivec.md	Tue Sep 12 21:07:30 2017
***************
*** 1628,1678 ****
    "vsum4s<VI_char>s %0,%1,%2"
    [(set_attr "type" "veccomplex")])
  
! ;; FIXME: For the following two patterns, the scratch should only be
! ;; allocated for !VECTOR_ELT_ORDER_BIG, and the instructions should
! ;; be emitted separately.
! (define_insn "altivec_vsum2sws"
!   [(set (match_operand:V4SI 0 "register_operand" "=v")
!         (unspec:V4SI [(match_operand:V4SI 1 "register_operand" "v")
!                       (match_operand:V4SI 2 "register_operand" "v")]
! 		     UNSPEC_VSUM2SWS))
!    (set (reg:SI 110) (unspec:SI [(const_int 0)] UNSPEC_SET_VSCR))
!    (clobber (match_scratch:V4SI 3 "=v"))]
    "TARGET_ALTIVEC"
  {
    if (VECTOR_ELT_ORDER_BIG)
!     return "vsum2sws %0,%1,%2";
    else
!     return "vsldoi %3,%2,%2,12\n\tvsum2sws %3,%1,%3\n\tvsldoi %0,%3,%3,4";
! }
!   [(set_attr "type" "veccomplex")
!    (set (attr "length")
!      (if_then_else
!        (match_test "VECTOR_ELT_ORDER_BIG")
!        (const_string "4")
!        (const_string "12")))])
  
! (define_insn "altivec_vsumsws"
    [(set (match_operand:V4SI 0 "register_operand" "=v")
          (unspec:V4SI [(match_operand:V4SI 1 "register_operand" "v")
!                       (match_operand:V4SI 2 "register_operand" "v")]
! 		     UNSPEC_VSUMSWS))
!    (set (reg:SI 110) (unspec:SI [(const_int 0)] UNSPEC_SET_VSCR))
!    (clobber (match_scratch:V4SI 3 "=v"))]
    "TARGET_ALTIVEC"
  {
    if (VECTOR_ELT_ORDER_BIG)
!     return "vsumsws %0,%1,%2";
    else
!     return "vspltw %3,%2,0\n\tvsumsws %3,%1,%3\n\tvsldoi %0,%3,%3,12";
! }
!   [(set_attr "type" "veccomplex")
!    (set (attr "length")
!      (if_then_else
!        (match_test "(VECTOR_ELT_ORDER_BIG)")
!        (const_string "4")
!        (const_string "12")))])
  
  (define_insn "altivec_vsumsws_direct"
    [(set (match_operand:V4SI 0 "register_operand" "=v")
          (unspec:V4SI [(match_operand:V4SI 1 "register_operand" "v")
--- 1628,1688 ----
    "vsum4s<VI_char>s %0,%1,%2"
    [(set_attr "type" "veccomplex")])
  
! (define_expand "altivec_vsum2sws"
!   [(use (match_operand:V4SI 0 "register_operand"))
!    (use (match_operand:V4SI 1 "register_operand"))
!    (use (match_operand:V4SI 2 "register_operand"))]
    "TARGET_ALTIVEC"
  {
    if (VECTOR_ELT_ORDER_BIG)
!     emit_insn (gen_altivec_vsum2sws_direct (operands[0], operands[1],
!                                             operands[2]));
    else
!     {
!       rtx tmp1 = gen_reg_rtx (V4SImode);
!       rtx tmp2 = gen_reg_rtx (V4SImode);
!       emit_insn (gen_altivec_vsldoi_v4si (tmp1, operands[2],
!                                           operands[2], GEN_INT (12)));
!       emit_insn (gen_altivec_vsum2sws_direct (tmp2, operands[1], tmp1));
!       emit_insn (gen_altivec_vsldoi_v4si (operands[0], tmp2, tmp2,
!                                           GEN_INT (4)));
!     }
!   DONE;
! })
  
! ; FIXME: This can probably be expressed without an UNSPEC.
! (define_insn "altivec_vsum2sws_direct"
    [(set (match_operand:V4SI 0 "register_operand" "=v")
          (unspec:V4SI [(match_operand:V4SI 1 "register_operand" "v")
! 	              (match_operand:V4SI 2 "register_operand" "v")]
! 		     UNSPEC_VSUM2SWS))
!    (set (reg:SI VSCR_REGNO) (unspec:SI [(const_int 0)] UNSPEC_SET_VSCR))]
!   "TARGET_ALTIVEC"
!   "vsum2sws %0,%1,%2"
!   [(set_attr "type" "veccomplex")])
! 
! (define_expand "altivec_vsumsws"
!   [(use (match_operand:V4SI 0 "register_operand"))
!    (use (match_operand:V4SI 1 "register_operand"))
!    (use (match_operand:V4SI 2 "register_operand"))]
    "TARGET_ALTIVEC"
  {
    if (VECTOR_ELT_ORDER_BIG)
!     emit_insn (gen_altivec_vsumsws_direct (operands[0], operands[1],
!                                            operands[2]));
    else
!     {
!       rtx tmp1 = gen_reg_rtx (V4SImode);
!       rtx tmp2 = gen_reg_rtx (V4SImode);
!       emit_insn (gen_altivec_vspltw_direct (tmp1, operands[2], const0_rtx));
!       emit_insn (gen_altivec_vsumsws_direct (tmp2, operands[1], tmp1));
!       emit_insn (gen_altivec_vsldoi_v4si (operands[0], tmp2, tmp2,
!                                           GEN_INT (12)));
!     }
!   DONE;
! })
  
+ ; FIXME: This can probably be expressed without an UNSPEC.
  (define_insn "altivec_vsumsws_direct"
    [(set (match_operand:V4SI 0 "register_operand" "=v")
          (unspec:V4SI [(match_operand:V4SI 1 "register_operand" "v")
diff -Nrcpad gcc-5.4.0/gcc/config/rs6000/dfp.md gcc-5.5.0/gcc/config/rs6000/dfp.md
*** gcc-5.4.0/gcc/config/rs6000/dfp.md	Mon Jan  5 12:33:28 2015
--- gcc-5.5.0/gcc/config/rs6000/dfp.md	Thu Mar 30 20:09:32 2017
***************
*** 344,359 ****
    [(set_attr "type" "fp")])
  
  (define_insn "dfp_dxex_<mode>"
!   [(set (match_operand:D64_D128 0 "gpc_reg_operand" "=d")
! 	(unspec:D64_D128 [(match_operand:D64_D128 1 "gpc_reg_operand" "d")]
! 			 UNSPEC_DXEX))]
    "TARGET_DFP"
    "dxex<dfp_suffix> %0,%1"
    [(set_attr "type" "fp")])
  
  (define_insn "dfp_diex_<mode>"
    [(set (match_operand:D64_D128 0 "gpc_reg_operand" "=d")
! 	(unspec:D64_D128 [(match_operand:D64_D128 1 "gpc_reg_operand" "d")
  			  (match_operand:D64_D128 2 "gpc_reg_operand" "d")]
  			 UNSPEC_DXEX))]
    "TARGET_DFP"
--- 344,359 ----
    [(set_attr "type" "fp")])
  
  (define_insn "dfp_dxex_<mode>"
!   [(set (match_operand:DI 0 "gpc_reg_operand" "=d")
! 	(unspec:DI [(match_operand:D64_D128 1 "gpc_reg_operand" "d")]
! 		   UNSPEC_DXEX))]
    "TARGET_DFP"
    "dxex<dfp_suffix> %0,%1"
    [(set_attr "type" "fp")])
  
  (define_insn "dfp_diex_<mode>"
    [(set (match_operand:D64_D128 0 "gpc_reg_operand" "=d")
! 	(unspec:D64_D128 [(match_operand:DI 1 "gpc_reg_operand" "d")
  			  (match_operand:D64_D128 2 "gpc_reg_operand" "d")]
  			 UNSPEC_DXEX))]
    "TARGET_DFP"
diff -Nrcpad gcc-5.4.0/gcc/config/rs6000/predicates.md gcc-5.5.0/gcc/config/rs6000/predicates.md
*** gcc-5.4.0/gcc/config/rs6000/predicates.md	Wed Mar 30 00:36:36 2016
--- gcc-5.5.0/gcc/config/rs6000/predicates.md	Fri Mar 10 20:53:18 2017
***************
*** 1049,1055 ****
    (and (match_code "symbol_ref")
         (match_test "(DEFAULT_ABI != ABI_AIX || SYMBOL_REF_FUNCTION_P (op))
  		    && (SYMBOL_REF_LOCAL_P (op)
! 			|| op == XEXP (DECL_RTL (current_function_decl), 0))
  		    && !((DEFAULT_ABI == ABI_AIX
  			  || DEFAULT_ABI == ABI_ELFv2)
  			 && (SYMBOL_REF_EXTERNAL_P (op)
--- 1049,1056 ----
    (and (match_code "symbol_ref")
         (match_test "(DEFAULT_ABI != ABI_AIX || SYMBOL_REF_FUNCTION_P (op))
  		    && (SYMBOL_REF_LOCAL_P (op)
! 			|| (op == XEXP (DECL_RTL (current_function_decl), 0)
! 			    && !decl_replaceable_p (current_function_decl)))
  		    && !((DEFAULT_ABI == ABI_AIX
  			  || DEFAULT_ABI == ABI_ELFv2)
  			 && (SYMBOL_REF_EXTERNAL_P (op)
diff -Nrcpad gcc-5.4.0/gcc/config/rs6000/rs6000-c.c gcc-5.5.0/gcc/config/rs6000/rs6000-c.c
*** gcc-5.4.0/gcc/config/rs6000/rs6000-c.c	Wed Mar 30 12:43:44 2016
--- gcc-5.5.0/gcc/config/rs6000/rs6000-c.c	Wed Mar  1 21:17:46 2017
*************** const struct altivec_builtin_types altiv
*** 2065,2078 ****
      RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
    { ALTIVEC_BUILTIN_VEC_PACKS, ALTIVEC_BUILTIN_VPKSWSS,
      RS6000_BTI_V8HI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 },
-   { ALTIVEC_BUILTIN_VEC_VPKSWSS, ALTIVEC_BUILTIN_VPKSWSS,
-     RS6000_BTI_V8HI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 },
-   { ALTIVEC_BUILTIN_VEC_VPKUWUS, ALTIVEC_BUILTIN_VPKUWUS,
-     RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
    { ALTIVEC_BUILTIN_VEC_PACKS, P8V_BUILTIN_VPKUDUS,
      RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
    { ALTIVEC_BUILTIN_VEC_PACKS, P8V_BUILTIN_VPKSDSS,
      RS6000_BTI_V4SI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0 },
    { ALTIVEC_BUILTIN_VEC_VPKSHSS, ALTIVEC_BUILTIN_VPKSHSS,
      RS6000_BTI_V16QI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 },
    { ALTIVEC_BUILTIN_VEC_VPKUHUS, ALTIVEC_BUILTIN_VPKUHUS,
--- 2065,2078 ----
      RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
    { ALTIVEC_BUILTIN_VEC_PACKS, ALTIVEC_BUILTIN_VPKSWSS,
      RS6000_BTI_V8HI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 },
    { ALTIVEC_BUILTIN_VEC_PACKS, P8V_BUILTIN_VPKUDUS,
      RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
    { ALTIVEC_BUILTIN_VEC_PACKS, P8V_BUILTIN_VPKSDSS,
      RS6000_BTI_V4SI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0 },
+   { ALTIVEC_BUILTIN_VEC_VPKSWSS, ALTIVEC_BUILTIN_VPKSWSS,
+     RS6000_BTI_V8HI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 },
+   { ALTIVEC_BUILTIN_VEC_VPKUWUS, ALTIVEC_BUILTIN_VPKUWUS,
+     RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
    { ALTIVEC_BUILTIN_VEC_VPKSHSS, ALTIVEC_BUILTIN_VPKSHSS,
      RS6000_BTI_V16QI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 },
    { ALTIVEC_BUILTIN_VEC_VPKUHUS, ALTIVEC_BUILTIN_VPKUHUS,
*************** const struct altivec_builtin_types altiv
*** 2343,2349 ****
      RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
    { ALTIVEC_BUILTIN_VEC_SRA, P8V_BUILTIN_VSRAD,
      RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
!   { ALTIVEC_BUILTIN_VEC_SRA, P8V_BUILTIN_VSRD,
      RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
    { ALTIVEC_BUILTIN_VEC_VSRAW, ALTIVEC_BUILTIN_VSRAW,
      RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
--- 2343,2349 ----
      RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
    { ALTIVEC_BUILTIN_VEC_SRA, P8V_BUILTIN_VSRAD,
      RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
!   { ALTIVEC_BUILTIN_VEC_SRA, P8V_BUILTIN_VSRAD,
      RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
    { ALTIVEC_BUILTIN_VEC_VSRAW, ALTIVEC_BUILTIN_VSRAW,
      RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
*************** const struct altivec_builtin_types altiv
*** 4158,4164 ****
  
    { P8V_BUILTIN_VEC_VSRAD, P8V_BUILTIN_VSRAD,
      RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
!   { P8V_BUILTIN_VEC_VSRAD, P8V_BUILTIN_VSRD,
      RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
  
    { P8V_BUILTIN_VEC_VSUBCUQ, P8V_BUILTIN_VSUBCUQ,
--- 4158,4164 ----
  
    { P8V_BUILTIN_VEC_VSRAD, P8V_BUILTIN_VSRAD,
      RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
!   { P8V_BUILTIN_VEC_VSRAD, P8V_BUILTIN_VSRAD,
      RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
  
    { P8V_BUILTIN_VEC_VSUBCUQ, P8V_BUILTIN_VSUBCUQ,
*************** const struct altivec_builtin_types altiv
*** 4196,4206 ****
    { P8V_BUILTIN_VEC_VUPKLSW, P8V_BUILTIN_VUPKLSW,
      RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V4SI, 0, 0 },
  
-   { P8V_BUILTIN_VEC_VGBBD, P8V_BUILTIN_VGBBD,
-     RS6000_BTI_V16QI, 0, 0, 0 },
-   { P8V_BUILTIN_VEC_VGBBD, P8V_BUILTIN_VGBBD,
-     RS6000_BTI_unsigned_V16QI, 0, 0, 0 },
- 
    /* Crypto builtins.  */
    { CRYPTO_BUILTIN_VPERMXOR, CRYPTO_BUILTIN_VPERMXOR_V16QI,
      RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI,
--- 4196,4201 ----
diff -Nrcpad gcc-5.4.0/gcc/config/rs6000/rs6000.c gcc-5.5.0/gcc/config/rs6000/rs6000.c
*** gcc-5.4.0/gcc/config/rs6000/rs6000.c	Wed Mar 30 12:35:50 2016
--- gcc-5.5.0/gcc/config/rs6000/rs6000.c	Thu Sep 21 13:25:45 2017
*************** rs6000_option_override_internal (bool gl
*** 3268,3273 ****
--- 3268,3280 ----
        && !global_options_set.x_flag_ira_loop_pressure)
      flag_ira_loop_pressure = 1;
  
+   /* -fsanitize=address needs to turn on -fasynchronous-unwind-tables in order
+      for tracebacks to be complete but not if any -fasynchronous-unwind-tables
+      options were already specified.  */
+   if (flag_sanitize & SANITIZE_USER_ADDRESS
+       && !global_options_set.x_flag_asynchronous_unwind_tables)
+     flag_asynchronous_unwind_tables = 1;
+ 
    /* Set the pointer size.  */
    if (TARGET_64BIT)
      {
*************** rs6000_file_start (void)
*** 5180,5187 ****
      }
  
  #ifdef USING_ELFOS_H
!   if (rs6000_default_cpu == 0 || rs6000_default_cpu[0] == '\0'
!       || !global_options_set.x_rs6000_cpu_index)
      {
        fputs ("\t.machine ", asm_out_file);
        if ((rs6000_isa_flags & OPTION_MASK_DIRECT_MOVE) != 0)
--- 5187,5194 ----
      }
  
  #ifdef USING_ELFOS_H
!   if (!(rs6000_default_cpu && rs6000_default_cpu[0])
!       && !global_options_set.x_rs6000_cpu_index)
      {
        fputs ("\t.machine ", asm_out_file);
        if ((rs6000_isa_flags & OPTION_MASK_DIRECT_MOVE) != 0)
*************** rs6000_gimplify_va_arg (tree valist, tre
*** 11518,11523 ****
--- 11525,11531 ----
  
    size = int_size_in_bytes (type);
    rsize = (size + 3) / 4;
+   int pad = 4 * rsize - size;
    align = 1;
  
    if (TARGET_HARD_FLOAT && TARGET_FPRS
*************** rs6000_gimplify_va_arg (tree valist, tre
*** 11605,11610 ****
--- 11613,11622 ----
  	  && TYPE_MODE (type) == SDmode)
  	t = fold_build_pointer_plus_hwi (t, size);
  
+       /* Args are right-aligned.  */
+       if (BYTES_BIG_ENDIAN)
+ 	t = fold_build_pointer_plus_hwi (t, pad);
+ 
        gimplify_assign (addr, t, pre_p);
  
        gimple_seq_add_stmt (pre_p, gimple_build_goto (lab_over));
*************** rs6000_gimplify_va_arg (tree valist, tre
*** 11630,11635 ****
--- 11642,11652 ----
        t = build2 (BIT_AND_EXPR, TREE_TYPE (t), t,
  		  build_int_cst (TREE_TYPE (t), -align));
      }
+ 
+   /* Args are right-aligned.  */
+   if (BYTES_BIG_ENDIAN)
+     t = fold_build_pointer_plus_hwi (t, pad);
+ 
    gimplify_expr (&t, pre_p, NULL, is_gimple_val, fb_rvalue);
  
    gimplify_assign (unshare_expr (addr), t, pre_p);
*************** rs6000_expand_unop_builtin (enum insn_co
*** 12168,12174 ****
  	  || INTVAL (op0) < -16)
  	{
  	  error ("argument 1 must be a 5-bit signed literal");
! 	  return const0_rtx;
  	}
      }
  
--- 12185,12191 ----
  	  || INTVAL (op0) < -16)
  	{
  	  error ("argument 1 must be a 5-bit signed literal");
! 	  return CONST0_RTX (tmode);
  	}
      }
  
*************** rs6000_expand_binop_builtin (enum insn_c
*** 12271,12277 ****
  	  || TREE_INT_CST_LOW (arg1) & ~0x1f)
  	{
  	  error ("argument 2 must be a 5-bit unsigned literal");
! 	  return const0_rtx;
  	}
      }
  
--- 12288,12294 ----
  	  || TREE_INT_CST_LOW (arg1) & ~0x1f)
  	{
  	  error ("argument 2 must be a 5-bit unsigned literal");
! 	  return CONST0_RTX (tmode);
  	}
      }
  
*************** rs6000_expand_ternop_builtin (enum insn_
*** 12950,12960 ****
  	  || TREE_INT_CST_LOW (arg2) & ~0xf)
  	{
  	  error ("argument 3 must be a 4-bit unsigned literal");
! 	  return const0_rtx;
  	}
      }
    else if (icode == CODE_FOR_vsx_xxpermdi_v2df
             || icode == CODE_FOR_vsx_xxpermdi_v2di
             || icode == CODE_FOR_vsx_xxsldwi_v16qi
             || icode == CODE_FOR_vsx_xxsldwi_v8hi
             || icode == CODE_FOR_vsx_xxsldwi_v4si
--- 12967,12984 ----
  	  || TREE_INT_CST_LOW (arg2) & ~0xf)
  	{
  	  error ("argument 3 must be a 4-bit unsigned literal");
! 	  return CONST0_RTX (tmode);
  	}
      }
    else if (icode == CODE_FOR_vsx_xxpermdi_v2df
             || icode == CODE_FOR_vsx_xxpermdi_v2di
+            || icode == CODE_FOR_vsx_xxpermdi_v2df_be
+            || icode == CODE_FOR_vsx_xxpermdi_v2di_be
+            || icode == CODE_FOR_vsx_xxpermdi_v1ti
+            || icode == CODE_FOR_vsx_xxpermdi_v4sf
+            || icode == CODE_FOR_vsx_xxpermdi_v4si
+            || icode == CODE_FOR_vsx_xxpermdi_v8hi
+            || icode == CODE_FOR_vsx_xxpermdi_v16qi
             || icode == CODE_FOR_vsx_xxsldwi_v16qi
             || icode == CODE_FOR_vsx_xxsldwi_v8hi
             || icode == CODE_FOR_vsx_xxsldwi_v4si
*************** rs6000_expand_ternop_builtin (enum insn_
*** 12968,12974 ****
  	  || TREE_INT_CST_LOW (arg2) & ~0x3)
  	{
  	  error ("argument 3 must be a 2-bit unsigned literal");
! 	  return const0_rtx;
  	}
      }
    else if (icode == CODE_FOR_vsx_set_v2df
--- 12992,12998 ----
  	  || TREE_INT_CST_LOW (arg2) & ~0x3)
  	{
  	  error ("argument 3 must be a 2-bit unsigned literal");
! 	  return CONST0_RTX (tmode);
  	}
      }
    else if (icode == CODE_FOR_vsx_set_v2df
*************** rs6000_expand_ternop_builtin (enum insn_
*** 12988,12994 ****
  	  || TREE_INT_CST_LOW (arg2) & ~0x1)
  	{
  	  error ("argument 3 must be a 1-bit unsigned literal");
! 	  return const0_rtx;
  	}
      }
    else if (icode == CODE_FOR_dfp_ddedpd_dd
--- 13012,13018 ----
  	  || TREE_INT_CST_LOW (arg2) & ~0x1)
  	{
  	  error ("argument 3 must be a 1-bit unsigned literal");
! 	  return CONST0_RTX (tmode);
  	}
      }
    else if (icode == CODE_FOR_dfp_ddedpd_dd
*************** rs6000_expand_ternop_builtin (enum insn_
*** 13000,13006 ****
  	  || TREE_INT_CST_LOW (arg2) & ~0x3)
  	{
  	  error ("argument 1 must be 0 or 2");
! 	  return const0_rtx;
  	}
      }
    else if (icode == CODE_FOR_dfp_denbcd_dd
--- 13024,13030 ----
  	  || TREE_INT_CST_LOW (arg2) & ~0x3)
  	{
  	  error ("argument 1 must be 0 or 2");
! 	  return CONST0_RTX (tmode);
  	}
      }
    else if (icode == CODE_FOR_dfp_denbcd_dd
*************** rs6000_expand_ternop_builtin (enum insn_
*** 13012,13018 ****
  	  || TREE_INT_CST_LOW (arg0) & ~0x1)
  	{
  	  error ("argument 1 must be a 1-bit unsigned literal");
! 	  return const0_rtx;
  	}
      }
    else if (icode == CODE_FOR_dfp_dscli_dd
--- 13036,13042 ----
  	  || TREE_INT_CST_LOW (arg0) & ~0x1)
  	{
  	  error ("argument 1 must be a 1-bit unsigned literal");
! 	  return CONST0_RTX (tmode);
  	}
      }
    else if (icode == CODE_FOR_dfp_dscli_dd
*************** rs6000_expand_ternop_builtin (enum insn_
*** 13026,13032 ****
  	  || TREE_INT_CST_LOW (arg1) & ~0x3f)
  	{
  	  error ("argument 2 must be a 6-bit unsigned literal");
! 	  return const0_rtx;
  	}
      }
    else if (icode == CODE_FOR_crypto_vshasigmaw
--- 13050,13056 ----
  	  || TREE_INT_CST_LOW (arg1) & ~0x3f)
  	{
  	  error ("argument 2 must be a 6-bit unsigned literal");
! 	  return CONST0_RTX (tmode);
  	}
      }
    else if (icode == CODE_FOR_crypto_vshasigmaw
*************** rs6000_expand_ternop_builtin (enum insn_
*** 13038,13051 ****
        if (TREE_CODE (arg1) != INTEGER_CST || wi::geu_p (arg1, 2))
  	{
  	  error ("argument 2 must be 0 or 1");
! 	  return const0_rtx;
  	}
  
        STRIP_NOPS (arg2);
!       if (TREE_CODE (arg2) != INTEGER_CST || wi::geu_p (arg1, 16))
  	{
  	  error ("argument 3 must be in the range 0..15");
! 	  return const0_rtx;
  	}
      }
  
--- 13062,13075 ----
        if (TREE_CODE (arg1) != INTEGER_CST || wi::geu_p (arg1, 2))
  	{
  	  error ("argument 2 must be 0 or 1");
! 	  return CONST0_RTX (tmode);
  	}
  
        STRIP_NOPS (arg2);
!       if (TREE_CODE (arg2) != INTEGER_CST || wi::geu_p (arg2, 16))
  	{
  	  error ("argument 3 must be in the range 0..15");
! 	  return CONST0_RTX (tmode);
  	}
      }
  
*************** altivec_expand_ld_builtin (tree exp, rtx
*** 13102,13107 ****
--- 13126,13132 ----
        break;
      case ALTIVEC_BUILTIN_LD_INTERNAL_2di:
        icode = CODE_FOR_vector_altivec_load_v2di;
+       break;
      case ALTIVEC_BUILTIN_LD_INTERNAL_1ti:
        icode = CODE_FOR_vector_altivec_load_v1ti;
        break;
*************** altivec_expand_st_builtin (tree exp, rtx
*** 13163,13168 ****
--- 13188,13194 ----
        break;
      case ALTIVEC_BUILTIN_ST_INTERNAL_2di:
        icode = CODE_FOR_vector_altivec_store_v2di;
+       break;
      case ALTIVEC_BUILTIN_ST_INTERNAL_1ti:
        icode = CODE_FOR_vector_altivec_store_v1ti;
        break;
*************** builtin_function_type (machine_mode mode
*** 15619,15624 ****
--- 15645,15651 ----
        break;
  
        /* unsigned args, signed return.  */
+     case VSX_BUILTIN_XVCVUXDSP:
      case VSX_BUILTIN_XVCVUXDDP_UNS:
      case ALTIVEC_BUILTIN_UNSFLOAT_V4SI_V4SF:
        h.uns_p[1] = 1;
*************** rs6000_secondary_reload (bool in_p,
*** 17232,17237 ****
--- 17259,17265 ----
  		       && MEM_P (SUBREG_REG (x))));
  
    sri->icode = CODE_FOR_nothing;
+   sri->t_icode = CODE_FOR_nothing;
    sri->extra_cost = 0;
    icode = ((in_p)
  	   ? reg_addr[mode].reload_load
*************** debug_stack_info (rs6000_stack_t *info)
*** 22286,22309 ****
  rtx
  rs6000_return_addr (int count, rtx frame)
  {
!   /* Currently we don't optimize very well between prolog and body
!      code and for PIC code the code can be actually quite bad, so
!      don't try to be too clever here.  */
    if (count != 0
        || ((DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_DARWIN) && flag_pic))
      {
        cfun->machine->ra_needs_full_frame = 1;
  
!       return
! 	gen_rtx_MEM
! 	  (Pmode,
! 	   memory_address
! 	   (Pmode,
! 	    plus_constant (Pmode,
! 			   copy_to_reg
! 			   (gen_rtx_MEM (Pmode,
! 					 memory_address (Pmode, frame))),
! 			   RETURN_ADDRESS_OFFSET)));
      }
  
    cfun->machine->ra_need_lr = 1;
--- 22314,22336 ----
  rtx
  rs6000_return_addr (int count, rtx frame)
  {
!   /* We can't use get_hard_reg_initial_val for LR when count == 0 if LR
!      is trashed by the prologue, as it is for PIC on ABI_V4 and Darwin.  */
    if (count != 0
        || ((DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_DARWIN) && flag_pic))
      {
        cfun->machine->ra_needs_full_frame = 1;
  
!       if (count == 0)
! 	/* FRAME is set to frame_pointer_rtx by the generic code, but that
! 	   is good for loading 0(r1) only when !FRAME_GROWS_DOWNWARD.  */
! 	frame = stack_pointer_rtx;
!       rtx prev_frame_addr = memory_address (Pmode, frame);
!       rtx prev_frame = copy_to_reg (gen_rtx_MEM (Pmode, prev_frame_addr));
!       rtx lr_save_off = plus_constant (Pmode,
! 				       prev_frame, RETURN_ADDRESS_OFFSET);
!       rtx lr_save_addr = memory_address (Pmode, lr_save_off);
!       return gen_rtx_MEM (Pmode, lr_save_addr);
      }
  
    cfun->machine->ra_need_lr = 1;
*************** rs6000_output_function_epilogue (FILE *f
*** 25856,25908 ****
  	 seems to set the bit when not optimizing.  */
        fprintf (file, "%d\n", ((float_parms << 1) | (! optimize)));
  
!       if (! optional_tbtab)
! 	return;
! 
!       /* Optional fields follow.  Some are variable length.  */
  
!       /* Parameter types, left adjusted bit fields: 0 fixed, 10 single float,
! 	 11 double float.  */
!       /* There is an entry for each parameter in a register, in the order that
! 	 they occur in the parameter list.  Any intervening arguments on the
! 	 stack are ignored.  If the list overflows a long (max possible length
! 	 34 bits) then completely leave off all elements that don't fit.  */
!       /* Only emit this long if there was at least one parameter.  */
!       if (fixed_parms || float_parms)
! 	fprintf (file, "\t.long %d\n", parm_info);
  
!       /* Offset from start of code to tb table.  */
!       fputs ("\t.long ", file);
!       ASM_OUTPUT_INTERNAL_LABEL_PREFIX (file, "LT");
!       RS6000_OUTPUT_BASENAME (file, fname);
!       putc ('-', file);
!       rs6000_output_function_entry (file, fname);
!       putc ('\n', file);
  
!       /* Interrupt handler mask.  */
!       /* Omit this long, since we never set the interrupt handler bit
! 	 above.  */
  
!       /* Number of CTL (controlled storage) anchors.  */
!       /* Omit this long, since the has_ctl bit is never set above.  */
  
!       /* Displacement into stack of each CTL anchor.  */
!       /* Omit this list of longs, because there are no CTL anchors.  */
  
!       /* Length of function name.  */
!       if (*fname == '*')
! 	++fname;
!       fprintf (file, "\t.short %d\n", (int) strlen (fname));
  
!       /* Function name.  */
!       assemble_string (fname, strlen (fname));
  
!       /* Register for alloca automatic storage; this is always reg 31.
! 	 Only emit this if the alloca bit was set above.  */
!       if (frame_pointer_needed)
! 	fputs ("\t.byte 31\n", file);
  
!       fputs ("\t.align 2\n", file);
      }
  }
  
--- 25883,25936 ----
  	 seems to set the bit when not optimizing.  */
        fprintf (file, "%d\n", ((float_parms << 1) | (! optimize)));
  
!       if (optional_tbtab)
! 	{
! 	  /* Optional fields follow.  Some are variable length.  */
  
! 	  /* Parameter types, left adjusted bit fields: 0 fixed, 10 single
! 	     float, 11 double float.  */
! 	  /* There is an entry for each parameter in a register, in the order
! 	     that they occur in the parameter list.  Any intervening arguments
! 	     on the stack are ignored.  If the list overflows a long (max
! 	     possible length 34 bits) then completely leave off all elements
! 	     that don't fit.  */
! 	  /* Only emit this long if there was at least one parameter.  */
! 	  if (fixed_parms || float_parms)
! 	    fprintf (file, "\t.long %d\n", parm_info);
  
! 	  /* Offset from start of code to tb table.  */
! 	  fputs ("\t.long ", file);
! 	  ASM_OUTPUT_INTERNAL_LABEL_PREFIX (file, "LT");
! 	  RS6000_OUTPUT_BASENAME (file, fname);
! 	  putc ('-', file);
! 	  rs6000_output_function_entry (file, fname);
! 	  putc ('\n', file);
  
! 	  /* Interrupt handler mask.  */
! 	  /* Omit this long, since we never set the interrupt handler bit
! 	     above.  */
  
! 	  /* Number of CTL (controlled storage) anchors.  */
! 	  /* Omit this long, since the has_ctl bit is never set above.  */
  
! 	  /* Displacement into stack of each CTL anchor.  */
! 	  /* Omit this list of longs, because there are no CTL anchors.  */
  
! 	  /* Length of function name.  */
! 	  if (*fname == '*')
! 	    ++fname;
! 	  fprintf (file, "\t.short %d\n", (int) strlen (fname));
  
! 	  /* Function name.  */
! 	  assemble_string (fname, strlen (fname));
  
! 	  /* Register for alloca automatic storage; this is always reg 31.
! 	     Only emit this if the alloca bit was set above.  */
! 	  if (frame_pointer_needed)
! 	    fputs ("\t.byte 31\n", file);
  
! 	  fputs ("\t.align 2\n", file);
! 	}
      }
  }
  
*************** rs6000_output_symbol_ref (FILE *file, rt
*** 26228,26234 ****
  		     (TREE_CODE (decl) == FUNCTION_DECL
  		      ? "[DS]" : "[UA]"),
  		     NULL);
!       XSTR (x, 0) = name;
      }
  
    if (VTABLE_NAME_P (name))
--- 26256,26265 ----
  		     (TREE_CODE (decl) == FUNCTION_DECL
  		      ? "[DS]" : "[UA]"),
  		     NULL);
! 
!       /* Don't modify name in extern VAR_DECL to include mapping class.  */
!       if (TREE_CODE (decl) == FUNCTION_DECL)
! 	XSTR (x, 0) = name;
      }
  
    if (VTABLE_NAME_P (name))
*************** rs6000_elf_output_toc_section_asm_op (co
*** 29173,29180 ****
      {
        if (!toc_initialized)
  	{
- 	  toc_initialized = 1;
  	  fprintf (asm_out_file, "%s\n", TOC_SECTION_ASM_OP);
  	  (*targetm.asm_out.internal_label) (asm_out_file, "LCTOC", 0);
  	  fprintf (asm_out_file, "\t.tc ");
  	  ASM_OUTPUT_INTERNAL_LABEL_PREFIX (asm_out_file, "LCTOC1[TC],");
--- 29204,29211 ----
      {
        if (!toc_initialized)
  	{
  	  fprintf (asm_out_file, "%s\n", TOC_SECTION_ASM_OP);
+ 	  ASM_OUTPUT_ALIGN (asm_out_file, TARGET_64BIT ? 3 : 2);
  	  (*targetm.asm_out.internal_label) (asm_out_file, "LCTOC", 0);
  	  fprintf (asm_out_file, "\t.tc ");
  	  ASM_OUTPUT_INTERNAL_LABEL_PREFIX (asm_out_file, "LCTOC1[TC],");
*************** rs6000_elf_output_toc_section_asm_op (co
*** 29182,29201 ****
  	  fprintf (asm_out_file, "\n");
  
  	  fprintf (asm_out_file, "%s\n", MINIMAL_TOC_SECTION_ASM_OP);
  	  ASM_OUTPUT_INTERNAL_LABEL_PREFIX (asm_out_file, "LCTOC1");
  	  fprintf (asm_out_file, " = .+32768\n");
  	}
        else
  	fprintf (asm_out_file, "%s\n", MINIMAL_TOC_SECTION_ASM_OP);
      }
    else if ((DEFAULT_ABI == ABI_AIX || DEFAULT_ABI == ABI_ELFv2)
  	   && !TARGET_RELOCATABLE)
!     fprintf (asm_out_file, "%s\n", TOC_SECTION_ASM_OP);
    else
      {
        fprintf (asm_out_file, "%s\n", MINIMAL_TOC_SECTION_ASM_OP);
        if (!toc_initialized)
  	{
  	  ASM_OUTPUT_INTERNAL_LABEL_PREFIX (asm_out_file, "LCTOC1");
  	  fprintf (asm_out_file, " = .+32768\n");
  	  toc_initialized = 1;
--- 29213,29242 ----
  	  fprintf (asm_out_file, "\n");
  
  	  fprintf (asm_out_file, "%s\n", MINIMAL_TOC_SECTION_ASM_OP);
+ 	  ASM_OUTPUT_ALIGN (asm_out_file, TARGET_64BIT ? 3 : 2);
  	  ASM_OUTPUT_INTERNAL_LABEL_PREFIX (asm_out_file, "LCTOC1");
  	  fprintf (asm_out_file, " = .+32768\n");
+ 	  toc_initialized = 1;
  	}
        else
  	fprintf (asm_out_file, "%s\n", MINIMAL_TOC_SECTION_ASM_OP);
      }
    else if ((DEFAULT_ABI == ABI_AIX || DEFAULT_ABI == ABI_ELFv2)
  	   && !TARGET_RELOCATABLE)
!     {
!       fprintf (asm_out_file, "%s\n", TOC_SECTION_ASM_OP);
!       if (!toc_initialized)
! 	{
! 	  ASM_OUTPUT_ALIGN (asm_out_file, TARGET_64BIT ? 3 : 2);
! 	  toc_initialized = 1;
! 	}
!     }
    else
      {
        fprintf (asm_out_file, "%s\n", MINIMAL_TOC_SECTION_ASM_OP);
        if (!toc_initialized)
  	{
+ 	  ASM_OUTPUT_ALIGN (asm_out_file, TARGET_64BIT ? 3 : 2);
  	  ASM_OUTPUT_INTERNAL_LABEL_PREFIX (asm_out_file, "LCTOC1");
  	  fprintf (asm_out_file, " = .+32768\n");
  	  toc_initialized = 1;
*************** rs6000_inner_target_options (tree args,
*** 32611,32617 ****
      }
  
    else
!     gcc_unreachable ();
  
    return ret;
  }
--- 32652,32661 ----
      }
  
    else
!     {
!       error ("attribute %<target%> argument not a string");
!       return false;
!     }
  
    return ret;
  }
*************** rs6000_pragma_target_parse (tree args, t
*** 32835,32857 ****
  /* Remember the last target of rs6000_set_current_function.  */
  static GTY(()) tree rs6000_previous_fndecl;
  
  /* Establish appropriate back-end context for processing the function
     FNDECL.  The argument might be NULL to indicate processing at top
     level, outside of any function scope.  */
  static void
  rs6000_set_current_function (tree fndecl)
  {
-   tree old_tree = (rs6000_previous_fndecl
- 		   ? DECL_FUNCTION_SPECIFIC_TARGET (rs6000_previous_fndecl)
- 		   : NULL_TREE);
- 
-   tree new_tree = (fndecl
- 		   ? DECL_FUNCTION_SPECIFIC_TARGET (fndecl)
- 		   : NULL_TREE);
- 
    if (TARGET_DEBUG_TARGET)
      {
-       bool print_final = false;
        fprintf (stderr, "\n==================== rs6000_set_current_function");
  
        if (fndecl)
--- 32879,32908 ----
  /* Remember the last target of rs6000_set_current_function.  */
  static GTY(()) tree rs6000_previous_fndecl;
  
+ /* Restore target's globals from NEW_TREE and invalidate the
+    rs6000_previous_fndecl cache.  */
+ 
+ static void
+ rs6000_activate_target_options (tree new_tree)
+ {
+   cl_target_option_restore (&global_options, TREE_TARGET_OPTION (new_tree));
+   if (TREE_TARGET_GLOBALS (new_tree))
+     restore_target_globals (TREE_TARGET_GLOBALS (new_tree));
+   else if (new_tree == target_option_default_node)
+     restore_target_globals (&default_target_globals);
+   else
+     TREE_TARGET_GLOBALS (new_tree) = save_target_globals_default_opts ();
+   rs6000_previous_fndecl = NULL_TREE;
+ }
+ 
  /* Establish appropriate back-end context for processing the function
     FNDECL.  The argument might be NULL to indicate processing at top
     level, outside of any function scope.  */
  static void
  rs6000_set_current_function (tree fndecl)
  {
    if (TARGET_DEBUG_TARGET)
      {
        fprintf (stderr, "\n==================== rs6000_set_current_function");
  
        if (fndecl)
*************** rs6000_set_current_function (tree fndecl
*** 32864,32921 ****
  	fprintf (stderr, ", prev_fndecl (%p)", (void *)rs6000_previous_fndecl);
  
        fprintf (stderr, "\n");
        if (new_tree)
  	{
  	  fprintf (stderr, "\nnew fndecl target specific options:\n");
  	  debug_tree (new_tree);
- 	  print_final = true;
  	}
  
        if (old_tree)
  	{
  	  fprintf (stderr, "\nold fndecl target specific options:\n");
  	  debug_tree (old_tree);
- 	  print_final = true;
  	}
  
!       if (print_final)
  	fprintf (stderr, "--------------------\n");
      }
  
!   /* Only change the context if the function changes.  This hook is called
!      several times in the course of compiling a function, and we don't want to
!      slow things down too much or call target_reinit when it isn't safe.  */
!   if (fndecl && fndecl != rs6000_previous_fndecl)
!     {
!       rs6000_previous_fndecl = fndecl;
!       if (old_tree == new_tree)
! 	;
! 
!       else if (new_tree && new_tree != target_option_default_node)
! 	{
! 	  cl_target_option_restore (&global_options,
! 				    TREE_TARGET_OPTION (new_tree));
! 	  if (TREE_TARGET_GLOBALS (new_tree))
! 	    restore_target_globals (TREE_TARGET_GLOBALS (new_tree));
! 	  else
! 	    TREE_TARGET_GLOBALS (new_tree)
! 	      = save_target_globals_default_opts ();
! 	}
  
!       else if (old_tree && old_tree != target_option_default_node)
! 	{
! 	  new_tree = target_option_current_node;
! 	  cl_target_option_restore (&global_options,
! 				    TREE_TARGET_OPTION (new_tree));
! 	  if (TREE_TARGET_GLOBALS (new_tree))
! 	    restore_target_globals (TREE_TARGET_GLOBALS (new_tree));
! 	  else if (new_tree == target_option_default_node)
! 	    restore_target_globals (&default_target_globals);
! 	  else
! 	    TREE_TARGET_GLOBALS (new_tree)
! 	      = save_target_globals_default_opts ();
! 	}
!     }
  }
  
  
--- 32915,32974 ----
  	fprintf (stderr, ", prev_fndecl (%p)", (void *)rs6000_previous_fndecl);
  
        fprintf (stderr, "\n");
+     }
+ 
+   /* Only change the context if the function changes.  This hook is called
+      several times in the course of compiling a function, and we don't want to
+      slow things down too much or call target_reinit when it isn't safe.  */
+   if (fndecl == rs6000_previous_fndecl)
+     return;
+ 
+   tree old_tree;
+   if (rs6000_previous_fndecl == NULL_TREE)
+     old_tree = target_option_current_node;
+   else if (DECL_FUNCTION_SPECIFIC_TARGET (rs6000_previous_fndecl))
+     old_tree = DECL_FUNCTION_SPECIFIC_TARGET (rs6000_previous_fndecl);
+   else
+     old_tree = target_option_default_node;
+ 
+   tree new_tree;
+   if (fndecl == NULL_TREE)
+     {
+       if (old_tree != target_option_current_node)
+ 	new_tree = target_option_current_node;
+       else
+ 	new_tree = NULL_TREE;
+     }
+   else
+     {
+       new_tree = DECL_FUNCTION_SPECIFIC_TARGET (fndecl);
+       if (new_tree == NULL_TREE)
+ 	new_tree = target_option_default_node;
+     }
+ 
+   if (TARGET_DEBUG_TARGET)
+     {
        if (new_tree)
  	{
  	  fprintf (stderr, "\nnew fndecl target specific options:\n");
  	  debug_tree (new_tree);
  	}
  
        if (old_tree)
  	{
  	  fprintf (stderr, "\nold fndecl target specific options:\n");
  	  debug_tree (old_tree);
  	}
  
!       if (old_tree != NULL_TREE || new_tree != NULL_TREE)
  	fprintf (stderr, "--------------------\n");
      }
  
!   if (new_tree && old_tree != new_tree)
!     rs6000_activate_target_options (new_tree);
  
!   if (fndecl)
!     rs6000_previous_fndecl = fndecl;
  }
  
  
*************** emit_fusion_gpr_load (rtx target, rtx me
*** 34134,34143 ****
     throughout the computation, we can get correct behavior by replacing
     M with M' as follows:
  
!             { M[i+8]+8 : i < 8, M[i+8] in [0,7] U [16,23]
!     M'[i] = { M[i+8]-8 : i < 8, M[i+8] in [8,15] U [24,31]
!             { M[i-8]+8 : i >= 8, M[i-8] in [0,7] U [16,23]
!             { M[i-8]-8 : i >= 8, M[i-8] in [8,15] U [24,31]
  
     This seems promising at first, since we are just replacing one mask
     with another.  But certain masks are preferable to others.  If M
--- 34187,34194 ----
     throughout the computation, we can get correct behavior by replacing
     M with M' as follows:
  
!     M'[i] = { (M[i]+8)%16      : M[i] in [0,15]
!             { ((M[i]+8)%16)+16 : M[i] in [16,31]
  
     This seems promising at first, since we are just replacing one mask
     with another.  But certain masks are preferable to others.  If M
*************** emit_fusion_gpr_load (rtx target, rtx me
*** 34155,34161 ****
     mask to be produced by an UNSPEC_LVSL, in which case the mask 
     cannot be known at compile time.  In such a case we would have to
     generate several instructions to compute M' as above at run time,
!    and a cost model is needed again.  */
  
  /* This is based on the union-find logic in web.c.  web_entry_base is
     defined in df.h.  */
--- 34206,34216 ----
     mask to be produced by an UNSPEC_LVSL, in which case the mask 
     cannot be known at compile time.  In such a case we would have to
     generate several instructions to compute M' as above at run time,
!    and a cost model is needed again.
! 
!    However, when the mask M for an UNSPEC_VPERM is loaded from the
!    constant pool, we can replace M with M' as above at no cost
!    beyond adding a constant pool entry.  */
  
  /* This is based on the union-find logic in web.c.  web_entry_base is
     defined in df.h.  */
*************** class swap_web_entry : public web_entry_
*** 34191,34197 ****
    /* A nonzero value indicates what kind of special handling for this
       insn is required if doublewords are swapped.  Undefined if
       is_swappable is not set.  */
!   unsigned int special_handling : 3;
    /* Set if the web represented by this entry cannot be optimized.  */
    unsigned int web_not_optimizable : 1;
    /* Set if this insn should be deleted.  */
--- 34246,34252 ----
    /* A nonzero value indicates what kind of special handling for this
       insn is required if doublewords are swapped.  Undefined if
       is_swappable is not set.  */
!   unsigned int special_handling : 4;
    /* Set if the web represented by this entry cannot be optimized.  */
    unsigned int web_not_optimizable : 1;
    /* Set if this insn should be deleted.  */
*************** enum special_handling_values {
*** 34205,34211 ****
    SH_NOSWAP_LD,
    SH_NOSWAP_ST,
    SH_EXTRACT,
!   SH_SPLAT
  };
  
  /* Union INSN with all insns containing definitions that reach USE.
--- 34260,34270 ----
    SH_NOSWAP_LD,
    SH_NOSWAP_ST,
    SH_EXTRACT,
!   SH_SPLAT,
!   SH_XXPERMDI,
!   SH_CONCAT,
!   SH_VPERM,
!   SH_VPERM_COMP
  };
  
  /* Union INSN with all insns containing definitions that reach USE.
*************** insn_is_swap_p (rtx insn)
*** 34340,34345 ****
--- 34399,34562 ----
    return 1;
  }
  
+ /* Return TRUE if insn is a swap fed by a load from the constant pool.  */
+ static bool
+ const_load_sequence_p (swap_web_entry *insn_entry, rtx insn)
+ {
+   unsigned uid = INSN_UID (insn);
+   if (!insn_entry[uid].is_swap || insn_entry[uid].is_load)
+     return false;
+ 
+   /* Find the unique use in the swap and locate its def.  If the def
+      isn't unique, punt.  */
+   struct df_insn_info *insn_info = DF_INSN_INFO_GET (insn);
+   df_ref use;
+   FOR_EACH_INSN_INFO_USE (use, insn_info)
+     {
+       struct df_link *def_link = DF_REF_CHAIN (use);
+       if (!def_link || def_link->next)
+ 	return false;
+ 
+       rtx def_insn = DF_REF_INSN (def_link->ref);
+       unsigned uid2 = INSN_UID (def_insn);
+       if (!insn_entry[uid2].is_load || !insn_entry[uid2].is_swap)
+ 	return false;
+ 
+       rtx body = PATTERN (def_insn);
+       if (GET_CODE (body) != SET
+ 	  || GET_CODE (SET_SRC (body)) != VEC_SELECT
+ 	  || GET_CODE (XEXP (SET_SRC (body), 0)) != MEM)
+ 	return false;
+ 
+       rtx mem = XEXP (SET_SRC (body), 0);
+       rtx base_reg = XEXP (mem, 0);
+ 
+       if (!REG_P (base_reg))
+ 	{
+ 	  gcc_assert (GET_CODE (base_reg) == PLUS);
+ 	  base_reg = XEXP (base_reg, 0);
+ 	}
+ 
+       df_ref base_use;
+       rtx_insn *tocrel_insn = 0;
+       insn_info = DF_INSN_INFO_GET (def_insn);
+       FOR_EACH_INSN_INFO_USE (base_use, insn_info)
+ 	{
+ 	  if (!rtx_equal_p (DF_REF_REG (base_use), base_reg))
+ 	    continue;
+ 
+ 	  struct df_link *base_def_link = DF_REF_CHAIN (base_use);
+ 	  if (!base_def_link || base_def_link->next)
+ 	    return false;
+ 
+ 	  tocrel_insn = DF_REF_INSN (base_def_link->ref);
+ 	  rtx tocrel_body = PATTERN (tocrel_insn);
+ 	  rtx base, offset;
+ 	  if (GET_CODE (tocrel_body) != SET)
+ 	    return false;
+ 	  /* There is an extra level of indirection for small/large
+ 	     code models.  */
+ 	  rtx tocrel_expr = SET_SRC (tocrel_body);
+ 	  if (GET_CODE (tocrel_expr) == MEM)
+ 	    tocrel_expr = XEXP (tocrel_expr, 0);
+ 	  if (!toc_relative_expr_p (tocrel_expr, false))
+ 	    return false;
+ 	  split_const (XVECEXP (tocrel_base, 0, 0), &base, &offset);
+ 	  if (GET_CODE (base) != SYMBOL_REF || !CONSTANT_POOL_ADDRESS_P (base))
+ 	    return false;
+ 	  rtx const_vector = get_pool_constant (base);
+ 	  /* With the extra indirection, get_pool_constant will produce the
+ 	     real constant from the reg_equal expression, so get the real
+ 	     constant.  It's still possible that the reg_equal doesn't
+ 	     represent a constant, so punt in that case.  */
+ 	  if (GET_CODE (const_vector) == SYMBOL_REF)
+ 	    {
+ 	      if (!CONSTANT_POOL_ADDRESS_P (const_vector))
+ 		return false;
+ 	      const_vector = get_pool_constant (const_vector);
+ 	    }
+ 	  if (GET_CODE (const_vector) != CONST_VECTOR)
+ 	    return false;
+ 	}
+       gcc_assert (tocrel_insn);
+     }
+   return true;
+ }
+ 
+ /* Return TRUE if insn is a swap fed by a load from the constant pool
+    and subsequently complemented.  */
+ static bool
+ load_comp_mask_p (swap_web_entry *insn_entry, rtx insn)
+ {
+   rtx body = PATTERN (insn);
+   if (GET_CODE (body) != SET)
+     return false;
+   rtx ior = SET_SRC (body);
+   if (GET_CODE (ior) != IOR)
+     return false;
+   rtx not1 = XEXP (ior, 0);
+   rtx not2 = XEXP (ior, 1);
+   if (GET_CODE (not1) != NOT || GET_CODE (not2) != NOT)
+     return false;
+   rtx reg1 = XEXP (not1, 0);
+   rtx reg2 = XEXP (not2, 0);
+   if (!REG_P (reg1) || !rtx_equal_p (reg1, reg2))
+     return false;
+ 
+   /* We have a VNOR operation.  Find the def of its source reg and
+      check for the remaining conditions.  */
+   struct df_insn_info *insn_info = DF_INSN_INFO_GET (insn);
+   df_ref use;
+   FOR_EACH_INSN_INFO_USE (use, insn_info)
+     {
+       struct df_link *def_link = DF_REF_CHAIN (use);
+       if (!def_link || def_link->next)
+ 	return false;
+       rtx def_insn = DF_REF_INSN (def_link->ref);
+       return const_load_sequence_p (insn_entry, def_insn);
+     }
+ 
+   gcc_unreachable ();
+ }
+ 
+ /* Return TRUE iff OP matches a V2DF reduction pattern.  See the
+    definition of vsx_reduc_<VEC_reduc_name>_v2df in vsx.md.  */
+ static bool
+ v2df_reduction_p (rtx op)
+ {
+   if (GET_MODE (op) != V2DFmode)
+     return false;
+   
+   enum rtx_code code = GET_CODE (op);
+   if (code != PLUS && code != SMIN && code != SMAX)
+     return false;
+ 
+   rtx concat = XEXP (op, 0);
+   if (GET_CODE (concat) != VEC_CONCAT)
+     return false;
+ 
+   rtx select0 = XEXP (concat, 0);
+   rtx select1 = XEXP (concat, 1);
+   if (GET_CODE (select0) != VEC_SELECT || GET_CODE (select1) != VEC_SELECT)
+     return false;
+ 
+   rtx reg0 = XEXP (select0, 0);
+   rtx reg1 = XEXP (select1, 0);
+   if (!rtx_equal_p (reg0, reg1) || !REG_P (reg0))
+     return false;
+ 
+   rtx parallel0 = XEXP (select0, 1);
+   rtx parallel1 = XEXP (select1, 1);
+   if (GET_CODE (parallel0) != PARALLEL || GET_CODE (parallel1) != PARALLEL)
+     return false;
+ 
+   if (!rtx_equal_p (XVECEXP (parallel0, 0, 0), const1_rtx)
+       || !rtx_equal_p (XVECEXP (parallel1, 0, 0), const0_rtx))
+     return false;
+ 
+   return true;
+ }
+ 
  /* Return 1 iff OP is an operand that will not be affected by having
     vector doublewords swapped in memory.  */
  static unsigned int
*************** rtx_is_swappable_p (rtx op, unsigned int
*** 34397,34402 ****
--- 34614,34635 ----
  	  *special = SH_EXTRACT;
  	  return 1;
  	}
+       /* An XXPERMDI is ok if we adjust the lanes.  Note that if the
+ 	 XXPERMDI is a swap operation, it will be identified by
+ 	 insn_is_swap_p and therefore we won't get here.  */
+       else if (GET_CODE (XEXP (op, 0)) == VEC_CONCAT
+ 	       && (GET_MODE (XEXP (op, 0)) == V4DFmode
+ 		   || GET_MODE (XEXP (op, 0)) == V4DImode)
+ 	       && GET_CODE ((parallel = XEXP (op, 1))) == PARALLEL
+ 	       && XVECLEN (parallel, 0) == 2
+ 	       && GET_CODE (XVECEXP (parallel, 0, 0)) == CONST_INT
+ 	       && GET_CODE (XVECEXP (parallel, 0, 1)) == CONST_INT)
+ 	{
+ 	  *special = SH_XXPERMDI;
+ 	  return 1;
+ 	}
+       else if (v2df_reduction_p (op))
+ 	return 1;
        else
  	return 0;
  
*************** rtx_is_swappable_p (rtx op, unsigned int
*** 34461,34466 ****
--- 34694,34702 ----
  	  case UNSPEC_VSPLT_DIRECT:
  	    *special = SH_SPLAT;
  	    return 1;
+ 	  case UNSPEC_REDUC_PLUS:
+ 	  case UNSPEC_REDUC:
+ 	    return 1;
  	  }
        }
  
*************** insn_is_swappable_p (swap_web_entry *ins
*** 34566,34572 ****
  	    if (GET_CODE (use_body) != SET
  		|| GET_CODE (SET_SRC (use_body)) != UNSPEC
  		|| XINT (SET_SRC (use_body), 1) != UNSPEC_VSX_XXSPLTW
! 		|| XEXP (XEXP (SET_SRC (use_body), 0), 1) != const0_rtx)
  	      return 0;
  	  }
  	}
--- 34802,34808 ----
  	    if (GET_CODE (use_body) != SET
  		|| GET_CODE (SET_SRC (use_body)) != UNSPEC
  		|| XINT (SET_SRC (use_body), 1) != UNSPEC_VSX_XXSPLTW
! 		|| XVECEXP (SET_SRC (use_body), 0, 1) != const0_rtx)
  	      return 0;
  	  }
  	}
*************** insn_is_swappable_p (swap_web_entry *ins
*** 34574,34579 ****
--- 34810,34868 ----
        return 1;
      }
  
+   /* A concatenation of two doublewords is ok if we reverse the
+      order of the inputs.  */
+   if (GET_CODE (body) == SET
+       && GET_CODE (SET_SRC (body)) == VEC_CONCAT
+       && (GET_MODE (SET_SRC (body)) == V2DFmode
+ 	  || GET_MODE (SET_SRC (body)) == V2DImode))
+     {
+       *special = SH_CONCAT;
+       return 1;
+     }
+ 
+   /* V2DF reductions are always swappable.  */
+   if (GET_CODE (body) == PARALLEL)
+     {
+       rtx expr = XVECEXP (body, 0, 0);
+       if (GET_CODE (expr) == SET
+ 	  && v2df_reduction_p (SET_SRC (expr)))
+ 	return 1;
+     }
+ 
+   /* An UNSPEC_VPERM is ok if the mask operand is loaded from the
+      constant pool, and optionally complemented afterwards.  */
+   if (GET_CODE (body) == SET
+       && GET_CODE (SET_SRC (body)) == UNSPEC
+       && XINT (SET_SRC (body), 1) == UNSPEC_VPERM
+       && XVECLEN (SET_SRC (body), 0) == 3
+       && GET_CODE (XVECEXP (SET_SRC (body), 0, 2)) == REG)
+     {
+       rtx mask_reg = XVECEXP (SET_SRC (body), 0, 2);
+       struct df_insn_info *insn_info = DF_INSN_INFO_GET (insn);
+       df_ref use;
+       FOR_EACH_INSN_INFO_USE (use, insn_info)
+ 	if (rtx_equal_p (DF_REF_REG (use), mask_reg))
+ 	  {
+ 	    struct df_link *def_link = DF_REF_CHAIN (use);
+ 	    /* Punt if multiple definitions for this reg.  */
+ 	    if (def_link && !def_link->next &&
+ 		const_load_sequence_p (insn_entry,
+ 				       DF_REF_INSN (def_link->ref)))
+ 	      {
+ 		*special = SH_VPERM;
+ 		return 1;
+ 	      }
+ 	    else if (def_link && !def_link->next &&
+ 		     load_comp_mask_p (insn_entry,
+ 				       DF_REF_INSN (def_link->ref)))
+ 	      {
+ 		*special = SH_VPERM_COMP;
+ 		return 1;
+ 	      }
+ 	  }
+     }
+ 
    /* Otherwise check the operands for vector lane violations.  */
    return rtx_is_swappable_p (body, special);
  }
*************** adjust_splat (rtx_insn *insn)
*** 34863,34868 ****
--- 35152,35386 ----
      fprintf (dump_file, "Changing lane for splat %d\n", INSN_UID (insn));
  }
  
+ /* Given OP that contains an XXPERMDI operation (that is not a doubleword
+    swap), reverse the order of the source operands and adjust the indices
+    of the source lanes to account for doubleword reversal.  */
+ static void
+ adjust_xxpermdi (rtx_insn *insn)
+ {
+   rtx set = PATTERN (insn);
+   rtx select = XEXP (set, 1);
+   rtx concat = XEXP (select, 0);
+   rtx src0 = XEXP (concat, 0);
+   XEXP (concat, 0) = XEXP (concat, 1);
+   XEXP (concat, 1) = src0;
+   rtx parallel = XEXP (select, 1);
+   int lane0 = INTVAL (XVECEXP (parallel, 0, 0));
+   int lane1 = INTVAL (XVECEXP (parallel, 0, 1));
+   int new_lane0 = 3 - lane1;
+   int new_lane1 = 3 - lane0;
+   XVECEXP (parallel, 0, 0) = GEN_INT (new_lane0);
+   XVECEXP (parallel, 0, 1) = GEN_INT (new_lane1);
+   INSN_CODE (insn) = -1; /* Force re-recognition.  */
+   df_insn_rescan (insn);
+ 
+   if (dump_file)
+     fprintf (dump_file, "Changing lanes for xxpermdi %d\n", INSN_UID (insn));
+ }
+ 
+ /* Given OP that contains a VEC_CONCAT operation of two doublewords,
+    reverse the order of those inputs.  */
+ static void
+ adjust_concat (rtx_insn *insn)
+ {
+   rtx set = PATTERN (insn);
+   rtx concat = XEXP (set, 1);
+   rtx src0 = XEXP (concat, 0);
+   XEXP (concat, 0) = XEXP (concat, 1);
+   XEXP (concat, 1) = src0;
+   INSN_CODE (insn) = -1; /* Force re-recognition.  */
+   df_insn_rescan (insn);
+ 
+   if (dump_file)
+     fprintf (dump_file, "Reversing inputs for concat %d\n", INSN_UID (insn));
+ }
+ 
+ /* We previously determined that a use of MASK_REG in INSN was fed by a
+    swap of a swapping load of a TOC-relative constant pool symbol.  Return
+    the CONST_VECTOR that was loaded, as well as the LOAD_INSN (by
+    reference).  */
+ static rtx
+ find_swapped_load_and_const_vector (rtx_insn *insn, rtx_insn **load_insn,
+ 				    rtx mask_reg)
+ {
+   /* Find the swap.  */
+   struct df_insn_info *insn_info = DF_INSN_INFO_GET (insn);
+   df_ref use;
+   rtx_insn *swap_insn = 0;
+   FOR_EACH_INSN_INFO_USE (use, insn_info)
+     if (rtx_equal_p (DF_REF_REG (use), mask_reg))
+       {
+ 	struct df_link *def_link = DF_REF_CHAIN (use);
+ 	gcc_assert (def_link && !def_link->next);
+ 	swap_insn = DF_REF_INSN (def_link->ref);
+ 	break;
+       }
+   gcc_assert (swap_insn);
+   
+   /* Find the load.  */
+   insn_info = DF_INSN_INFO_GET (swap_insn);
+   FOR_EACH_INSN_INFO_USE (use, insn_info)
+     {
+       struct df_link *def_link = DF_REF_CHAIN (use);
+       gcc_assert (def_link && !def_link->next);
+       *load_insn = DF_REF_INSN (def_link->ref);
+       break;
+     }
+   gcc_assert (*load_insn);
+ 
+   /* Find the TOC-relative symbol access.  */
+   insn_info = DF_INSN_INFO_GET (*load_insn);
+   rtx_insn *tocrel_insn = 0;
+   FOR_EACH_INSN_INFO_USE (use, insn_info)
+     {
+       struct df_link *def_link = DF_REF_CHAIN (use);
+       gcc_assert (def_link && !def_link->next);
+       tocrel_insn = DF_REF_INSN (def_link->ref);
+       break;
+     }
+   gcc_assert (tocrel_insn);
+ 
+   /* Find the embedded CONST_VECTOR.  We have to call toc_relative_expr_p
+      to set tocrel_base; otherwise it would be unnecessary as we've
+      already established it will return true.  */
+   rtx base, offset;
+   rtx tocrel_expr = SET_SRC (PATTERN (tocrel_insn));
+   /* There is an extra level of indirection for small/large code models.  */
+   if (GET_CODE (tocrel_expr) == MEM)
+     tocrel_expr = XEXP (tocrel_expr, 0);
+   if (!toc_relative_expr_p (tocrel_expr, false))
+     gcc_unreachable ();
+   split_const (XVECEXP (tocrel_base, 0, 0), &base, &offset);
+   rtx const_vector = get_pool_constant (base);
+   /* With the extra indirection, get_pool_constant will produce the
+      real constant from the reg_equal expression, so get the real
+      constant.  */
+   if (GET_CODE (const_vector) == SYMBOL_REF)
+     const_vector = get_pool_constant (const_vector);
+   gcc_assert (GET_CODE (const_vector) == CONST_VECTOR);
+ 
+   return const_vector;
+ }
+ 
+ /* Create a new CONST_VECTOR from NEW_MASK, and replace the MEM in
+    LOAD_INSN with a MEM referencing that CONST_VECTOR.  */
+ static void
+ replace_const_vector_in_load (rtx_insn *load_insn, unsigned int *new_mask)
+ {
+   unsigned int i;
+   rtx vals = gen_rtx_PARALLEL (V16QImode, rtvec_alloc (16));
+   for (i = 0; i < 16; ++i)
+     XVECEXP (vals, 0, i) = GEN_INT (new_mask[i]);
+   rtx new_const_vector = gen_rtx_CONST_VECTOR (V16QImode, XVEC (vals, 0));
+   rtx new_mem = force_const_mem (V16QImode, new_const_vector);
+   /* This gives us a MEM whose base operand is a SYMBOL_REF, which we
+      can't recognize.  Force the SYMBOL_REF into a register.  */
+   if (!REG_P (XEXP (new_mem, 0))) {
+     rtx base_reg = force_reg (Pmode, XEXP (new_mem, 0));
+     XEXP (new_mem, 0) = base_reg;
+     /* Move the newly created insn ahead of the load insn.  */
+     rtx_insn *force_insn = get_last_insn ();
+     remove_insn (force_insn);
+     rtx_insn *before_load_insn = PREV_INSN (load_insn);
+     add_insn_after (force_insn, before_load_insn, BLOCK_FOR_INSN (load_insn));
+     df_insn_rescan (before_load_insn);
+     df_insn_rescan (force_insn);
+   }
+ 
+   XEXP (SET_SRC (PATTERN (load_insn)), 0) = new_mem;
+   INSN_CODE (load_insn) = -1; /* Force re-recognition.  */
+   df_insn_rescan (load_insn);
+ }
+ 
+ /* Given an UNSPEC_VPERM insn, modify the mask loaded from the
+    constant pool to reflect swapped doublewords.  */
+ static void
+ adjust_vperm (rtx_insn *insn)
+ {
+   /* We previously determined that the UNSPEC_VPERM was fed by a
+      swap of a swapping load of a TOC-relative constant pool symbol.
+      Find the MEM in the swapping load and replace it with a MEM for
+      the adjusted mask constant.  */
+   rtx set = PATTERN (insn);
+   rtx mask_reg = XVECEXP (SET_SRC (set), 0, 2);
+   rtx_insn *load_insn = 0;
+   rtx const_vector = find_swapped_load_and_const_vector (insn, &load_insn,
+ 							 mask_reg);
+ 
+   /* Create an adjusted mask from the initial mask.  */
+   unsigned int new_mask[16], i, val;
+   for (i = 0; i < 16; ++i) {
+     val = INTVAL (XVECEXP (const_vector, 0, i));
+     if (val < 16)
+       new_mask[i] = (val + 8) % 16;
+     else
+       new_mask[i] = ((val + 8) % 16) + 16;
+   }
+ 
+   /* Update the load instruction to load the new constant vector.  */
+   replace_const_vector_in_load (load_insn, new_mask);
+ 
+   if (dump_file)
+     fprintf (dump_file, "Adjusting mask for vperm %d\n", INSN_UID (insn));
+ }
+ 
+ /* Given an UNSPEC_VPERM insn fed by a complement operation, modify
+    the mask loaded from the constant pool to reflect swapped doublewords
+    and the complement.  */
+ static void
+ adjust_vperm_comp (rtx_insn *insn, swap_web_entry *insn_entry)
+ {
+   /* We previously determined that the UNSPEC_VPERM was fed by a
+      VNOR, itself fed by a swap of a swapping load of a TOC-relative
+      constant pool symbol.  Find the MEM in the swapping load and
+      replace it with a MEM for the adjusted mask constant.  */
+   rtx set = PATTERN (insn);
+   rtx mask_reg = XVECEXP (SET_SRC (set), 0, 2);
+ 
+   /* Find the VNOR and mark it for removal.  */
+   struct df_insn_info *insn_info = DF_INSN_INFO_GET (insn);
+   df_ref use;
+   rtx_insn *vnor_insn = 0;
+   FOR_EACH_INSN_INFO_USE (use, insn_info)
+     if (rtx_equal_p (DF_REF_REG (use), mask_reg))
+       {
+ 	struct df_link *def_link = DF_REF_CHAIN (use);
+ 	gcc_assert (def_link && !def_link->next);
+ 	vnor_insn = DF_REF_INSN (def_link->ref);
+ 	break;
+       }
+   gcc_assert (vnor_insn);
+ 
+   unsigned uid = INSN_UID (vnor_insn);
+   insn_entry[uid].will_delete = 1;
+ 
+   /* Identify the original mask register from the VNOR.  */
+   set = PATTERN (vnor_insn);
+   mask_reg = XEXP (XEXP (SET_SRC (set), 0), 0);
+ 
+   /* Find the load insn and the CONST_VECTOR that it loads.  */
+   rtx_insn *load_insn = 0;
+   rtx const_vector
+     = find_swapped_load_and_const_vector (vnor_insn, &load_insn, mask_reg);
+ 
+   /* Create an adjusted mask from the initial mask, which reflects
+      both the effect of the swap and of the complement. */
+   unsigned int new_mask[16], i, val;
+   for (i = 0; i < 16; ++i) {
+     val = 31 - INTVAL (XVECEXP (const_vector, 0, i));
+     if (val < 16)
+       new_mask[i] = (val + 8) % 16;
+     else
+       new_mask[i] = ((val + 8) % 16) + 16;
+   }
+ 
+   /* Update the load instruction to load the new constant vector.  */
+   replace_const_vector_in_load (load_insn, new_mask);
+ 
+   if (dump_file)
+     fprintf (dump_file, "Adjusting mask for vperm %d\n", INSN_UID (insn));
+ }
+ 
  /* The insn described by INSN_ENTRY[I] can be swapped, but only
     with special handling.  Take care of that here.  */
  static void
*************** handle_special_swappables (swap_web_entr
*** 34909,34925 ****
        /* Change the lane on a direct-splat operation.  */
        adjust_splat (insn);
        break;
      }
  }
  
  /* Find the insn from the Ith table entry, which is known to be a
!    register swap Y = SWAP(X).  Replace it with a copy Y = X.  */
  static void
  replace_swap_with_copy (swap_web_entry *insn_entry, unsigned i)
  {
    rtx_insn *insn = insn_entry[i].insn;
    rtx body = PATTERN (insn);
!   rtx src_reg = XEXP (SET_SRC (body), 0);
    rtx copy = gen_rtx_SET (VOIDmode, SET_DEST (body), src_reg);
    rtx_insn *new_insn = emit_insn_before (copy, insn);
    set_block_for_insn (new_insn, BLOCK_FOR_INSN (insn));
--- 35427,35464 ----
        /* Change the lane on a direct-splat operation.  */
        adjust_splat (insn);
        break;
+     case SH_XXPERMDI:
+       /* Change the lanes on an XXPERMDI operation.  */
+       adjust_xxpermdi (insn);
+       break;
+     case SH_CONCAT:
+       /* Reverse the order of a concatenation operation.  */
+       adjust_concat (insn);
+       break;
+     case SH_VPERM:
+       /* Change the mask loaded from the constant pool for a VPERM.  */
+       adjust_vperm (insn);
+       break;
+     case SH_VPERM_COMP:
+       /* Change the mask loaded from the constant pool and
+ 	 complemented for a vec_perm built-in.  */
+       adjust_vperm_comp (insn, insn_entry);
      }
  }
  
  /* Find the insn from the Ith table entry, which is known to be a
!    register swap Y = SWAP(X).  Replace it with a copy Y = X.
!    There is now one exception to this.  The table entry may also
!    refer to Y = VNOR(X, X).  */
  static void
  replace_swap_with_copy (swap_web_entry *insn_entry, unsigned i)
  {
    rtx_insn *insn = insn_entry[i].insn;
    rtx body = PATTERN (insn);
!   enum rtx_code code = GET_CODE (SET_SRC (body));
!   rtx src_reg = (code == IOR
! 		 ? XEXP (XEXP (SET_SRC (body), 0), 0)
! 		 : XEXP (SET_SRC (body), 0));
    rtx copy = gen_rtx_SET (VOIDmode, SET_DEST (body), src_reg);
    rtx_insn *new_insn = emit_insn_before (copy, insn);
    set_block_for_insn (new_insn, BLOCK_FOR_INSN (insn));
*************** replace_swap_with_copy (swap_web_entry *
*** 34928,34934 ****
    if (dump_file)
      {
        unsigned int new_uid = INSN_UID (new_insn);
!       fprintf (dump_file, "Replacing swap %d with copy %d\n", i, new_uid);
      }
  
    df_insn_delete (insn);
--- 35467,35476 ----
    if (dump_file)
      {
        unsigned int new_uid = INSN_UID (new_insn);
!       if (code == IOR)
! 	fprintf (dump_file, "Replacing vnor %d with copy %d\n", i, new_uid);
!       else
! 	fprintf (dump_file, "Replacing swap %d with copy %d\n", i, new_uid);
      }
  
    df_insn_delete (insn);
*************** dump_swap_insn_table (swap_web_entry *in
*** 34981,34986 ****
--- 35523,35536 ----
  	      fputs ("special:extract ", dump_file);
  	    else if (insn_entry[i].special_handling == SH_SPLAT)
  	      fputs ("special:splat ", dump_file);
+ 	    else if (insn_entry[i].special_handling == SH_XXPERMDI)
+ 	      fputs ("special:xxpermdi ", dump_file);
+ 	    else if (insn_entry[i].special_handling == SH_CONCAT)
+ 	      fputs ("special:concat ", dump_file);
+ 	    else if (insn_entry[i].special_handling == SH_VPERM)
+ 	      fputs ("special:vperm ", dump_file);
+ 	    else if (insn_entry[i].special_handling == SH_VPERM_COMP)
+ 	      fputs ("special:vperm_c ", dump_file);
  	  }
  	if (insn_entry[i].web_not_optimizable)
  	  fputs ("unoptimizable ", dump_file);
diff -Nrcpad gcc-5.4.0/gcc/config/rs6000/rs6000.md gcc-5.5.0/gcc/config/rs6000/rs6000.md
*** gcc-5.4.0/gcc/config/rs6000/rs6000.md	Mon Apr 25 22:28:36 2016
--- gcc-5.5.0/gcc/config/rs6000/rs6000.md	Tue Jun 27 21:45:45 2017
***************
*** 5335,5341 ****
  	(unspec:SFDF [(match_operand:SFDF 1 "gpc_reg_operand" "<Ff>,<Fv>")
  		      (match_operand:SFDF 2 "gpc_reg_operand" "<Ff>,<Fv>")]
  		     UNSPEC_COPYSIGN))]
!   "TARGET_<MODE>_FPR && TARGET_CMPB"
    "@
     fcpsgn %0,%2,%1
     xscpsgndp %x0,%x2,%x1"
--- 5335,5341 ----
  	(unspec:SFDF [(match_operand:SFDF 1 "gpc_reg_operand" "<Ff>,<Fv>")
  		      (match_operand:SFDF 2 "gpc_reg_operand" "<Ff>,<Fv>")]
  		     UNSPEC_COPYSIGN))]
!   "TARGET_<MODE>_FPR && (TARGET_CMPB || VECTOR_UNIT_VSX_P (<MODE>mode))"
    "@
     fcpsgn %0,%2,%1
     xscpsgndp %x0,%x2,%x1"
***************
*** 6098,6114 ****
    [(set_attr "length" "12")
     (set_attr "type" "fp")])
  
! (define_expand "fixuns_trunc<mode>di2"
!   [(set (match_operand:DI 0 "register_operand" "")
! 	(unsigned_fix:DI (match_operand:SFDF 1 "register_operand" "")))]
!   "TARGET_HARD_FLOAT && (TARGET_FCTIDUZ || VECTOR_UNIT_VSX_P (<MODE>mode))"
!   "")
! 
! (define_insn "*fixuns_trunc<mode>di2_fctiduz"
    [(set (match_operand:DI 0 "gpc_reg_operand" "=d,wi")
  	(unsigned_fix:DI (match_operand:SFDF 1 "gpc_reg_operand" "<Ff>,<Fa>")))]
!   "TARGET_HARD_FLOAT && TARGET_DOUBLE_FLOAT && TARGET_FPRS
!     && TARGET_FCTIDUZ"
    "@
     fctiduz %0,%1
     xscvdpuxds %x0,%x1"
--- 6098,6107 ----
    [(set_attr "length" "12")
     (set_attr "type" "fp")])
  
! (define_insn "fixuns_trunc<mode>di2"
    [(set (match_operand:DI 0 "gpc_reg_operand" "=d,wi")
  	(unsigned_fix:DI (match_operand:SFDF 1 "gpc_reg_operand" "<Ff>,<Fa>")))]
!   "TARGET_HARD_FLOAT && TARGET_DOUBLE_FLOAT && TARGET_FPRS && TARGET_FCTIDUZ"
    "@
     fctiduz %0,%1
     xscvdpuxds %x0,%x1"
***************
*** 8905,8911 ****
    rtx gpr_lo_reg = gen_lowpart (DFmode, dest);
  
    emit_insn (gen_p8_mfvsrd_3_<mode> (gpr_hi_reg, src));
!   emit_insn (gen_vsx_xxpermdi_<mode> (tmp, src, src, GEN_INT (3)));
    emit_insn (gen_p8_mfvsrd_3_<mode> (gpr_lo_reg, tmp));
  }
    [(set_attr "length" "12")
--- 8898,8904 ----
    rtx gpr_lo_reg = gen_lowpart (DFmode, dest);
  
    emit_insn (gen_p8_mfvsrd_3_<mode> (gpr_hi_reg, src));
!   emit_insn (gen_vsx_xxpermdi_<mode>_be (tmp, src, src, GEN_INT (3)));
    emit_insn (gen_p8_mfvsrd_3_<mode> (gpr_lo_reg, tmp));
  }
    [(set_attr "length" "12")
***************
*** 12987,12993 ****
  			  (const_int 1))
  		      (label_ref (match_operand 0 "" ""))
  		      (pc)))
!    (set (match_operand:P 2 "nonimmediate_operand" "=1,*r,m,*d*c*l")
  	(plus:P (match_dup 1)
  		 (const_int -1)))
     (clobber (match_scratch:CC 3 "=X,&x,&x,&x"))
--- 12980,12986 ----
  			  (const_int 1))
  		      (label_ref (match_operand 0 "" ""))
  		      (pc)))
!    (set (match_operand:P 2 "nonimmediate_operand" "=1,*r,m,*d*wi*c*l")
  	(plus:P (match_dup 1)
  		 (const_int -1)))
     (clobber (match_scratch:CC 3 "=X,&x,&x,&x"))
***************
*** 13011,13017 ****
  			  (const_int 1))
  		      (pc)
  		      (label_ref (match_operand 0 "" ""))))
!    (set (match_operand:P 2 "nonimmediate_operand" "=1,*r,m,*d*c*l")
  	(plus:P (match_dup 1)
  		 (const_int -1)))
     (clobber (match_scratch:CC 3 "=X,&x,&x,&x"))
--- 13004,13010 ----
  			  (const_int 1))
  		      (pc)
  		      (label_ref (match_operand 0 "" ""))))
!    (set (match_operand:P 2 "nonimmediate_operand" "=1,*r,m,*d*wi*c*l")
  	(plus:P (match_dup 1)
  		 (const_int -1)))
     (clobber (match_scratch:CC 3 "=X,&x,&x,&x"))
***************
*** 13037,13043 ****
  			  (const_int 1))
  		      (label_ref (match_operand 0 "" ""))
  		      (pc)))
!    (set (match_operand:P 2 "nonimmediate_operand" "=1,*r,m,*d*c*l")
  	(plus:P (match_dup 1)
  		 (const_int -1)))
     (clobber (match_scratch:CC 3 "=X,&x,&x,&x"))
--- 13030,13036 ----
  			  (const_int 1))
  		      (label_ref (match_operand 0 "" ""))
  		      (pc)))
!    (set (match_operand:P 2 "nonimmediate_operand" "=1,*r,m,*d*wi*c*l")
  	(plus:P (match_dup 1)
  		 (const_int -1)))
     (clobber (match_scratch:CC 3 "=X,&x,&x,&x"))
***************
*** 13061,13067 ****
  			  (const_int 1))
  		      (pc)
  		      (label_ref (match_operand 0 "" ""))))
!    (set (match_operand:P 2 "nonimmediate_operand" "=1,*r,m,*d*c*l")
  	(plus:P (match_dup 1)
  		 (const_int -1)))
     (clobber (match_scratch:CC 3 "=X,&x,&x,&x"))
--- 13054,13060 ----
  			  (const_int 1))
  		      (pc)
  		      (label_ref (match_operand 0 "" ""))))
!    (set (match_operand:P 2 "nonimmediate_operand" "=1,*r,m,*d*wi*c*l")
  	(plus:P (match_dup 1)
  		 (const_int -1)))
     (clobber (match_scratch:CC 3 "=X,&x,&x,&x"))
diff -Nrcpad gcc-5.4.0/gcc/config/rs6000/rs6000.opt gcc-5.5.0/gcc/config/rs6000/rs6000.opt
*** gcc-5.4.0/gcc/config/rs6000/rs6000.opt	Mon Aug 24 19:11:02 2015
--- gcc-5.5.0/gcc/config/rs6000/rs6000.opt	Wed Feb  8 21:44:37 2017
*************** Use AltiVec instructions
*** 142,152 ****
  
  maltivec=le
  Target Report RejectNegative Var(rs6000_altivec_element_order, 1) Save
! Generate Altivec instructions using little-endian element order
  
  maltivec=be
  Target Report RejectNegative Var(rs6000_altivec_element_order, 2)
! Generate Altivec instructions using big-endian element order
  
  mhard-dfp
  Target Report Mask(DFP) Var(rs6000_isa_flags)
--- 142,152 ----
  
  maltivec=le
  Target Report RejectNegative Var(rs6000_altivec_element_order, 1) Save
! Generate AltiVec instructions using little-endian element order
  
  maltivec=be
  Target Report RejectNegative Var(rs6000_altivec_element_order, 2)
! Generate AltiVec instructions using big-endian element order
  
  mhard-dfp
  Target Report Mask(DFP) Var(rs6000_isa_flags)
diff -Nrcpad gcc-5.4.0/gcc/config/rs6000/vector.md gcc-5.5.0/gcc/config/rs6000/vector.md
*** gcc-5.4.0/gcc/config/rs6000/vector.md	Thu Aug 27 18:34:54 2015
--- gcc-5.5.0/gcc/config/rs6000/vector.md	Tue Jun 27 18:24:51 2017
***************
*** 480,492 ****
  	(gt:VEC_F (match_dup 2)
  		  (match_dup 1)))
     (set (match_dup 0)
! 	(not:VEC_F (ior:VEC_F (match_dup 3)
! 			      (match_dup 4))))]
!   "
  {
    operands[3] = gen_reg_rtx (<MODE>mode);
    operands[4] = gen_reg_rtx (<MODE>mode);
! }")
  
  (define_insn_and_split "*vector_ltgt<mode>"
    [(set (match_operand:VEC_F 0 "vfloat_operand" "")
--- 480,491 ----
  	(gt:VEC_F (match_dup 2)
  		  (match_dup 1)))
     (set (match_dup 0)
! 	(and:VEC_F (not:VEC_F (match_dup 3))
! 		   (not:VEC_F (match_dup 4))))]
  {
    operands[3] = gen_reg_rtx (<MODE>mode);
    operands[4] = gen_reg_rtx (<MODE>mode);
! })
  
  (define_insn_and_split "*vector_ltgt<mode>"
    [(set (match_operand:VEC_F 0 "vfloat_operand" "")
diff -Nrcpad gcc-5.4.0/gcc/config/rs6000/vsx.md gcc-5.5.0/gcc/config/rs6000/vsx.md
*** gcc-5.4.0/gcc/config/rs6000/vsx.md	Tue May 10 16:07:04 2016
--- gcc-5.5.0/gcc/config/rs6000/vsx.md	Wed Feb 22 22:54:56 2017
***************
*** 716,728 ****
    [(set (match_operand:VSX_M 0 "vsx_register_operand" "")
  	(match_operand:VSX_M 1 "memory_operand" ""))]
    "VECTOR_MEM_VSX_P (<MODE>mode)"
!   "")
  
  (define_expand "vsx_store_<mode>"
    [(set (match_operand:VSX_M 0 "memory_operand" "")
  	(match_operand:VSX_M 1 "vsx_register_operand" ""))]
    "VECTOR_MEM_VSX_P (<MODE>mode)"
!   "")
  
  
  ;; VSX vector floating point arithmetic instructions.  The VSX scalar
--- 716,742 ----
    [(set (match_operand:VSX_M 0 "vsx_register_operand" "")
  	(match_operand:VSX_M 1 "memory_operand" ""))]
    "VECTOR_MEM_VSX_P (<MODE>mode)"
! {
!   /* Expand to swaps if needed, prior to swap optimization.  */
!   if (!BYTES_BIG_ENDIAN)
!     {
!       rs6000_emit_le_vsx_move (operands[0], operands[1], <MODE>mode);
!       DONE;
!     }
! })
  
  (define_expand "vsx_store_<mode>"
    [(set (match_operand:VSX_M 0 "memory_operand" "")
  	(match_operand:VSX_M 1 "vsx_register_operand" ""))]
    "VECTOR_MEM_VSX_P (<MODE>mode)"
! {
!   /* Expand to swaps if needed, prior to swap optimization.  */
!   if (!BYTES_BIG_ENDIAN)
!     {
!       rs6000_emit_le_vsx_move (operands[0], operands[1], <MODE>mode);
!       DONE;
!     }
! })
  
  
  ;; VSX vector floating point arithmetic instructions.  The VSX scalar
***************
*** 1487,1505 ****
    [(set_attr "type" "vecdouble")])
  
  (define_insn "vsx_xvcvsxdsp"
!   [(set (match_operand:V4SI 0 "vsx_register_operand" "=wd,?wa")
! 	(unspec:V4SI [(match_operand:V2DF 1 "vsx_register_operand" "wf,wa")]
  		     UNSPEC_VSX_CVSXDSP))]
    "VECTOR_UNIT_VSX_P (V2DFmode)"
    "xvcvsxdsp %x0,%x1"
    [(set_attr "type" "vecfloat")])
  
  (define_insn "vsx_xvcvuxdsp"
!   [(set (match_operand:V4SI 0 "vsx_register_operand" "=wd,?wa")
! 	(unspec:V4SI [(match_operand:V2DF 1 "vsx_register_operand" "wf,wa")]
  		     UNSPEC_VSX_CVUXDSP))]
    "VECTOR_UNIT_VSX_P (V2DFmode)"
!   "xvcvuxwdp %x0,%x1"
    [(set_attr "type" "vecdouble")])
  
  ;; Convert from 32-bit to 64-bit types
--- 1501,1519 ----
    [(set_attr "type" "vecdouble")])
  
  (define_insn "vsx_xvcvsxdsp"
!   [(set (match_operand:V4SF 0 "vsx_register_operand" "=wd,?wa")
! 	(unspec:V4SF [(match_operand:V2DI 1 "vsx_register_operand" "wf,wa")]
  		     UNSPEC_VSX_CVSXDSP))]
    "VECTOR_UNIT_VSX_P (V2DFmode)"
    "xvcvsxdsp %x0,%x1"
    [(set_attr "type" "vecfloat")])
  
  (define_insn "vsx_xvcvuxdsp"
!   [(set (match_operand:V4SF 0 "vsx_register_operand" "=wd,?wa")
! 	(unspec:V4SF [(match_operand:V2DI 1 "vsx_register_operand" "wf,wa")]
  		     UNSPEC_VSX_CVUXDSP))]
    "VECTOR_UNIT_VSX_P (V2DFmode)"
!   "xvcvuxdsp %x0,%x1"
    [(set_attr "type" "vecdouble")])
  
  ;; Convert from 32-bit to 64-bit types
***************
*** 1911,1916 ****
--- 1925,1962 ----
    [(match_operand:VSX_L 0 "vsx_register_operand" "")
     (match_operand:VSX_L 1 "vsx_register_operand" "")
     (match_operand:VSX_L 2 "vsx_register_operand" "")
+    (match_operand:QI 3 "u5bit_cint_operand" "")]
+   "VECTOR_MEM_VSX_P (<MODE>mode)"
+ {
+   rtx target = operands[0];
+   rtx op0 = operands[1];
+   rtx op1 = operands[2];
+   int mask = INTVAL (operands[3]);
+   rtx perm0 = GEN_INT ((mask >> 1) & 1);
+   rtx perm1 = GEN_INT ((mask & 1) + 2);
+   rtx (*gen) (rtx, rtx, rtx, rtx, rtx);
+ 
+   if (<MODE>mode == V2DFmode)
+     gen = gen_vsx_xxpermdi2_v2df_1;
+   else
+     {
+       gen = gen_vsx_xxpermdi2_v2di_1;
+       if (<MODE>mode != V2DImode)
+ 	{
+ 	  target = gen_lowpart (V2DImode, target);
+ 	  op0 = gen_lowpart (V2DImode, op0);
+ 	  op1 = gen_lowpart (V2DImode, op1);
+ 	}
+     }
+   emit_insn (gen (target, op0, op1, perm0, perm1));
+   DONE;
+ })
+ 
+ ;; Special version of xxpermdi that retains big-endian semantics.
+ (define_expand "vsx_xxpermdi_<mode>_be"
+   [(match_operand:VSX_L 0 "vsx_register_operand" "")
+    (match_operand:VSX_L 1 "vsx_register_operand" "")
+    (match_operand:VSX_L 2 "vsx_register_operand" "")
     (match_operand:QI 3 "u5bit_cint_operand" "")]
    "VECTOR_MEM_VSX_P (<MODE>mode)"
  {
diff -Nrcpad gcc-5.4.0/gcc/config/s390/s390-modes.def gcc-5.5.0/gcc/config/s390/s390-modes.def
*** gcc-5.4.0/gcc/config/s390/s390-modes.def	Thu Jul  2 15:53:33 2015
--- gcc-5.5.0/gcc/config/s390/s390-modes.def	Fri Dec  2 08:51:58 2016
*************** Requested mode            -> Destination
*** 84,105 ****
  CCS, CCU, CCT, CCSR, CCUR -> CCZ
  CCA                       -> CCAP, CCAN
  
- Vector comparison modes
- 
- CCVEQ  	  EQ	  - 	       - 	   NE	      (VCEQ)
- CCVEQANY  EQ	  EQ	       - 	   NE	      (VCEQ)
- 
- CCVH	  GT	  - 	       - 	   LE	      (VCH)
- CCVHANY	  GT	  GT	       - 	   LE	      (VCH)
- CCVHU	  GTU	  -  	       -  	   LEU	      (VCHL)
- CCVHUANY  GTU	  GTU	       -  	   LEU	      (VCHL)
- 
- CCVFH	  GT	  -   	       -   	   UNLE	      (VFCH)
- CCVFHANY  GT	  GT	       -   	   UNLE	      (VFCH)
- CCVFHE	  GE	  -   	       -   	   UNLT	      (VFCHE)
- CCVFHEANY GE	  GE	       -   	   UNLT	      (VFCHE)
- 
- 
  
  
  *** Comments ***
--- 84,89 ----
*************** The compare and swap instructions sets t
*** 169,182 ****
  operands were equal/unequal. The CCZ1 mode ensures the result can be
  effectively placed into a register.
  
  
! CCV*
  
! The variants with and without ANY are generated by the same
! instructions and therefore are holding the same information.  However,
! when generating a condition code mask they require checking different
! bits of CC.  In that case the variants without ANY represent the
! results for *all* elements.
  
  CCRAW
  
--- 153,192 ----
  operands were equal/unequal. The CCZ1 mode ensures the result can be
  effectively placed into a register.
  
+ CCVIH, CCVIHU, CCVFH, CCVFHE
+ 
+ These are condition code modes used in instructions setting the
+ condition code.  The mode determines which comparison to perform (H -
+ high, HU - high unsigned, HE - high or equal) and whether it is a
+ floating point comparison or not (I - int, F - float).
  
! The comparison operation to be performed needs to be encoded into the
! condition code mode since the comparison operator is not available in
! compare style patterns (set cc (compare (op0) (op1))).  So the
! condition code mode is the only information to determine the
! instruction to be used.
  
! CCVIALL, CCVIANY, CCVFALL, CCVFANY
! 
! These modes are used in instructions reading the condition code.
! Opposed to the CC producer patterns the comparison operator is
! available.  Hence the comparison operation does not need to be part of
! the CC mode.  However, we still need to know whether CC has been
! generated by a float or an integer comparison in order to be able to
! invert the condition correctly (int: GT -> LE, float: GT -> UNLE).
! 
! The ALL and ANY variants differ only in the usage of CC1 which
! indicates a mixed result across the vector elements.  Be aware that
! depending on the comparison code the ALL and ANY variants might
! actually refer to their opposite meaning.  I.e. while inverting the
! comparison in (EQ (reg:CCVIALL 33) (const_int 0)) results in (NE
! (reg:CCVIALL 33) (const_int 0)) it in fact describes an ANY comparison
! (inverting "all equal" should be "any not equal") However, the
! middle-end does invert only the comparison operator without touching
! the mode.
! Hence, the ALL/ANY in the mode names refer to the meaning in the
! context of EQ, GT, GE while for the inverted codes it actually means
! ANY/ALL.
  
  CCRAW
  
*************** CC_MODE (CCT3);
*** 209,226 ****
  CC_MODE (CCRAW);
  
  CC_MODE (CCVEQ);
- CC_MODE (CCVEQANY);
  
! CC_MODE (CCVH);
! CC_MODE (CCVHANY);
! CC_MODE (CCVHU);
! CC_MODE (CCVHUANY);
  
  CC_MODE (CCVFH);
- CC_MODE (CCVFHANY);
  CC_MODE (CCVFHE);
- CC_MODE (CCVFHEANY);
  
  
  /* Vector modes.  */
  
--- 219,236 ----
  CC_MODE (CCRAW);
  
  CC_MODE (CCVEQ);
  
! CC_MODE (CCVIH);
! CC_MODE (CCVIHU);
  
  CC_MODE (CCVFH);
  CC_MODE (CCVFHE);
  
+ CC_MODE (CCVIALL);
+ CC_MODE (CCVIANY);
+ 
+ CC_MODE (CCVFALL);
+ CC_MODE (CCVFANY);
  
  /* Vector modes.  */
  
diff -Nrcpad gcc-5.4.0/gcc/config/s390/s390.c gcc-5.5.0/gcc/config/s390/s390.c
*** gcc-5.4.0/gcc/config/s390/s390.c	Wed Apr 20 07:09:32 2016
--- gcc-5.5.0/gcc/config/s390/s390.c	Fri Dec  2 08:51:58 2016
*************** s390_expand_builtin (tree exp, rtx targe
*** 785,791 ****
  		     machine_mode mode ATTRIBUTE_UNUSED,
  		     int ignore ATTRIBUTE_UNUSED)
  {
! #define MAX_ARGS 5
  
    tree fndecl = TREE_OPERAND (CALL_EXPR_FN (exp), 0);
    unsigned int fcode = DECL_FUNCTION_CODE (fndecl);
--- 785,791 ----
  		     machine_mode mode ATTRIBUTE_UNUSED,
  		     int ignore ATTRIBUTE_UNUSED)
  {
! #define MAX_ARGS 6
  
    tree fndecl = TREE_OPERAND (CALL_EXPR_FN (exp), 0);
    unsigned int fcode = DECL_FUNCTION_CODE (fndecl);
*************** s390_match_ccmode_set (rtx set, machine_
*** 1242,1247 ****
--- 1242,1252 ----
  
    gcc_assert (GET_CODE (set) == SET);
  
+   /* These modes are supposed to be used only in CC consumer
+      patterns.  */
+   gcc_assert (req_mode != CCVIALLmode && req_mode != CCVIANYmode
+ 	      && req_mode != CCVFALLmode && req_mode != CCVFANYmode);
+ 
    if (GET_CODE (SET_DEST (set)) != REG || !CC_REGNO_P (REGNO (SET_DEST (set))))
      return 1;
  
*************** s390_match_ccmode_set (rtx set, machine_
*** 1260,1267 ****
      case CCT2mode:
      case CCT3mode:
      case CCVEQmode:
!     case CCVHmode:
!     case CCVHUmode:
      case CCVFHmode:
      case CCVFHEmode:
        if (req_mode != set_mode)
--- 1265,1272 ----
      case CCT2mode:
      case CCT3mode:
      case CCVEQmode:
!     case CCVIHmode:
!     case CCVIHUmode:
      case CCVFHmode:
      case CCVFHEmode:
        if (req_mode != set_mode)
*************** s390_expand_vec_compare_scalar (enum rtx
*** 1719,1732 ****
        cmp2 = cmp1;
        cmp1 = tmp;
      }
!   *cc = gen_rtx_REG (cmp_mode, CC_REGNUM);
    emit_insn (gen_rtx_PARALLEL (VOIDmode,
  	       gen_rtvec (2,
! 			  gen_rtx_SET (VOIDmode, *cc,
  				       gen_rtx_COMPARE (cmp_mode, cmp1,
  							cmp2)),
  			  gen_rtx_CLOBBER (VOIDmode,
  					   gen_rtx_SCRATCH (V2DImode)))));
    return true;
  }
  
--- 1724,1744 ----
        cmp2 = cmp1;
        cmp1 = tmp;
      }
! 
    emit_insn (gen_rtx_PARALLEL (VOIDmode,
  	       gen_rtvec (2,
! 			  gen_rtx_SET (VOIDmode,
! 				       gen_rtx_REG (cmp_mode, CC_REGNUM),
  				       gen_rtx_COMPARE (cmp_mode, cmp1,
  							cmp2)),
  			  gen_rtx_CLOBBER (VOIDmode,
  					   gen_rtx_SCRATCH (V2DImode)))));
+ 
+   /* This is the cc reg how it will be used in the cc mode consumer.
+      It either needs to be CCVFALL or CCVFANY.  However, CC1 will
+      never be set by the scalar variants.  So it actually doesn't
+      matter which one we choose here.  */
+   *cc = gen_rtx_REG (CCVFALLmode, CC_REGNUM);
    return true;
  }
  
*************** s390_branch_condition_mask (rtx code)
*** 1988,2079 ****
        break;
  
        /* Vector comparison modes.  */
! 
!     case CCVEQmode:
!       switch (GET_CODE (code))
! 	{
! 	case EQ:        return CC0;
! 	case NE:        return CC3;
! 	default:        return -1;
! 	}
! 
!     case CCVEQANYmode:
!       switch (GET_CODE (code))
! 	{
! 	case EQ:        return CC0 | CC1;
! 	case NE:        return CC3 | CC1;
! 	default:        return -1;
! 	}
! 
!       /* Integer vector compare modes.  */
! 
!     case CCVHmode:
!       switch (GET_CODE (code))
! 	{
! 	case GT:        return CC0;
! 	case LE:        return CC3;
! 	default:        return -1;
! 	}
! 
!     case CCVHANYmode:
!       switch (GET_CODE (code))
! 	{
! 	case GT:        return CC0 | CC1;
! 	case LE:        return CC3 | CC1;
! 	default:        return -1;
! 	}
! 
!     case CCVHUmode:
!       switch (GET_CODE (code))
! 	{
! 	case GTU:       return CC0;
! 	case LEU:       return CC3;
! 	default:        return -1;
! 	}
! 
!     case CCVHUANYmode:
!       switch (GET_CODE (code))
! 	{
! 	case GTU:       return CC0 | CC1;
! 	case LEU:       return CC3 | CC1;
! 	default:        return -1;
! 	}
! 
!       /* FP vector compare modes.  */
! 
!     case CCVFHmode:
        switch (GET_CODE (code))
  	{
! 	case GT:        return CC0;
! 	case UNLE:      return CC3;
  	default:        return -1;
  	}
  
!     case CCVFHANYmode:
        switch (GET_CODE (code))
  	{
! 	case GT:        return CC0 | CC1;
! 	case UNLE:      return CC3 | CC1;
  	default:        return -1;
  	}
! 
!     case CCVFHEmode:
        switch (GET_CODE (code))
  	{
  	case GE:        return CC0;
! 	case UNLT:      return CC3;
  	default:        return -1;
  	}
  
!     case CCVFHEANYmode:
        switch (GET_CODE (code))
  	{
  	case GE:        return CC0 | CC1;
! 	case UNLT:      return CC3 | CC1;
  	default:        return -1;
  	}
  
- 
      case CCRAWmode:
        switch (GET_CODE (code))
  	{
--- 2000,2062 ----
        break;
  
        /* Vector comparison modes.  */
!       /* CC2 will never be set.  It however is part of the negated
! 	 masks.  */
!     case CCVIALLmode:
        switch (GET_CODE (code))
  	{
! 	case EQ:
! 	case GTU:
! 	case GT:
! 	case GE:        return CC0;
! 	  /* The inverted modes are in fact *any* modes.  */
! 	case NE:
! 	case LEU:
! 	case LE:
! 	case LT:        return CC3 | CC1 | CC2;
  	default:        return -1;
  	}
  
!     case CCVIANYmode:
        switch (GET_CODE (code))
  	{
! 	case EQ:
! 	case GTU:
! 	case GT:
! 	case GE:        return CC0 | CC1;
! 	  /* The inverted modes are in fact *all* modes.  */
! 	case NE:
! 	case LEU:
! 	case LE:
! 	case LT:        return CC3 | CC2;
  	default:        return -1;
  	}
!     case CCVFALLmode:
        switch (GET_CODE (code))
  	{
+ 	case EQ:
+ 	case GT:
  	case GE:        return CC0;
! 	  /* The inverted modes are in fact *any* modes.  */
! 	case NE:
! 	case UNLE:
! 	case UNLT:      return CC3 | CC1 | CC2;
  	default:        return -1;
  	}
  
!     case CCVFANYmode:
        switch (GET_CODE (code))
  	{
+ 	case EQ:
+ 	case GT:
  	case GE:        return CC0 | CC1;
! 	  /* The inverted modes are in fact *all* modes.  */
! 	case NE:
! 	case UNLE:
! 	case UNLT:      return CC3 | CC2;
  	default:        return -1;
  	}
  
      case CCRAWmode:
        switch (GET_CODE (code))
  	{
*************** s390_expand_vec_compare (rtx target, enu
*** 6128,6140 ****
  
  /* Expand the comparison CODE of CMP1 and CMP2 and copy 1 or 0 into
     TARGET if either all (ALL_P is true) or any (ALL_P is false) of the
!    elements in CMP1 and CMP2 fulfill the comparison.  */
  void
  s390_expand_vec_compare_cc (rtx target, enum rtx_code code,
  			    rtx cmp1, rtx cmp2, bool all_p)
  {
!   enum rtx_code new_code = code;
!   machine_mode cmp_mode, full_cmp_mode, scratch_mode;
    rtx tmp_reg = gen_reg_rtx (SImode);
    bool swap_p = false;
  
--- 6111,6125 ----
  
  /* Expand the comparison CODE of CMP1 and CMP2 and copy 1 or 0 into
     TARGET if either all (ALL_P is true) or any (ALL_P is false) of the
!    elements in CMP1 and CMP2 fulfill the comparison.
!    This function is only used to emit patterns for the vx builtins and
!    therefore only handles comparison codes required by the
!    builtins.  */
  void
  s390_expand_vec_compare_cc (rtx target, enum rtx_code code,
  			    rtx cmp1, rtx cmp2, bool all_p)
  {
!   machine_mode cc_producer_mode, cc_consumer_mode, scratch_mode;
    rtx tmp_reg = gen_reg_rtx (SImode);
    bool swap_p = false;
  
*************** s390_expand_vec_compare_cc (rtx target,
*** 6142,6194 ****
      {
        switch (code)
  	{
! 	case EQ:  cmp_mode = CCVEQmode; break;
! 	case NE:  cmp_mode = CCVEQmode; break;
! 	case GT:  cmp_mode = CCVHmode;  break;
! 	case GE:  cmp_mode = CCVHmode;  new_code = LE; swap_p = true; break;
! 	case LT:  cmp_mode = CCVHmode;  new_code = GT; swap_p = true; break;
! 	case LE:  cmp_mode = CCVHmode;  new_code = LE; break;
! 	case GTU: cmp_mode = CCVHUmode; break;
! 	case GEU: cmp_mode = CCVHUmode; new_code = LEU; swap_p = true; break;
! 	case LTU: cmp_mode = CCVHUmode; new_code = GTU; swap_p = true; break;
! 	case LEU: cmp_mode = CCVHUmode; new_code = LEU; break;
! 	default: gcc_unreachable ();
  	}
        scratch_mode = GET_MODE (cmp1);
      }
!   else if (GET_MODE (cmp1) == V2DFmode)
      {
        switch (code)
  	{
! 	case EQ:   cmp_mode = CCVEQmode;  break;
! 	case NE:   cmp_mode = CCVEQmode;  break;
! 	case GT:   cmp_mode = CCVFHmode;  break;
! 	case GE:   cmp_mode = CCVFHEmode; break;
! 	case UNLE: cmp_mode = CCVFHmode;  break;
! 	case UNLT: cmp_mode = CCVFHEmode; break;
! 	case LT:   cmp_mode = CCVFHmode;  new_code = GT; swap_p = true; break;
! 	case LE:   cmp_mode = CCVFHEmode; new_code = GE; swap_p = true; break;
  	default: gcc_unreachable ();
  	}
!       scratch_mode = V2DImode;
      }
    else
      gcc_unreachable ();
  
-   if (!all_p)
-     switch (cmp_mode)
-       {
-       case CCVEQmode:  full_cmp_mode = CCVEQANYmode;  break;
-       case CCVHmode:   full_cmp_mode = CCVHANYmode;   break;
-       case CCVHUmode:  full_cmp_mode = CCVHUANYmode;  break;
-       case CCVFHmode:  full_cmp_mode = CCVFHANYmode;  break;
-       case CCVFHEmode: full_cmp_mode = CCVFHEANYmode; break;
-       default: gcc_unreachable ();
-       }
-   else
-     /* The modes without ANY match the ALL modes.  */
-     full_cmp_mode = cmp_mode;
- 
    if (swap_p)
      {
        rtx tmp = cmp2;
--- 6127,6197 ----
      {
        switch (code)
  	{
! 	case EQ:
! 	case NE:
! 	  cc_producer_mode = CCVEQmode;
! 	  break;
! 	case GE:
! 	case LT:
! 	  code = swap_condition (code);
! 	  swap_p = true;
! 	  /* fallthrough */
! 	case GT:
! 	case LE:
! 	  cc_producer_mode = CCVIHmode;
! 	  break;
! 	case GEU:
! 	case LTU:
! 	  code = swap_condition (code);
! 	  swap_p = true;
! 	  /* fallthrough */
! 	case GTU:
! 	case LEU:
! 	  cc_producer_mode = CCVIHUmode;
! 	  break;
! 	default:
! 	  gcc_unreachable ();
  	}
+ 
        scratch_mode = GET_MODE (cmp1);
+       /* These codes represent inverted CC interpretations.  Inverting
+ 	 an ALL CC mode results in an ANY CC mode and the other way
+ 	 around.  Invert the all_p flag here to compensate for
+ 	 that.  */
+       if (code == NE || code == LE || code == LEU)
+ 	all_p = !all_p;
+ 
+       cc_consumer_mode = all_p ? CCVIALLmode : CCVIANYmode;
      }
!   else if (GET_MODE_CLASS (GET_MODE (cmp1)) == MODE_VECTOR_FLOAT)
      {
+       bool inv_p = false;
+ 
        switch (code)
  	{
! 	case EQ:   cc_producer_mode = CCVEQmode;  break;
! 	case NE:   cc_producer_mode = CCVEQmode;  inv_p = true; break;
! 	case GT:   cc_producer_mode = CCVFHmode;  break;
! 	case GE:   cc_producer_mode = CCVFHEmode; break;
! 	case UNLE: cc_producer_mode = CCVFHmode;  inv_p = true; break;
! 	case UNLT: cc_producer_mode = CCVFHEmode; inv_p = true; break;
! 	case LT:   cc_producer_mode = CCVFHmode;  code = GT; swap_p = true; break;
! 	case LE:   cc_producer_mode = CCVFHEmode; code = GE; swap_p = true; break;
  	default: gcc_unreachable ();
  	}
!       scratch_mode = mode_for_vector (
! 		       int_mode_for_mode (GET_MODE_INNER (GET_MODE (cmp1))),
! 		       GET_MODE_NUNITS (GET_MODE (cmp1)));
!       gcc_assert (scratch_mode != BLKmode);
! 
!       if (inv_p)
! 	all_p = !all_p;
! 
!       cc_consumer_mode = all_p ? CCVFALLmode : CCVFANYmode;
      }
    else
      gcc_unreachable ();
  
    if (swap_p)
      {
        rtx tmp = cmp2;
*************** s390_expand_vec_compare_cc (rtx target,
*** 6197,6205 ****
      }
  
    emit_insn (gen_rtx_PARALLEL (VOIDmode,
! 	       gen_rtvec (2, gen_rtx_SET (VOIDmode,
! 			       gen_rtx_REG (cmp_mode, CC_REGNUM),
! 			       gen_rtx_COMPARE (cmp_mode, cmp1, cmp2)),
  			  gen_rtx_CLOBBER (VOIDmode,
  					   gen_rtx_SCRATCH (scratch_mode)))));
    emit_move_insn (target, const0_rtx);
--- 6200,6208 ----
      }
  
    emit_insn (gen_rtx_PARALLEL (VOIDmode,
! 			  gen_rtvec (2, gen_rtx_SET (VOIDmode,
! 			       gen_rtx_REG (cc_producer_mode, CC_REGNUM),
! 			       gen_rtx_COMPARE (cc_producer_mode, cmp1, cmp2)),
  			  gen_rtx_CLOBBER (VOIDmode,
  					   gen_rtx_SCRATCH (scratch_mode)))));
    emit_move_insn (target, const0_rtx);
*************** s390_expand_vec_compare_cc (rtx target,
*** 6207,6216 ****
  
    emit_move_insn (target,
  		  gen_rtx_IF_THEN_ELSE (SImode,
! 		    gen_rtx_fmt_ee (new_code, VOIDmode,
! 				    gen_rtx_REG (full_cmp_mode, CC_REGNUM),
  				    const0_rtx),
! 		      target, tmp_reg));
  }
  
  /* Generate a vector comparison expression loading either elements of
--- 6210,6219 ----
  
    emit_move_insn (target,
  		  gen_rtx_IF_THEN_ELSE (SImode,
! 		    gen_rtx_fmt_ee (code, VOIDmode,
! 				    gen_rtx_REG (cc_consumer_mode, CC_REGNUM),
  				    const0_rtx),
! 					tmp_reg, target));
  }
  
  /* Generate a vector comparison expression loading either elements of
diff -Nrcpad gcc-5.4.0/gcc/config/s390/s390.md gcc-5.5.0/gcc/config/s390/s390.md
*** gcc-5.4.0/gcc/config/s390/s390.md	Tue May 10 09:03:20 2016
--- gcc-5.5.0/gcc/config/s390/s390.md	Fri Dec  2 08:51:58 2016
***************
*** 745,751 ****
  ; Used with VFCMP to expand part of the mnemonic
  ; For fp we have a mismatch: eq in the insn name - e in asm
  (define_mode_attr asm_fcmp [(CCVEQ "e") (CCVFH "h") (CCVFHE "he")])
! (define_mode_attr insn_cmp [(CCVEQ "eq") (CCVH "h") (CCVHU "hl") (CCVFH "h") (CCVFHE "he")])
  
  
  (include "vector.md")
--- 745,751 ----
  ; Used with VFCMP to expand part of the mnemonic
  ; For fp we have a mismatch: eq in the insn name - e in asm
  (define_mode_attr asm_fcmp [(CCVEQ "e") (CCVFH "h") (CCVFHE "he")])
! (define_mode_attr insn_cmp [(CCVEQ "eq") (CCVIH "h") (CCVIHU "hl") (CCVFH "h") (CCVFHE "he")])
  
  
  (include "vector.md")
diff -Nrcpad gcc-5.4.0/gcc/config/s390/vx-builtins.md gcc-5.5.0/gcc/config/s390/vx-builtins.md
*** gcc-5.4.0/gcc/config/s390/vx-builtins.md	Thu Feb 25 11:10:37 2016
--- gcc-5.5.0/gcc/config/s390/vx-builtins.md	Fri Dec  2 08:51:58 2016
***************
*** 36,42 ****
  			      (V1DF "DI") (V2DF "DI")])
  
  ; Condition code modes generated by int comparisons
! (define_mode_iterator VICMP [CCVEQ CCVH CCVHU])
  
  ; Comparisons supported by the vec_cmp* builtins
  (define_code_iterator intcmp [eq gt gtu ge geu lt ltu le leu])
--- 36,42 ----
  			      (V1DF "DI") (V2DF "DI")])
  
  ; Condition code modes generated by int comparisons
! (define_mode_iterator VICMP [CCVEQ CCVIH CCVIHU])
  
  ; Comparisons supported by the vec_cmp* builtins
  (define_code_iterator intcmp [eq gt gtu ge geu lt ltu le leu])
***************
*** 1951,1974 ****
  
  (define_expand "vec_cmph<VI_HW:mode>_cc"
    [(parallel
!     [(set (reg:CCVH CC_REGNUM)
! 	  (compare:CCVH (match_operand:VI_HW 1 "register_operand" "v")
! 			(match_operand:VI_HW 2 "register_operand" "v")))
       (set (match_operand:VI_HW 0 "register_operand" "=v")
  	  (gt:VI_HW (match_dup 1) (match_dup 2)))])
     (set (match_operand:SI 3 "memory_operand" "")
! 	(unspec:SI [(reg:CCVH CC_REGNUM)] UNSPEC_CC_TO_INT))]
    "TARGET_VX")
  
  (define_expand "vec_cmphl<VI_HW:mode>_cc"
    [(parallel
!     [(set (reg:CCVHU CC_REGNUM)
! 	  (compare:CCVHU (match_operand:VI_HW 1 "register_operand" "v")
! 			 (match_operand:VI_HW 2 "register_operand" "v")))
       (set (match_operand:VI_HW 0 "register_operand" "=v")
  	  (gtu:VI_HW (match_dup 1) (match_dup 2)))])
     (set (match_operand:SI 3 "memory_operand" "")
! 	(unspec:SI [(reg:CCVHU CC_REGNUM)] UNSPEC_CC_TO_INT))]
    "TARGET_VX")
  
  
--- 1951,1974 ----
  
  (define_expand "vec_cmph<VI_HW:mode>_cc"
    [(parallel
!     [(set (reg:CCVIH CC_REGNUM)
! 	  (compare:CCVIH (match_operand:VI_HW 1 "register_operand" "v")
! 			 (match_operand:VI_HW 2 "register_operand" "v")))
       (set (match_operand:VI_HW 0 "register_operand" "=v")
  	  (gt:VI_HW (match_dup 1) (match_dup 2)))])
     (set (match_operand:SI 3 "memory_operand" "")
! 	(unspec:SI [(reg:CCVIH CC_REGNUM)] UNSPEC_CC_TO_INT))]
    "TARGET_VX")
  
  (define_expand "vec_cmphl<VI_HW:mode>_cc"
    [(parallel
!     [(set (reg:CCVIHU CC_REGNUM)
! 	  (compare:CCVIHU (match_operand:VI_HW 1 "register_operand" "v")
! 			  (match_operand:VI_HW 2 "register_operand" "v")))
       (set (match_operand:VI_HW 0 "register_operand" "=v")
  	  (gtu:VI_HW (match_dup 1) (match_dup 2)))])
     (set (match_operand:SI 3 "memory_operand" "")
! 	(unspec:SI [(reg:CCVIHU CC_REGNUM)] UNSPEC_CC_TO_INT))]
    "TARGET_VX")
  
  
***************
*** 1983,1991 ****
    [(set_attr "op_type" "VRR")])
  
  (define_insn "*vec_cmph<VI_HW:mode>_cc"
!   [(set (reg:CCVH CC_REGNUM)
! 	(compare:CCVH (match_operand:VI_HW 0 "register_operand"  "v")
! 		      (match_operand:VI_HW 1 "register_operand"  "v")))
     (set (match_operand:VI_HW               2 "register_operand" "=v")
  	(gt:VI_HW (match_dup 0) (match_dup 1)))]
    "TARGET_VX"
--- 1983,1991 ----
    [(set_attr "op_type" "VRR")])
  
  (define_insn "*vec_cmph<VI_HW:mode>_cc"
!   [(set (reg:CCVIH CC_REGNUM)
! 	(compare:CCVIH (match_operand:VI_HW 0 "register_operand"  "v")
! 		       (match_operand:VI_HW 1 "register_operand"  "v")))
     (set (match_operand:VI_HW               2 "register_operand" "=v")
  	(gt:VI_HW (match_dup 0) (match_dup 1)))]
    "TARGET_VX"
***************
*** 1993,2001 ****
    [(set_attr "op_type" "VRR")])
  
  (define_insn "*vec_cmphl<VI_HW:mode>_cc"
!   [(set (reg:CCVHU CC_REGNUM)
! 	(compare:CCVHU (match_operand:VI_HW 0 "register_operand"  "v")
! 		       (match_operand:VI_HW 1 "register_operand"  "v")))
     (set (match_operand:VI_HW                2 "register_operand" "=v")
  	(gtu:VI_HW (match_dup 0) (match_dup 1)))]
    "TARGET_VX"
--- 1993,2001 ----
    [(set_attr "op_type" "VRR")])
  
  (define_insn "*vec_cmphl<VI_HW:mode>_cc"
!   [(set (reg:CCVIHU CC_REGNUM)
! 	(compare:CCVIHU (match_operand:VI_HW 0 "register_operand"  "v")
! 			(match_operand:VI_HW 1 "register_operand"  "v")))
     (set (match_operand:VI_HW                2 "register_operand" "=v")
  	(gtu:VI_HW (match_dup 0) (match_dup 1)))]
    "TARGET_VX"
***************
*** 2029,2041 ****
  
  (define_expand "vec_cmphv2df_cc"
    [(parallel
!     [(set (reg:CCVH CC_REGNUM)
! 	  (compare:CCVH (match_operand:V2DF 1 "register_operand"  "v")
! 			(match_operand:V2DF 2 "register_operand"  "v")))
       (set (match_operand:V2DI 0 "register_operand" "=v")
  	  (gt:V2DI (match_dup 1) (match_dup 2)))])
     (set (match_operand:SI 3 "memory_operand" "")
! 	(unspec:SI [(reg:CCVH CC_REGNUM)] UNSPEC_CC_TO_INT))]
    "TARGET_VX")
  
  (define_expand "vec_cmphev2df_cc"
--- 2029,2041 ----
  
  (define_expand "vec_cmphv2df_cc"
    [(parallel
!     [(set (reg:CCVIH CC_REGNUM)
! 	  (compare:CCVIH (match_operand:V2DF 1 "register_operand"  "v")
! 			 (match_operand:V2DF 2 "register_operand"  "v")))
       (set (match_operand:V2DI 0 "register_operand" "=v")
  	  (gt:V2DI (match_dup 1) (match_dup 2)))])
     (set (match_operand:SI 3 "memory_operand" "")
! 	(unspec:SI [(reg:CCVIH CC_REGNUM)] UNSPEC_CC_TO_INT))]
    "TARGET_VX")
  
  (define_expand "vec_cmphev2df_cc"
***************
*** 2061,2069 ****
    [(set_attr "op_type" "VRR")])
  
  (define_insn "*vec_cmphv2df_cc"
!   [(set (reg:CCVH CC_REGNUM)
! 	(compare:CCVH (match_operand:V2DF 0 "register_operand"  "v")
! 		      (match_operand:V2DF 1 "register_operand"  "v")))
     (set (match_operand:V2DI               2 "register_operand" "=v")
  	(gt:V2DI (match_dup 0) (match_dup 1)))]
    "TARGET_VX"
--- 2061,2069 ----
    [(set_attr "op_type" "VRR")])
  
  (define_insn "*vec_cmphv2df_cc"
!   [(set (reg:CCVIH CC_REGNUM)
! 	(compare:CCVIH (match_operand:V2DF 0 "register_operand"  "v")
! 		       (match_operand:V2DF 1 "register_operand"  "v")))
     (set (match_operand:V2DI               2 "register_operand" "=v")
  	(gt:V2DI (match_dup 0) (match_dup 1)))]
    "TARGET_VX"
diff -Nrcpad gcc-5.4.0/gcc/config/sh/sh-mem.cc gcc-5.5.0/gcc/config/sh/sh-mem.cc
*** gcc-5.4.0/gcc/config/sh/sh-mem.cc	Thu Jan 15 13:28:42 2015
--- gcc-5.5.0/gcc/config/sh/sh-mem.cc	Tue Nov 29 23:23:30 2016
*************** sh_expand_cmpnstr (rtx *operands)
*** 363,369 ****
    rtx_code_label *L_loop_byte = gen_label_rtx ();
    rtx_code_label *L_end_loop_byte = gen_label_rtx ();
  
!   rtx len = force_reg (SImode, operands[3]);
    int constp = CONST_INT_P (operands[3]);
  
    /* Loop on a register count.  */
--- 363,369 ----
    rtx_code_label *L_loop_byte = gen_label_rtx ();
    rtx_code_label *L_end_loop_byte = gen_label_rtx ();
  
!   rtx len = copy_to_mode_reg (SImode, operands[3]);
    int constp = CONST_INT_P (operands[3]);
  
    /* Loop on a register count.  */
*************** sh_expand_setmem (rtx *operands)
*** 674,682 ****
    rtx jump;
    rtx dest = copy_rtx (operands[0]);
    rtx dest_addr = copy_addr_to_reg (XEXP (dest, 0));
!   rtx val = force_reg (SImode, operands[2]);
    int align = INTVAL (operands[3]);
!   rtx len = force_reg (SImode, operands[1]);
  
    if (! CONST_INT_P (operands[1]))
      return;
--- 674,682 ----
    rtx jump;
    rtx dest = copy_rtx (operands[0]);
    rtx dest_addr = copy_addr_to_reg (XEXP (dest, 0));
!   rtx val = copy_to_mode_reg (SImode, operands[2]);
    int align = INTVAL (operands[3]);
!   rtx len = copy_to_mode_reg (SImode, operands[1]);
  
    if (! CONST_INT_P (operands[1]))
      return;
diff -Nrcpad gcc-5.4.0/gcc/config/sh/sh.c gcc-5.5.0/gcc/config/sh/sh.c
*** gcc-5.4.0/gcc/config/sh/sh.c	Sat Oct  3 15:20:58 2015
--- gcc-5.5.0/gcc/config/sh/sh.c	Mon Sep 25 23:49:58 2017
*************** along with GCC; see the file COPYING3.
*** 20,28 ****
  <http://www.gnu.org/licenses/>.  */
  
  #include <sstream>
- #include <vector>
  
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
  #include "tm.h"
--- 20,28 ----
  <http://www.gnu.org/licenses/>.  */
  
  #include <sstream>
  
  #include "config.h"
+ #define INCLUDE_VECTOR
  #include "system.h"
  #include "coretypes.h"
  #include "tm.h"
diff -Nrcpad gcc-5.4.0/gcc/config/sh/sh_treg_combine.cc gcc-5.5.0/gcc/config/sh/sh_treg_combine.cc
*** gcc-5.4.0/gcc/config/sh/sh_treg_combine.cc	Thu Jan 15 13:28:42 2015
--- gcc-5.5.0/gcc/config/sh/sh_treg_combine.cc	Mon Sep 25 23:49:58 2017
*************** along with GCC; see the file COPYING3.
*** 19,24 ****
--- 19,27 ----
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
+ #define INCLUDE_ALGORITHM
+ #define INCLUDE_LIST
+ #define INCLUDE_VECTOR
  #include "system.h"
  #include "coretypes.h"
  #include "machmode.h"
*************** along with GCC; see the file COPYING3.
*** 65,74 ****
  #include "stmt.h"
  #include "expr.h"
  
- #include <algorithm>
- #include <list>
- #include <vector>
- 
  /*
  This pass tries to optimize for example this:
  	mov.l	@(4,r4),r1
--- 68,73 ----
diff -Nrcpad gcc-5.4.0/gcc/config/sparc/sparc.c gcc-5.5.0/gcc/config/sparc/sparc.c
*** gcc-5.4.0/gcc/config/sparc/sparc.c	Tue Apr 12 20:55:33 2016
--- gcc-5.5.0/gcc/config/sparc/sparc.c	Fri Jun  9 19:21:15 2017
*************** sparc_expand_epilogue (bool for_eh)
*** 5756,5761 ****
--- 5756,5764 ----
  {
    HOST_WIDE_INT size = sparc_frame_size;
  
+   if (cfun->calls_alloca)
+     emit_insn (gen_frame_blockage ());
+ 
    if (sparc_n_global_fp_regs > 0)
      emit_save_or_restore_global_fp_regs (sparc_frame_base_reg,
  				         sparc_frame_base_offset
*************** sparc_expand_vec_perm_bmask (machine_mod
*** 11967,11973 ****
      }
  
    /* Always perform the final addition/merge within the bmask insn.  */
!   emit_insn (gen_bmasksi_vis (gen_rtx_REG (SImode, 0), sel, t_1));
  }
  
  /* Implement TARGET_FRAME_POINTER_REQUIRED.  */
--- 11970,11976 ----
      }
  
    /* Always perform the final addition/merge within the bmask insn.  */
!   emit_insn (gen_bmasksi_vis (gen_reg_rtx (SImode), sel, t_1));
  }
  
  /* Implement TARGET_FRAME_POINTER_REQUIRED.  */
*************** sparc_frame_pointer_required (void)
*** 11989,11996 ****
    if (TARGET_FLAT)
      return false;
  
!   /* Otherwise, the frame pointer is required if the function isn't leaf.  */
!   return !(crtl->is_leaf && only_leaf_regs_used ());
  }
  
  /* The way this is structured, we can't eliminate SFP in favor of SP
--- 11992,12000 ----
    if (TARGET_FLAT)
      return false;
  
!   /* Otherwise, the frame pointer is required if the function isn't leaf, but
!      we cannot use sparc_leaf_function_p since it hasn't been computed yet.  */
!   return !(optimize > 0 && crtl->is_leaf && only_leaf_regs_used ());
  }
  
  /* The way this is structured, we can't eliminate SFP in favor of SP
*************** vector_init_bshuffle (rtx target, rtx el
*** 12233,12239 ****
      }
  
    sel = force_reg (SImode, GEN_INT (bmask));
!   emit_insn (gen_bmasksi_vis (gen_rtx_REG (SImode, 0), sel, const0_rtx));
    emit_insn (final_insn);
  }
  
--- 12237,12243 ----
      }
  
    sel = force_reg (SImode, GEN_INT (bmask));
!   emit_insn (gen_bmasksi_vis (gen_reg_rtx (SImode), sel, const0_rtx));
    emit_insn (final_insn);
  }
  
*************** sparc_expand_vector_init (rtx target, rt
*** 12289,12302 ****
    const machine_mode inner_mode = GET_MODE_INNER (mode);
    const int n_elts = GET_MODE_NUNITS (mode);
    int i, n_var = 0;
!   bool all_same;
    rtx mem;
  
-   all_same = true;
    for (i = 0; i < n_elts; i++)
      {
        rtx x = XVECEXP (vals, 0, i);
!       if (!CONSTANT_P (x))
  	n_var++;
  
        if (i > 0 && !rtx_equal_p (x, XVECEXP (vals, 0, 0)))
--- 12293,12307 ----
    const machine_mode inner_mode = GET_MODE_INNER (mode);
    const int n_elts = GET_MODE_NUNITS (mode);
    int i, n_var = 0;
!   bool all_same = true;
    rtx mem;
  
    for (i = 0; i < n_elts; i++)
      {
        rtx x = XVECEXP (vals, 0, i);
!       if (!(CONST_INT_P (x)
! 	    || GET_CODE (x) == CONST_DOUBLE
! 	    || GET_CODE (x) == CONST_FIXED))
  	n_var++;
  
        if (i > 0 && !rtx_equal_p (x, XVECEXP (vals, 0, 0)))
diff -Nrcpad gcc-5.4.0/gcc/config/sparc/sparc.md gcc-5.5.0/gcc/config/sparc/sparc.md
*** gcc-5.4.0/gcc/config/sparc/sparc.md	Sat Dec 19 21:59:47 2015
--- gcc-5.5.0/gcc/config/sparc/sparc.md	Fri Jun  9 19:21:15 2017
***************
*** 328,334 ****
  	     (const_int 2)
  	     (const_int 1))
  	 (eq_attr "type" "sibcall")
! 	   (if_then_else (eq_attr "leaf_function" "true")
  	     (if_then_else (eq_attr "empty_delay_slot" "true")
  	       (const_int 3)
  	       (const_int 2))
--- 328,335 ----
  	     (const_int 2)
  	     (const_int 1))
  	 (eq_attr "type" "sibcall")
! 	   (if_then_else (ior (eq_attr "leaf_function" "true")
! 	                      (eq_attr "flat" "true"))
  	     (if_then_else (eq_attr "empty_delay_slot" "true")
  	       (const_int 3)
  	       (const_int 2))
***************
*** 6367,6373 ****
  (define_expand "return"
    [(return)]
    "sparc_can_use_return_insn_p ()"
!   "")
  
  (define_insn "*return_internal"
    [(return)]
--- 6368,6377 ----
  (define_expand "return"
    [(return)]
    "sparc_can_use_return_insn_p ()"
! {
!   if (cfun->calls_alloca)
!     emit_insn (gen_frame_blockage ());
! })
  
  (define_insn "*return_internal"
    [(return)]
***************
*** 8380,8386 ****
                   (match_operand:DI 2 "register_or_zero_operand" "rJ")))
     (set (zero_extract:DI (reg:DI GSR_REG) (const_int 32) (const_int 32))
          (plus:DI (match_dup 1) (match_dup 2)))]
!   "TARGET_VIS2"
    "bmask\t%r1, %r2, %0"
    [(set_attr "type" "array")])
  
--- 8384,8390 ----
                   (match_operand:DI 2 "register_or_zero_operand" "rJ")))
     (set (zero_extract:DI (reg:DI GSR_REG) (const_int 32) (const_int 32))
          (plus:DI (match_dup 1) (match_dup 2)))]
!   "TARGET_VIS2 && TARGET_ARCH64"
    "bmask\t%r1, %r2, %0"
    [(set_attr "type" "array")])
  
***************
*** 8422,8428 ****
      mask |= (INTVAL (XVECEXP (sel, 0, i)) & 0xf) << (28 - i*4);
    sel = force_reg (SImode, gen_int_mode (mask, SImode));
  
!   emit_insn (gen_bmasksi_vis (gen_rtx_REG (SImode, 0), sel, const0_rtx));
    emit_insn (gen_bshufflev8qi_vis (operands[0], operands[1], operands[2]));
    DONE;
  })
--- 8426,8432 ----
      mask |= (INTVAL (XVECEXP (sel, 0, i)) & 0xf) << (28 - i*4);
    sel = force_reg (SImode, gen_int_mode (mask, SImode));
  
!   emit_insn (gen_bmasksi_vis (gen_reg_rtx (SImode), sel, const0_rtx));
    emit_insn (gen_bshufflev8qi_vis (operands[0], operands[1], operands[2]));
    DONE;
  })
diff -Nrcpad gcc-5.4.0/gcc/config/xtensa/xtensa.c gcc-5.5.0/gcc/config/xtensa/xtensa.c
*** gcc-5.4.0/gcc/config/xtensa/xtensa.c	Tue Mar  3 17:44:01 2015
--- gcc-5.5.0/gcc/config/xtensa/xtensa.c	Mon Sep 11 21:53:38 2017
*************** xtensa_mem_offset (unsigned v, machine_m
*** 634,639 ****
--- 634,640 ----
      case HImode:
        return xtensa_uimm8x2 (v);
  
+     case DImode:
      case DFmode:
        return (xtensa_uimm8x4 (v) && xtensa_uimm8x4 (v + 4));
  
*************** xtensa_emit_call (int callop, rtx *opera
*** 1808,1814 ****
    rtx tgt = operands[callop];
  
    if (GET_CODE (tgt) == CONST_INT)
!     sprintf (result, "call%d\t0x%lx", WINDOW_SIZE, INTVAL (tgt));
    else if (register_operand (tgt, VOIDmode))
      sprintf (result, "callx%d\t%%%d", WINDOW_SIZE, callop);
    else
--- 1809,1816 ----
    rtx tgt = operands[callop];
  
    if (GET_CODE (tgt) == CONST_INT)
!     sprintf (result, "call%d\t" HOST_WIDE_INT_PRINT_HEX,
! 	     WINDOW_SIZE, INTVAL (tgt));
    else if (register_operand (tgt, VOIDmode))
      sprintf (result, "callx%d\t%%%d", WINDOW_SIZE, callop);
    else
*************** xtensa_tls_module_base (void)
*** 1891,1913 ****
  static rtx_insn *
  xtensa_call_tls_desc (rtx sym, rtx *retp)
  {
!   rtx fn, arg, a10;
    rtx_insn *call_insn, *insns;
  
    start_sequence ();
    fn = gen_reg_rtx (Pmode);
    arg = gen_reg_rtx (Pmode);
!   a10 = gen_rtx_REG (Pmode, 10);
  
    emit_insn (gen_tls_func (fn, sym));
    emit_insn (gen_tls_arg (arg, sym));
!   emit_move_insn (a10, arg);
!   call_insn = emit_call_insn (gen_tls_call (a10, fn, sym, const1_rtx));
!   use_reg (&CALL_INSN_FUNCTION_USAGE (call_insn), a10);
    insns = get_insns ();
    end_sequence ();
  
!   *retp = a10;
    return insns;
  }
  
--- 1893,1915 ----
  static rtx_insn *
  xtensa_call_tls_desc (rtx sym, rtx *retp)
  {
!   rtx fn, arg, a_io;
    rtx_insn *call_insn, *insns;
  
    start_sequence ();
    fn = gen_reg_rtx (Pmode);
    arg = gen_reg_rtx (Pmode);
!   a_io = gen_rtx_REG (Pmode, WINDOW_SIZE + 2);
  
    emit_insn (gen_tls_func (fn, sym));
    emit_insn (gen_tls_arg (arg, sym));
!   emit_move_insn (a_io, arg);
!   call_insn = emit_call_insn (gen_tls_call (a_io, fn, sym, const1_rtx));
!   use_reg (&CALL_INSN_FUNCTION_USAGE (call_insn), a_io);
    insns = get_insns ();
    end_sequence ();
  
!   *retp = a_io;
    return insns;
  }
  
*************** print_operand (FILE *file, rtx x, int le
*** 2379,2392 ****
  
      case 'L':
        if (GET_CODE (x) == CONST_INT)
! 	fprintf (file, "%ld", (32 - INTVAL (x)) & 0x1f);
        else
  	output_operand_lossage ("invalid %%L value");
        break;
  
      case 'R':
        if (GET_CODE (x) == CONST_INT)
! 	fprintf (file, "%ld", INTVAL (x) & 0x1f);
        else
  	output_operand_lossage ("invalid %%R value");
        break;
--- 2381,2394 ----
  
      case 'L':
        if (GET_CODE (x) == CONST_INT)
! 	fprintf (file, HOST_WIDE_INT_PRINT_DEC, (32 - INTVAL (x)) & 0x1f);
        else
  	output_operand_lossage ("invalid %%L value");
        break;
  
      case 'R':
        if (GET_CODE (x) == CONST_INT)
! 	fprintf (file, HOST_WIDE_INT_PRINT_DEC, INTVAL (x) & 0x1f);
        else
  	output_operand_lossage ("invalid %%R value");
        break;
*************** print_operand (FILE *file, rtx x, int le
*** 2400,2406 ****
  
      case 'd':
        if (GET_CODE (x) == CONST_INT)
! 	fprintf (file, "%ld", INTVAL (x));
        else
  	output_operand_lossage ("invalid %%d value");
        break;
--- 2402,2408 ----
  
      case 'd':
        if (GET_CODE (x) == CONST_INT)
! 	fprintf (file, HOST_WIDE_INT_PRINT_DEC, INTVAL (x));
        else
  	output_operand_lossage ("invalid %%d value");
        break;
*************** print_operand (FILE *file, rtx x, int le
*** 2455,2461 ****
        else if (GET_CODE (x) == MEM)
  	output_address (XEXP (x, 0));
        else if (GET_CODE (x) == CONST_INT)
! 	fprintf (file, "%ld", INTVAL (x));
        else
  	output_addr_const (file, x);
      }
--- 2457,2463 ----
        else if (GET_CODE (x) == MEM)
  	output_address (XEXP (x, 0));
        else if (GET_CODE (x) == CONST_INT)
! 	fprintf (file, HOST_WIDE_INT_PRINT_DEC, INTVAL (x));
        else
  	output_addr_const (file, x);
      }
*************** hwloop_optimize (hwloop_info loop)
*** 4165,4171 ****
        entry_after = BB_END (entry_bb);
        while (DEBUG_INSN_P (entry_after)
               || (NOTE_P (entry_after)
!                  && NOTE_KIND (entry_after) != NOTE_INSN_BASIC_BLOCK))
          entry_after = PREV_INSN (entry_after);
  
        emit_insn_after (seq, entry_after);
--- 4167,4176 ----
        entry_after = BB_END (entry_bb);
        while (DEBUG_INSN_P (entry_after)
               || (NOTE_P (entry_after)
!                  && NOTE_KIND (entry_after) != NOTE_INSN_BASIC_BLOCK
! 		 /* Make sure we don't split a call and its corresponding
! 		    CALL_ARG_LOCATION note.  */
!                  && NOTE_KIND (entry_after) != NOTE_INSN_CALL_ARG_LOCATION))
          entry_after = PREV_INSN (entry_after);
  
        emit_insn_after (seq, entry_after);
diff -Nrcpad gcc-5.4.0/gcc/config/xtensa/xtensa.h gcc-5.5.0/gcc/config/xtensa/xtensa.h
*** gcc-5.4.0/gcc/config/xtensa/xtensa.h	Tue Mar  3 17:44:01 2015
--- gcc-5.5.0/gcc/config/xtensa/xtensa.h	Tue May 30 23:38:45 2017
*************** typedef struct xtensa_args
*** 812,818 ****
     for debugging.  */
  #define INCOMING_RETURN_ADDR_RTX gen_rtx_REG (Pmode, 0)
  #define DWARF_FRAME_RETURN_COLUMN DWARF_FRAME_REGNUM (0)
! #define DWARF_FRAME_REGISTERS 16
  #define EH_RETURN_DATA_REGNO(N) ((N) < 2 ? (N) + 2 : INVALID_REGNUM)
  #define ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL)			\
    (flag_pic								\
--- 812,820 ----
     for debugging.  */
  #define INCOMING_RETURN_ADDR_RTX gen_rtx_REG (Pmode, 0)
  #define DWARF_FRAME_RETURN_COLUMN DWARF_FRAME_REGNUM (0)
! #define DWARF_ALT_FRAME_RETURN_COLUMN 16
! #define DWARF_FRAME_REGISTERS (DWARF_ALT_FRAME_RETURN_COLUMN		\
! 			       + (TARGET_WINDOWED_ABI ? 0 : 1))
  #define EH_RETURN_DATA_REGNO(N) ((N) < 2 ? (N) + 2 : INVALID_REGNUM)
  #define ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL)			\
    (flag_pic								\
diff -Nrcpad gcc-5.4.0/gcc/config/xtensa/xtensa.md gcc-5.5.0/gcc/config/xtensa/xtensa.md
*** gcc-5.4.0/gcc/config/xtensa/xtensa.md	Tue Mar  3 17:44:01 2015
--- gcc-5.5.0/gcc/config/xtensa/xtensa.md	Tue May 30 23:37:42 2017
***************
*** 1867,1873 ****
  				  UNSPEC_TLS_CALL))
  	      (match_operand 3 "" "i")))]
    "TARGET_THREADPTR && HAVE_AS_TLS"
!   "callx8.tls %1, %2@TLSCALL"
    [(set_attr "type"	"call")
     (set_attr "mode"	"none")
     (set_attr "length"	"3")])
--- 1867,1878 ----
  				  UNSPEC_TLS_CALL))
  	      (match_operand 3 "" "i")))]
    "TARGET_THREADPTR && HAVE_AS_TLS"
! {
!   if (TARGET_WINDOWED_ABI)
!     return "callx8.tls %1, %2@TLSCALL";
!   else
!     return "callx0.tls %1, %2@TLSCALL";
! }
    [(set_attr "type"	"call")
     (set_attr "mode"	"none")
     (set_attr "length"	"3")])
diff -Nrcpad gcc-5.4.0/gcc/config.gcc gcc-5.5.0/gcc/config.gcc
*** gcc-5.4.0/gcc/config.gcc	Thu Sep 10 14:17:53 2015
--- gcc-5.5.0/gcc/config.gcc	Mon Jan  9 21:06:20 2017
*************** i[34567]86-*-*)
*** 367,373 ****
  		       xsavesintrin.h avx512dqintrin.h avx512bwintrin.h
  		       avx512vlintrin.h avx512vlbwintrin.h avx512vldqintrin.h
  		       avx512ifmaintrin.h avx512ifmavlintrin.h avx512vbmiintrin.h
! 		       avx512vbmivlintrin.h clwbintrin.h pcommitintrin.h mwaitxintrin.h"
  	;;
  x86_64-*-*)
  	cpu_type=i386
--- 367,373 ----
  		       xsavesintrin.h avx512dqintrin.h avx512bwintrin.h
  		       avx512vlintrin.h avx512vlbwintrin.h avx512vldqintrin.h
  		       avx512ifmaintrin.h avx512ifmavlintrin.h avx512vbmiintrin.h
! 		       avx512vbmivlintrin.h clwbintrin.h mwaitxintrin.h"
  	;;
  x86_64-*-*)
  	cpu_type=i386
*************** x86_64-*-*)
*** 388,394 ****
  		       xsavesintrin.h avx512dqintrin.h avx512bwintrin.h
  		       avx512vlintrin.h avx512vlbwintrin.h avx512vldqintrin.h
  		       avx512ifmaintrin.h avx512ifmavlintrin.h avx512vbmiintrin.h
! 		       avx512vbmivlintrin.h clwbintrin.h pcommitintrin.h mwaitxintrin.h"
  	;;
  ia64-*-*)
  	extra_headers=ia64intrin.h
--- 388,394 ----
  		       xsavesintrin.h avx512dqintrin.h avx512bwintrin.h
  		       avx512vlintrin.h avx512vlbwintrin.h avx512vldqintrin.h
  		       avx512ifmaintrin.h avx512ifmavlintrin.h avx512vbmiintrin.h
! 		       avx512vbmivlintrin.h clwbintrin.h mwaitxintrin.h"
  	;;
  ia64-*-*)
  	extra_headers=ia64intrin.h
*************** case ${target} in
*** 790,795 ****
--- 790,800 ----
        ;;
    esac
    ;;
+ *-*-phoenix*)
+   gas=yes
+   gnu_ld=yes
+   default_use_cxa_atexit=yes
+   ;;
  *-*-rtems*)
    case ${enable_threads} in
      "" | yes | rtems) thread_file='rtems' ;;
*************** aarch64*-*-elf)
*** 909,914 ****
--- 914,924 ----
  	done
  	TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
  	;;
+ aarch64*-*-freebsd*)
+ 	tm_file="${tm_file} dbxelf.h elfos.h ${fbsd_tm_file}"
+ 	tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-freebsd.h"
+ 	tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-freebsd"
+ 	;;
  aarch64*-*-linux*)
  	tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h"
  	tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-linux.h"
*************** arm*-*-freebsd*)                # ARM Fr
*** 1026,1036 ****
  	case $target in
  	armv6*-*-freebsd*)
  	    tm_defines="${tm_defines} TARGET_FREEBSD_ARMv6=1"
! 	    ;;
! 	esac
! 	case $target in
! 	arm*hf-*-freebsd*)
! 	    tm_defines="${tm_defines} TARGET_FREEBSD_ARM_HARD_FLOAT=1"
  	    ;;
  	esac
  	with_tls=${with_tls:-gnu}
--- 1036,1044 ----
  	case $target in
  	armv6*-*-freebsd*)
  	    tm_defines="${tm_defines} TARGET_FREEBSD_ARMv6=1"
!             if test $fbsd_major -ge 11; then
!                tm_defines="${tm_defines} TARGET_FREEBSD_ARM_HARD_FLOAT=1"
!             fi
  	    ;;
  	esac
  	with_tls=${with_tls:-gnu}
*************** arm*-*-uclinux*eabi*)		# ARM ucLinux
*** 1067,1072 ****
--- 1075,1086 ----
  	# The EABI requires the use of __cxa_atexit.
  	default_use_cxa_atexit=yes
  	;;
+ arm*-*-phoenix*)
+ 	tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
+ 	tm_file="${tm_file} newlib-stdint.h phoenix.h"
+ 	tm_file="${tm_file} arm/aout.h arm/arm.h"
+ 	tmake_file="${tmake_file} arm/t-arm arm/t-bpabi arm/t-phoenix"
+ 	;;
  arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems*)
  	case ${target} in
  	arm*eb-*-eabi*)
diff -Nrcpad gcc-5.4.0/gcc/coverage.c gcc-5.5.0/gcc/coverage.c
*** gcc-5.4.0/gcc/coverage.c	Thu Jan 15 13:28:42 2015
--- gcc-5.5.0/gcc/coverage.c	Thu Jun 22 11:26:58 2017
*************** coverage_end_function (unsigned lineno_c
*** 767,772 ****
--- 767,784 ----
      }
  }
  
+ /* Remove coverage file if opened.  */
+ 
+ void
+ coverage_remove_note_file (void)
+ {
+   if (bbg_file_name)
+     {
+       gcov_close ();
+       unlink (bbg_file_name);
+     }
+ }
+ 
  /* Build a coverage variable of TYPE for function FN_DECL.  If COUNTER
     >= 0 it is a counter array, otherwise it is the function structure.  */
  
diff -Nrcpad gcc-5.4.0/gcc/coverage.h gcc-5.5.0/gcc/coverage.h
*** gcc-5.4.0/gcc/coverage.h	Mon Jan  5 12:33:28 2015
--- gcc-5.5.0/gcc/coverage.h	Thu Jun 22 11:26:58 2017
*************** along with GCC; see the file COPYING3.
*** 24,29 ****
--- 24,30 ----
  
  extern void coverage_init (const char *);
  extern void coverage_finish (void);
+ extern void coverage_remove_note_file (void);
  
  /* Start outputting coverage information for the current
     function.  */
diff -Nrcpad gcc-5.4.0/gcc/cp/ChangeLog gcc-5.5.0/gcc/cp/ChangeLog
*** gcc-5.4.0/gcc/cp/ChangeLog	Fri Jun  3 08:41:59 2016
--- gcc-5.5.0/gcc/cp/ChangeLog	Tue Oct 10 08:11:01 2017
***************
*** 1,3 ****
--- 1,256 ----
+ 2017-10-10  Release Manager
+ 
+ 	* GCC 5.5.0 released.
+ 
+ 2017-09-18  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/80294 - ICE with constexpr and inheritance.
+ 	* constexpr.c (reduced_constant_expression_p):
+ 	A null constructor element is non-constant.
+ 	(cxx_eval_indirect_ref): Don't VERIFY_CONSTANT before
+ 	returning an empty base.
+ 
+ 	PR c++/79607 - ICE with T{} initializer
+ 	* decl.c (type_dependent_init_p): Check the type of a CONSTRUCTOR.
+ 
+ 	PR c++/72457
+ 	* init.c (expand_aggr_init_1): Only handle value-init of bases.
+ 	* constexpr.c (build_data_member_initialization): Handle multiple
+ 	initializers for the same field.
+ 
+ 	PR c++/55922
+ 	PR c++/63151
+ 	* init.c (expand_aggr_init_1): Handle list-initialization from {}.
+ 
+ 2017-09-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2017-06-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/81154
+ 	* semantics.c (handle_omp_array_sections_1, finish_omp_clauses):
+ 	Complain about t not being a variable if t is OVERLOAD even
+ 	when processing_template_decl.
+ 
+ 	2017-06-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/80984
+ 	* cp-gimplify.c (cp_genericize): Only look for VAR_DECLs in
+ 	BLOCK_VARS (outer) chain.
+ 	(cxx_omp_const_qual_no_mutable): Likewise.
+ 
+ 2017-06-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/81006
+ 	* semantics.c (handle_omp_array_sections_1): Convert TYPE_MAX_VALUE
+ 	to sizetype before size_binop.
+ 
+ 2017-05-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2017-04-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/80363
+ 	* error.c (dump_expr): Handle VEC_COND_EXPR like COND_EXPR.
+ 
+ 	2017-04-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/80176
+ 	* tree.c (lvalue_kind): For COMPONENT_REF with BASELINK second
+ 	operand, if it is a static member function, recurse on the
+ 	BASELINK.
+ 
+ 	2017-03-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/80141
+ 	* semantics.c (finish_omp_clause) <case OMP_CLAUSE_SIMDLEN,
+ 	case OMP_CLAUSE_ALIGNED>: Call maybe_constant_value only when not
+ 	processing_template_decl.
+ 
+ 	2017-03-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/79896
+ 	* decl.c (finish_enum_value_list): If value is error_mark_node,
+ 	don't copy it and change its type.
+ 	* init.c (constant_value_1): Return error_mark_node if DECL_INITIAL
+ 	of CONST_DECL is error_mark_node.
+ 
+ 	2017-02-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/79664
+ 	* parser.c (cp_parser_omp_teams, cp_parser_omp_target): Use
+ 	SET_EXPR_LOCATION on OMP_TARGET/OMP_TEAMS tree.
+ 	* constexpr.c (potential_constant_expression_1): Handle
+ 	OMP_*, OACC_* and CILK_* trees.
+ 
+ 	2017-02-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/79512
+ 	* parser.c (cp_parser_omp_target): For -fopenmp-simd
+ 	ignore #pragma omp target even when not followed by identifier.
+ 
+ 	2017-01-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/78341
+ 	* parser.c (cp_parser_std_attribute_spec): Remove over-eager
+ 	assertion.  Formatting fix.
+ 
+ 	2017-01-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/78949
+ 	* typeck.c (cp_build_unary_op): Call mark_rvalue_use on arg if it has
+ 	vector type.
+ 
+ 	2016-12-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/78649
+ 	* pt.c (tsubst_init): Don't call build_value_init if decl's type
+ 	is error_mark_node.
+ 
+ 	2016-11-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/77739
+ 	* cp-gimplify.c (cp_gimplify_tree) <case VEC_INIT_EXPR>: Pass
+ 	false as handle_invisiref_parm_p to cp_genericize_tree.
+ 	(struct cp_genericize_data): Add handle_invisiref_parm_p field.
+ 	(cp_genericize_r): Don't wrap is_invisiref_parm into references
+ 	if !wtd->handle_invisiref_parm_p.
+ 	(cp_genericize_tree): Add handle_invisiref_parm_p argument,
+ 	set wtd.handle_invisiref_parm_p to it.
+ 	(cp_genericize): Pass true as handle_invisiref_parm_p to
+ 	cp_genericize_tree.  Formatting fix.
+ 
+ 	2016-11-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/77285
+ 	* mangle.c (mangle_tls_init_fn, mangle_tls_wrapper_fn): Call
+ 	check_abi_tags.
+ 
+ 	2016-10-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/78089
+ 	* parser.c (cp_parser_postfix_expression): Replace return statement in
+ 	the first switch with setting postfix_expression to the return
+ 	expression and break;.
+ 
+ 	2016-09-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/77467
+ 	* constexpr.c (enum constexpr_switch_state): New.
+ 	(struct constexpr_ctx): Add css_state field.
+ 	(label_matches): Add CTX and STMT arguments, remove I and
+ 	DEFAULT_LABEL.  For CASE_LABEL_EXPR assert ctx->css_state != NULL,
+ 	handle default labels according to css_state.
+ 	(cxx_eval_statement_list): Remove statement skipping, label_matches
+ 	and default_label handling code.
+ 	(cxx_eval_loop_expr): Exit after first iteration even if
+ 	switches (jump_target).
+ 	(cxx_eval_switch_expr): Set up css_state field in ctx, if default
+ 	label has been seen in the body, but no cases matched, evaluate
+ 	the body second time.
+ 	(cxx_eval_constant_expression): Handle stmt skipping and label_matches
+ 	here.  Handle PREDICT_EXPR.  For MODIFY_EXPR or INIT_EXPR, assert
+ 	statement is not skipped.  For COND_EXPR during skipping, don't
+ 	evaluate condition, just the then block and if still skipping at the
+ 	end also the else block.
+ 	(cxx_eval_outermost_constant_expr): Adjust constexpr_ctx initializer.
+ 	(is_sub_constant_expr): Likewise.
+ 
+ 	2016-09-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/77722
+ 	* cp-gimplify.c (cp_ubsan_maybe_instrument_return): Instrument also
+ 	functions that have just a STATEMENT_LIST instead of BIND_EXPR, or
+ 	BIND_EXPR with some statement rather than STATEMENT_LIST as body.
+ 
+ 	2016-09-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/77637
+ 	* parser.c (cp_parser_std_attribute_list): Reject ... without
+ 	preceding attribute.
+ 
+ 	2016-09-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/77375
+ 	* class.c (check_bases): Set CLASSTYPE_HAS_MUTABLE if any
+ 	TYPE_HAS_MUTABLE_P for any bases.
+ 
+ 	2016-08-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/72868
+ 	* constexpr.c (label_matches): Handle case range expressions.
+ 
+ 2017-01-12  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	PR c++/77812
+ 	* name-lookup.c (set_namespace_binding_1): An overload of 1 decl
+ 	is a new overload.
+ 
+ 2016-12-08  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	PR c++/78551
+ 	* constexpr.c (extract_string_elt): New.  Broken out of ...
+ 	(cxx_eval_array_reference): ... here.  Call it.
+ 	(cxx_eval_store_expression): Convert init by STRING_CST into
+ 	CONSTRUCTOR, if needed.
+ 
+ 2016-08-05  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	PR c++/68724
+ 	* pt.c (unify): TRAIT_EXPR is an expr.
+ 
+ 2016-07-25  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/71833
+ 	* pt.c (coerce_template_parameter_pack): Fix logic for
+ 	pack index.
+ 
+ 2016-07-21  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/69223
+ 	* semantics.c (apply_deduced_return_type): Call
+ 	complete_type_or_else before building the new RESULT_DECL.
+ 
+ 	PR c++/71630
+ 	* pt.c (instantiate_decl): Fix pattern_defined for namespace scope
+ 	variable templates.
+ 
+ 	PR c++/71913
+ 	* call.c (unsafe_copy_elision_p): It's OK to elide when
+ 	initializing an unknown object.
+ 
+ 2016-07-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/71909
+ 	* parser.c (cp_parser_save_member_function_body): Consume
+ 	__transaction_relaxed or __transaction_atomic with optional
+ 	attribute.  Only skip catch with block if try keyword is seen.
+ 
+ 2016-07-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2016-07-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/71871
+ 	* typeck.c (build_x_conditional_expr): Revert the 2012-10-25 change.
+ 
+ 2016-07-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2016-06-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/71528
+ 	* decl.c (duplicate_decls): For DECL_INITIALIZED_P non-external
+ 	olddecl vars, preserve their TREE_READONLY bit.
+ 
+ 	PR c++/71516
+ 	* decl.c (complete_vars): Handle gracefully type == error_mark_node.
+ 
+ 2016-06-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/71442
+ 	* pt.c (tsubst_copy): Only set TREE_USED on DECLs.
+ 
  2016-06-03  Release Manager
  
  	* GCC 5.4.0 released.
diff -Nrcpad gcc-5.4.0/gcc/cp/call.c gcc-5.5.0/gcc/cp/call.c
*** gcc-5.4.0/gcc/cp/call.c	Fri May 20 19:09:59 2016
--- gcc-5.5.0/gcc/cp/call.c	Fri Jul 22 03:51:07 2016
*************** static bool
*** 7029,7038 ****
  unsafe_copy_elision_p (tree target, tree exp)
  {
    tree type = TYPE_MAIN_VARIANT (TREE_TYPE (exp));
!   if (type == CLASSTYPE_AS_BASE (type))
      return false;
!   if (!is_base_field_ref (target)
!       && resolves_to_fixed_type_p (target, NULL))
      return false;
    tree init = TARGET_EXPR_INITIAL (exp);
    /* build_compound_expr pushes COMPOUND_EXPR inside TARGET_EXPR.  */
--- 7029,7039 ----
  unsafe_copy_elision_p (tree target, tree exp)
  {
    tree type = TYPE_MAIN_VARIANT (TREE_TYPE (exp));
!   /* It's safe to elide the copy for a class with no tail padding.  */
!   if (tree_int_cst_equal (TYPE_SIZE (type), CLASSTYPE_SIZE (type)))
      return false;
!   /* It's safe to elide the copy if we aren't initializing a base object.  */
!   if (!is_base_field_ref (target))
      return false;
    tree init = TARGET_EXPR_INITIAL (exp);
    /* build_compound_expr pushes COMPOUND_EXPR inside TARGET_EXPR.  */
diff -Nrcpad gcc-5.4.0/gcc/cp/class.c gcc-5.5.0/gcc/cp/class.c
*** gcc-5.4.0/gcc/cp/class.c	Wed Mar  2 02:46:19 2016
--- gcc-5.5.0/gcc/cp/class.c	Tue May 30 07:24:56 2017
*************** check_bases (tree t,
*** 1763,1768 ****
--- 1763,1770 ----
        SET_CLASSTYPE_REF_FIELDS_NEED_INIT
  	(t, CLASSTYPE_REF_FIELDS_NEED_INIT (t)
  	 | CLASSTYPE_REF_FIELDS_NEED_INIT (basetype));
+       if (TYPE_HAS_MUTABLE_P (basetype))
+ 	CLASSTYPE_HAS_MUTABLE (t) = 1;
  
        /*  A standard-layout class is a class that:
  	  ...
diff -Nrcpad gcc-5.4.0/gcc/cp/constexpr.c gcc-5.5.0/gcc/cp/constexpr.c
*** gcc-5.4.0/gcc/cp/constexpr.c	Wed May 18 15:59:05 2016
--- gcc-5.5.0/gcc/cp/constexpr.c	Mon Sep 18 18:34:10 2017
*************** build_data_member_initialization (tree t
*** 401,407 ****
  	gcc_assert (TREE_TYPE (member) == vtbl_ptr_type_node);
      }
  
!   CONSTRUCTOR_APPEND_ELT (*vec, member, init);
    return true;
  }
  
--- 401,412 ----
  	gcc_assert (TREE_TYPE (member) == vtbl_ptr_type_node);
      }
  
!   /* Value-initialization can produce multiple initializers for the
!      same field; use the last one.  */
!   if (!vec_safe_is_empty (*vec) && (*vec)->last().index == member)
!     (*vec)->last().value = init;
!   else
!     CONSTRUCTOR_APPEND_ELT (*vec, member, init);
    return true;
  }
  
*************** struct constexpr_call_hasher : ggc_hashe
*** 888,893 ****
--- 893,910 ----
    static bool equal (constexpr_call *, constexpr_call *);
  };
  
+ enum constexpr_switch_state {
+   /* Used when processing a switch for the first time by cxx_eval_switch_expr
+      and default: label for that switch has not been seen yet.  */
+   css_default_not_seen,
+   /* Used when processing a switch for the first time by cxx_eval_switch_expr
+      and default: label for that switch has been seen already.  */
+   css_default_seen,
+   /* Used when processing a switch for the second time by
+      cxx_eval_switch_expr, where default: label should match.  */
+   css_default_processing
+ };
+ 
  /* The constexpr expansion context.  CALL is the current function
     expansion, CTOR is the current aggregate initializer, OBJECT is the
     object being initialized by CTOR, either a VAR_DECL or a _REF.  VALUES
*************** struct constexpr_ctx {
*** 907,912 ****
--- 924,931 ----
    tree ctor;
    /* The object we're building the CONSTRUCTOR for.  */
    tree object;
+   /* If inside SWITCH_EXPR.  */
+   constexpr_switch_state *css_state;
    /* Whether we should error on a non-constant expression or fail quietly.  */
    bool quiet;
    /* Whether we are strictly conforming to constant expression rules or
*************** reduced_constant_expression_p (tree t)
*** 1485,1492 ****
        /* And we need to handle PTRMEM_CST wrapped in a CONSTRUCTOR.  */
        tree elt; unsigned HOST_WIDE_INT idx;
        FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (t), idx, elt)
! 	if (!reduced_constant_expression_p (elt))
! 	  return false;
        return true;
  
      default:
--- 1504,1516 ----
        /* And we need to handle PTRMEM_CST wrapped in a CONSTRUCTOR.  */
        tree elt; unsigned HOST_WIDE_INT idx;
        FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (t), idx, elt)
! 	{
! 	  if (!elt)
! 	    /* We're in the middle of initializing this element.  */
! 	    return false;
! 	  if (!reduced_constant_expression_p (elt))
! 	    return false;
! 	}
        return true;
  
      default:
*************** find_array_ctor_elt (tree ary, tree dind
*** 1829,1834 ****
--- 1853,1879 ----
  }
  
  
+ /* Extract element INDEX consisting of CHARS_PER_ELT chars from
+    STRING_CST STRING.  */
+ 
+ static tree
+ extract_string_elt (tree string, unsigned chars_per_elt, unsigned index)
+ {
+   tree type = cv_unqualified (TREE_TYPE (TREE_TYPE (string)));
+   tree r;
+ 
+   if (chars_per_elt == 1)
+     r = build_int_cst (type, TREE_STRING_POINTER (string)[index]);
+   else
+     {
+       const unsigned char *ptr
+ 	= ((const unsigned char *)TREE_STRING_POINTER (string)
+ 	   + index * chars_per_elt);
+       r = native_interpret_expr (type, ptr, chars_per_elt);
+     }
+   return r;
+ }
+ 
  /* Subroutine of cxx_eval_constant_expression.
     Attempt to reduce a reference to an array slot.  */
  
*************** cxx_eval_array_reference (const constexp
*** 1913,1928 ****
  
    if (TREE_CODE (ary) == CONSTRUCTOR)
      return (*CONSTRUCTOR_ELTS (ary))[i].value;
-   else if (elem_nchars == 1)
-     return build_int_cst (cv_unqualified (TREE_TYPE (TREE_TYPE (ary))),
- 			  TREE_STRING_POINTER (ary)[i]);
    else
!     {
!       tree type = cv_unqualified (TREE_TYPE (TREE_TYPE (ary)));
!       return native_interpret_expr (type, (const unsigned char *)
! 					  TREE_STRING_POINTER (ary)
! 					  + i * elem_nchars, elem_nchars);
!     }
    /* Don't VERIFY_CONSTANT here.  */
  }
  
--- 1958,1965 ----
  
    if (TREE_CODE (ary) == CONSTRUCTOR)
      return (*CONSTRUCTOR_ELTS (ary))[i].value;
    else
!     return extract_string_elt (ary, elem_nchars, i);
    /* Don't VERIFY_CONSTANT here.  */
  }
  
*************** cxx_eval_indirect_ref (const constexpr_c
*** 2661,2672 ****
  	}
      }
  
!   /* If we're pulling out the value of an empty base, make sure
!      that the whole object is constant and then return an empty
       CONSTRUCTOR.  */
    if (empty_base && !lval)
      {
-       VERIFY_CONSTANT (r);
        r = build_constructor (TREE_TYPE (t), NULL);
        TREE_CONSTANT (r) = true;
      }
--- 2698,2707 ----
  	}
      }
  
!   /* If we're pulling out the value of an empty base, just return an empty
       CONSTRUCTOR.  */
    if (empty_base && !lval)
      {
        r = build_constructor (TREE_TYPE (t), NULL);
        TREE_CONSTANT (r) = true;
      }
*************** cxx_eval_store_expression (const constex
*** 2838,2843 ****
--- 2873,2906 ----
  	  *valp = build_constructor (type, NULL);
  	  CONSTRUCTOR_NO_IMPLICIT_ZERO (*valp) = true;
  	}
+       else if (TREE_CODE (*valp) == STRING_CST)
+ 	{
+ 	  /* An array was initialized with a string constant, and now
+ 	     we're writing into one of its elements.  Explode the
+ 	     single initialization into a set of element
+ 	     initializations.  */
+ 	  gcc_assert (TREE_CODE (type) == ARRAY_TYPE);
+ 
+ 	  tree string = *valp;
+ 	  tree elt_type = TREE_TYPE (type);
+ 	  unsigned chars_per_elt = (TYPE_PRECISION (elt_type)
+ 				    / TYPE_PRECISION (char_type_node));
+ 	  unsigned num_elts = TREE_STRING_LENGTH (string) / chars_per_elt;
+ 	  tree ary_ctor = build_constructor (type, NULL);
+ 
+ 	  vec_safe_reserve (CONSTRUCTOR_ELTS (ary_ctor), num_elts);
+ 	  for (unsigned ix = 0; ix != num_elts; ix++)
+ 	    {
+ 	      constructor_elt elt = 
+ 		{
+ 		  build_int_cst (size_type_node, ix),
+ 		  extract_string_elt (string, chars_per_elt, ix)
+ 		};
+ 	      CONSTRUCTOR_ELTS (ary_ctor)->quick_push (elt);
+ 	    }
+ 	  
+ 	  *valp = ary_ctor;
+ 	}
  
        enum tree_code code = TREE_CODE (type);
        type = refs->pop();
*************** switches (tree *jump_target)
*** 3030,3043 ****
  }
  
  /* Subroutine of cxx_eval_statement_list.  Determine whether the statement
!    at I matches *jump_target.  If we're looking for a case label and we see
!    the default label, copy I into DEFAULT_LABEL.  */
  
  static bool
! label_matches (tree *jump_target, tree_stmt_iterator i,
! 	       tree_stmt_iterator& default_label)
  {
-   tree stmt = tsi_stmt (i);
    switch (TREE_CODE (*jump_target))
      {
      case LABEL_DECL:
--- 3093,3104 ----
  }
  
  /* Subroutine of cxx_eval_statement_list.  Determine whether the statement
!    STMT matches *jump_target.  If we're looking for a case label and we see
!    the default label, note it in ctx->css_state.  */
  
  static bool
! label_matches (const constexpr_ctx *ctx, tree *jump_target, tree stmt)
  {
    switch (TREE_CODE (*jump_target))
      {
      case LABEL_DECL:
*************** label_matches (tree *jump_target, tree_s
*** 3049,3056 ****
      case INTEGER_CST:
        if (TREE_CODE (stmt) == CASE_LABEL_EXPR)
  	{
  	  if (!CASE_LOW (stmt))
! 	    default_label = i;
  	  else if (tree_int_cst_equal (*jump_target, CASE_LOW (stmt)))
  	    return true;
  	}
--- 3110,3133 ----
      case INTEGER_CST:
        if (TREE_CODE (stmt) == CASE_LABEL_EXPR)
  	{
+ 	  gcc_assert (ctx->css_state != NULL);
  	  if (!CASE_LOW (stmt))
! 	    {
! 	      /* default: should appear just once in a SWITCH_EXPR
! 		 body (excluding nested SWITCH_EXPR).  */
! 	      gcc_assert (*ctx->css_state != css_default_seen);
! 	      /* When evaluating SWITCH_EXPR body for the second time,
! 		 return true for the default: label.  */
! 	      if (*ctx->css_state == css_default_processing)
! 		return true;
! 	      *ctx->css_state = css_default_seen;
! 	    }
! 	  else if (CASE_HIGH (stmt))
! 	    {
! 	      if (tree_int_cst_le (CASE_LOW (stmt), *jump_target)
! 		  && tree_int_cst_le (*jump_target, CASE_HIGH (stmt)))
! 		return true;
! 	    }
  	  else if (tree_int_cst_equal (*jump_target, CASE_LOW (stmt)))
  	    return true;
  	}
*************** cxx_eval_statement_list (const constexpr
*** 3071,3077 ****
  			 tree *jump_target)
  {
    tree_stmt_iterator i;
-   tree_stmt_iterator default_label = tree_stmt_iterator();
    tree local_target;
    /* In a statement-expression we want to return the last value.  */
    tree r = NULL_TREE;
--- 3148,3153 ----
*************** cxx_eval_statement_list (const constexpr
*** 3082,3099 ****
      }
    for (i = tsi_start (t); !tsi_end_p (i); tsi_next (&i))
      {
-     reenter:
        tree stmt = tsi_stmt (i);
-       if (*jump_target)
- 	{
- 	  if (TREE_CODE (stmt) == STATEMENT_LIST)
- 	    /* The label we want might be inside.  */;
- 	  else if (label_matches (jump_target, i, default_label))
- 	    /* Found it.  */
- 	    *jump_target = NULL_TREE;
- 	  else
- 	    continue;
- 	}
        r = cxx_eval_constant_expression (ctx, stmt, false,
  					non_constant_p, overflow_p,
  					jump_target);
--- 3158,3164 ----
*************** cxx_eval_statement_list (const constexpr
*** 3102,3113 ****
        if (returns (jump_target) || breaks (jump_target))
  	break;
      }
-   if (switches (jump_target) && !tsi_end_p (default_label))
-     {
-       i = default_label;
-       *jump_target = NULL_TREE;
-       goto reenter;
-     }
    return r;
  }
  
--- 3167,3172 ----
*************** cxx_eval_loop_expr (const constexpr_ctx
*** 3142,3148 ****
        /* Forget saved values of SAVE_EXPRs.  */
        save_exprs.traverse<constexpr_ctx &, save_exprs_remover>(new_ctx);
      }
!   while (!returns (jump_target) && !breaks (jump_target) && !*non_constant_p);
  
    if (breaks (jump_target))
      *jump_target = NULL_TREE;
--- 3201,3210 ----
        /* Forget saved values of SAVE_EXPRs.  */
        save_exprs.traverse<constexpr_ctx &, save_exprs_remover>(new_ctx);
      }
!   while (!returns (jump_target)
! 	 && !breaks (jump_target)
! 	 && !switches (jump_target)
! 	 && !*non_constant_p);
  
    if (breaks (jump_target))
      *jump_target = NULL_TREE;
*************** cxx_eval_switch_expr (const constexpr_ct
*** 3165,3172 ****
    *jump_target = cond;
  
    tree body = TREE_OPERAND (t, 1);
!   cxx_eval_statement_list (ctx, body,
! 			   non_constant_p, overflow_p, jump_target);
    if (breaks (jump_target) || switches (jump_target))
      *jump_target = NULL_TREE;
    return NULL_TREE;
--- 3227,3246 ----
    *jump_target = cond;
  
    tree body = TREE_OPERAND (t, 1);
!   constexpr_ctx new_ctx = *ctx;
!   constexpr_switch_state css = css_default_not_seen;
!   new_ctx.css_state = &css;
!   cxx_eval_constant_expression (&new_ctx, body, false,
! 				non_constant_p, overflow_p, jump_target);
!   if (switches (jump_target) && css == css_default_seen)
!     {
!       /* If the SWITCH_EXPR body has default: label, process it once again,
! 	 this time instructing label_matches to return true for default:
! 	 label on switches (jump_target).  */
!       css = css_default_processing;
!       cxx_eval_constant_expression (&new_ctx, body, false,
! 				    non_constant_p, overflow_p, jump_target);
!     }
    if (breaks (jump_target) || switches (jump_target))
      *jump_target = NULL_TREE;
    return NULL_TREE;
*************** cxx_eval_constant_expression (const cons
*** 3243,3248 ****
--- 3317,3343 ----
    constexpr_ctx new_ctx;
    tree r = t;
  
+   if (jump_target && *jump_target)
+     {
+       /* If we are jumping, ignore all statements/expressions except those
+ 	 that could have LABEL_EXPR or CASE_LABEL_EXPR in their bodies.  */
+       switch (TREE_CODE (t))
+ 	{
+ 	case BIND_EXPR:
+ 	case STATEMENT_LIST:
+ 	case LOOP_EXPR:
+ 	case COND_EXPR:
+ 	  break;
+ 	case LABEL_EXPR:
+ 	case CASE_LABEL_EXPR:
+ 	  if (label_matches (ctx, jump_target, t))
+ 	    /* Found it.  */
+ 	    *jump_target = NULL_TREE;
+ 	  return NULL_TREE;
+ 	default:
+ 	  return NULL_TREE;
+ 	}
+     }
    if (t == error_mark_node)
      {
        *non_constant_p = true;
*************** cxx_eval_constant_expression (const cons
*** 3297,3302 ****
--- 3392,3398 ----
      case LABEL_DECL:
      case LABEL_EXPR:
      case CASE_LABEL_EXPR:
+     case PREDICT_EXPR:
        return t;
  
      case PARM_DECL:
*************** cxx_eval_constant_expression (const cons
*** 3414,3419 ****
--- 3510,3516 ----
  	}
        /* else fall through */
      case MODIFY_EXPR:
+       gcc_assert (jump_target == NULL || *jump_target == NULL_TREE);
        r = cxx_eval_store_expression (ctx, t, lval,
  				     non_constant_p, overflow_p);
        break;
*************** cxx_eval_constant_expression (const cons
*** 3644,3649 ****
--- 3741,3762 ----
        break;
  
      case COND_EXPR:
+       if (jump_target && *jump_target)
+ 	{
+ 	  /* When jumping to a label, the label might be either in the
+ 	     then or else blocks, so process then block first in skipping
+ 	     mode first, and if we are still in the skipping mode at its end,
+ 	     process the else block too.  */
+ 	  r = cxx_eval_constant_expression (ctx, TREE_OPERAND (t, 1),
+ 					    lval, non_constant_p, overflow_p,
+ 					    jump_target);
+ 	  if (*jump_target)
+ 	    r = cxx_eval_constant_expression (ctx, TREE_OPERAND (t, 2),
+ 					      lval, non_constant_p, overflow_p,
+ 					      jump_target);
+ 	  break;
+ 	}
+       /* FALLTHRU */
      case VEC_COND_EXPR:
        r = cxx_eval_conditional_expression (ctx, t, lval,
  					   non_constant_p, overflow_p,
*************** cxx_eval_outermost_constant_expr (tree t
*** 3825,3831 ****
    bool overflow_p = false;
    hash_map<tree,tree> map;
  
!   constexpr_ctx ctx = { NULL, &map, NULL, NULL, NULL,
  			allow_non_constant, strict };
  
    tree type = initialized_type (t);
--- 3938,3944 ----
    bool overflow_p = false;
    hash_map<tree,tree> map;
  
!   constexpr_ctx ctx = { NULL, &map, NULL, NULL, NULL, NULL,
  			allow_non_constant, strict };
  
    tree type = initialized_type (t);
*************** is_sub_constant_expr (tree t)
*** 3936,3942 ****
    bool overflow_p = false;
    hash_map <tree, tree> map;
  
!   constexpr_ctx ctx = { NULL, &map, NULL, NULL, NULL, true, true };
  
    cxx_eval_constant_expression (&ctx, t, false, &non_constant_p,
  				&overflow_p);
--- 4049,4055 ----
    bool overflow_p = false;
    hash_map <tree, tree> map;
  
!   constexpr_ctx ctx = { NULL, &map, NULL, NULL, NULL, NULL, true, true };
  
    cxx_eval_constant_expression (&ctx, t, false, &non_constant_p,
  				&overflow_p);
*************** potential_constant_expression_1 (tree t,
*** 4450,4459 ****
--- 4563,4599 ----
      case DELETE_EXPR:
      case VEC_DELETE_EXPR:
      case THROW_EXPR:
+     case OMP_PARALLEL:
+     case OMP_TASK:
+     case OMP_FOR:
+     case OMP_DISTRIBUTE:
+     case OMP_TEAMS:
+     case OMP_TARGET_DATA:
+     case OMP_TARGET:
+     case OMP_SECTIONS:
+     case OMP_ORDERED:
+     case OMP_CRITICAL:
+     case OMP_SINGLE:
+     case OMP_SECTION:
+     case OMP_MASTER:
+     case OMP_TASKGROUP:
+     case OMP_TARGET_UPDATE:
      case OMP_ATOMIC:
      case OMP_ATOMIC_READ:
      case OMP_ATOMIC_CAPTURE_OLD:
      case OMP_ATOMIC_CAPTURE_NEW:
+     case OACC_PARALLEL:
+     case OACC_KERNELS:
+     case OACC_DATA:
+     case OACC_HOST_DATA:
+     case OACC_LOOP:
+     case OACC_CACHE:
+     case OACC_DECLARE:
+     case OACC_ENTER_DATA:
+     case OACC_EXIT_DATA:
+     case OACC_UPDATE:
+     case CILK_SIMD:
+     case CILK_FOR:
        /* GCC internal stuff.  */
      case VA_ARG_EXPR:
      case OBJ_TYPE_REF:
*************** potential_constant_expression_1 (tree t,
*** 4461,4467 ****
      case ASM_EXPR:
      fail:
        if (flags & tf_error)
!         error ("expression %qE is not a constant-expression", t);
        return false;
  
      case TYPEID_EXPR:
--- 4601,4608 ----
      case ASM_EXPR:
      fail:
        if (flags & tf_error)
! 	error_at (EXPR_LOC_OR_LOC (t, input_location),
! 		  "expression %qE is not a constant-expression", t);
        return false;
  
      case TYPEID_EXPR:
diff -Nrcpad gcc-5.4.0/gcc/cp/cp-gimplify.c gcc-5.5.0/gcc/cp/cp-gimplify.c
*** gcc-5.4.0/gcc/cp/cp-gimplify.c	Thu Jun  4 08:39:01 2015
--- gcc-5.5.0/gcc/cp/cp-gimplify.c	Sat Sep 16 18:33:01 2017
*************** along with GCC; see the file COPYING3.
*** 59,65 ****
  /* Forward declarations.  */
  
  static tree cp_genericize_r (tree *, int *, void *);
! static void cp_genericize_tree (tree*);
  
  /* Local declarations.  */
  
--- 59,65 ----
  /* Forward declarations.  */
  
  static tree cp_genericize_r (tree *, int *, void *);
! static void cp_genericize_tree (tree*, bool);
  
  /* Local declarations.  */
  
*************** cp_gimplify_expr (tree *expr_p, gimple_s
*** 592,598 ****
  				  init, VEC_INIT_EXPR_VALUE_INIT (*expr_p),
  				  from_array,
  				  tf_warning_or_error);
! 	cp_genericize_tree (expr_p);
  	ret = GS_OK;
  	input_location = loc;
        }
--- 592,598 ----
  				  init, VEC_INIT_EXPR_VALUE_INIT (*expr_p),
  				  from_array,
  				  tf_warning_or_error);
! 	cp_genericize_tree (expr_p, false);
  	ret = GS_OK;
  	input_location = loc;
        }
*************** struct cp_genericize_data
*** 906,911 ****
--- 906,912 ----
    vec<tree> bind_expr_stack;
    struct cp_genericize_omp_taskreg *omp_ctx;
    bool no_sanitize_p;
+   bool handle_invisiref_parm_p;
  };
  
  /* Perform any pre-gimplification lowering of C++ front end trees to
*************** cp_genericize_r (tree *stmt_p, int *walk
*** 926,932 ****
        && omp_var_to_track (stmt))
      omp_cxx_notice_variable (wtd->omp_ctx, stmt);
  
!   if (is_invisiref_parm (stmt)
        /* Don't dereference parms in a thunk, pass the references through. */
        && !(DECL_THUNK_P (current_function_decl)
  	   && TREE_CODE (stmt) == PARM_DECL))
--- 927,934 ----
        && omp_var_to_track (stmt))
      omp_cxx_notice_variable (wtd->omp_ctx, stmt);
  
!   if (wtd->handle_invisiref_parm_p
!       && is_invisiref_parm (stmt)
        /* Don't dereference parms in a thunk, pass the references through. */
        && !(DECL_THUNK_P (current_function_decl)
  	   && TREE_CODE (stmt) == PARM_DECL))
*************** cp_genericize_r (tree *stmt_p, int *walk
*** 1279,1285 ****
  /* Lower C++ front end trees to GENERIC in T_P.  */
  
  static void
! cp_genericize_tree (tree* t_p)
  {
    struct cp_genericize_data wtd;
  
--- 1281,1287 ----
  /* Lower C++ front end trees to GENERIC in T_P.  */
  
  static void
! cp_genericize_tree (tree* t_p, bool handle_invisiref_parm_p)
  {
    struct cp_genericize_data wtd;
  
*************** cp_genericize_tree (tree* t_p)
*** 1287,1292 ****
--- 1289,1295 ----
    wtd.bind_expr_stack.create (0);
    wtd.omp_ctx = NULL;
    wtd.no_sanitize_p = false;
+   wtd.handle_invisiref_parm_p = handle_invisiref_parm_p;
    cp_walk_tree (t_p, cp_genericize_r, &wtd, NULL);
    delete wtd.p_set;
    wtd.bind_expr_stack.release ();
*************** cp_ubsan_maybe_instrument_return (tree f
*** 1337,1350 ****
      }
    if (t == NULL_TREE)
      return;
!   t = DECL_SAVED_TREE (fndecl);
!   if (TREE_CODE (t) == BIND_EXPR
!       && TREE_CODE (BIND_EXPR_BODY (t)) == STATEMENT_LIST)
!     {
!       tree_stmt_iterator i = tsi_last (BIND_EXPR_BODY (t));
!       t = ubsan_instrument_return (DECL_SOURCE_LOCATION (fndecl));
!       tsi_link_after (&i, t, TSI_NEW_STMT);
!     }
  }
  
  void
--- 1340,1350 ----
      }
    if (t == NULL_TREE)
      return;
!   tree *p = &DECL_SAVED_TREE (fndecl);
!   if (TREE_CODE (*p) == BIND_EXPR)
!     p = &BIND_EXPR_BODY (*p);
!   t = ubsan_instrument_return (DECL_SOURCE_LOCATION (fndecl));
!   append_to_statement_list (t, p);
  }
  
  void
*************** cp_genericize (tree fndecl)
*** 1384,1390 ****
  
  	  if (outer)
  	    for (var = BLOCK_VARS (outer); var; var = DECL_CHAIN (var))
! 	      if (DECL_NAME (t) == DECL_NAME (var)
  		  && DECL_HAS_VALUE_EXPR_P (var)
  		  && DECL_VALUE_EXPR (var) == t)
  		{
--- 1384,1391 ----
  
  	  if (outer)
  	    for (var = BLOCK_VARS (outer); var; var = DECL_CHAIN (var))
! 	      if (VAR_P (var)
! 		  && DECL_NAME (t) == DECL_NAME (var)
  		  && DECL_HAS_VALUE_EXPR_P (var)
  		  && DECL_VALUE_EXPR (var) == t)
  		{
*************** cp_genericize (tree fndecl)
*** 1402,1413 ****
    /* Expand all the array notations here.  */
    if (flag_cilkplus 
        && contains_array_notation_expr (DECL_SAVED_TREE (fndecl)))
!     DECL_SAVED_TREE (fndecl) = 
!       expand_array_notation_exprs (DECL_SAVED_TREE (fndecl));
  
    /* We do want to see every occurrence of the parms, so we can't just use
       walk_tree's hash functionality.  */
!   cp_genericize_tree (&DECL_SAVED_TREE (fndecl));
  
    if (flag_sanitize & SANITIZE_RETURN
        && do_ubsan_in_current_function ())
--- 1403,1414 ----
    /* Expand all the array notations here.  */
    if (flag_cilkplus 
        && contains_array_notation_expr (DECL_SAVED_TREE (fndecl)))
!     DECL_SAVED_TREE (fndecl)
!       = expand_array_notation_exprs (DECL_SAVED_TREE (fndecl));
  
    /* We do want to see every occurrence of the parms, so we can't just use
       walk_tree's hash functionality.  */
!   cp_genericize_tree (&DECL_SAVED_TREE (fndecl), true);
  
    if (flag_sanitize & SANITIZE_RETURN
        && do_ubsan_in_current_function ())
*************** cxx_omp_const_qual_no_mutable (tree decl
*** 1622,1628 ****
  
  	  if (outer)
  	    for (var = BLOCK_VARS (outer); var; var = DECL_CHAIN (var))
! 	      if (DECL_NAME (decl) == DECL_NAME (var)
  		  && (TYPE_MAIN_VARIANT (type)
  		      == TYPE_MAIN_VARIANT (TREE_TYPE (var))))
  		{
--- 1623,1630 ----
  
  	  if (outer)
  	    for (var = BLOCK_VARS (outer); var; var = DECL_CHAIN (var))
! 	      if (VAR_P (var)
! 		  && DECL_NAME (decl) == DECL_NAME (var)
  		  && (TYPE_MAIN_VARIANT (type)
  		      == TYPE_MAIN_VARIANT (TREE_TYPE (var))))
  		{
diff -Nrcpad gcc-5.4.0/gcc/cp/decl.c gcc-5.5.0/gcc/cp/decl.c
*** gcc-5.4.0/gcc/cp/decl.c	Wed May 18 15:59:13 2016
--- gcc-5.5.0/gcc/cp/decl.c	Mon Sep 18 18:34:03 2017
*************** duplicate_decls (tree newdecl, tree oldd
*** 2023,2028 ****
--- 2023,2036 ----
        if (VAR_P (newdecl))
  	{
  	  DECL_THIS_EXTERN (newdecl) |= DECL_THIS_EXTERN (olddecl);
+ 	  /* For already initialized vars, TREE_READONLY could have been
+ 	     cleared in cp_finish_decl, because the var needs runtime
+ 	     initialization or destruction.  Make sure not to set
+ 	     TREE_READONLY on it again.  */
+ 	  if (DECL_INITIALIZED_P (olddecl)
+ 	      && !DECL_EXTERNAL (olddecl)
+ 	      && !TREE_READONLY (olddecl))
+ 	    TREE_READONLY (newdecl) = 0;
  	  DECL_INITIALIZED_P (newdecl) |= DECL_INITIALIZED_P (olddecl);
  	  DECL_NONTRIVIALLY_INITIALIZED_P (newdecl)
  	    |= DECL_NONTRIVIALLY_INITIALIZED_P (olddecl);
*************** type_dependent_init_p (tree init)
*** 6341,6346 ****
--- 6349,6357 ----
    else if (TREE_CODE (init) == CONSTRUCTOR)
    /* A brace-enclosed initializer, e.g.: int i = { 3 }; ? */
      {
+       if (dependent_type_p (TREE_TYPE (init)))
+ 	return true;
+ 
        vec<constructor_elt, va_gc> *elts;
        size_t nelts;
        size_t i;
*************** finish_enum_value_list (tree enumtype)
*** 13069,13077 ****
        input_location = saved_location;
  
        /* Do not clobber shared ints.  */
!       value = copy_node (value);
  
!       TREE_TYPE (value) = enumtype;
        DECL_INITIAL (decl) = value;
      }
  
--- 13080,13091 ----
        input_location = saved_location;
  
        /* Do not clobber shared ints.  */
!       if (value != error_mark_node)
! 	{
! 	  value = copy_node (value);
  
! 	  TREE_TYPE (value) = enumtype;
! 	}
        DECL_INITIAL (decl) = value;
      }
  
*************** complete_vars (tree type)
*** 14561,14568 ****
  	  tree var = iv->decl;
  	  tree type = TREE_TYPE (var);
  
! 	  if (TYPE_MAIN_VARIANT (strip_array_types (type))
! 	      == iv->incomplete_type)
  	    {
  	      /* Complete the type of the variable.  The VAR_DECL itself
  		 will be laid out in expand_expr.  */
--- 14575,14583 ----
  	  tree var = iv->decl;
  	  tree type = TREE_TYPE (var);
  
! 	  if (type != error_mark_node
! 	      && (TYPE_MAIN_VARIANT (strip_array_types (type))
! 		  == iv->incomplete_type))
  	    {
  	      /* Complete the type of the variable.  The VAR_DECL itself
  		 will be laid out in expand_expr.  */
diff -Nrcpad gcc-5.4.0/gcc/cp/error.c gcc-5.5.0/gcc/cp/error.c
*** gcc-5.4.0/gcc/cp/error.c	Wed Aug 12 18:05:49 2015
--- gcc-5.5.0/gcc/cp/error.c	Mon Sep 25 23:49:58 2017
*************** along with GCC; see the file COPYING3.
*** 44,51 ****
  #include "ubsan.h"
  #include "internal-fn.h"
  
- #include <new>                    // For placement-new.
- 
  #define pp_separate_with_comma(PP) pp_cxx_separate_with (PP, ',')
  #define pp_separate_with_semicolon(PP) pp_cxx_separate_with (PP, ';')
  
--- 44,49 ----
*************** dump_expr (cxx_pretty_printer *pp, tree
*** 2005,2010 ****
--- 2003,2009 ----
        break;
  
      case COND_EXPR:
+     case VEC_COND_EXPR:
        pp_cxx_left_paren (pp);
        dump_expr (pp, TREE_OPERAND (t, 0), flags | TFF_EXPR_IN_PARENS);
        pp_string (pp, " ? ");
diff -Nrcpad gcc-5.4.0/gcc/cp/init.c gcc-5.5.0/gcc/cp/init.c
*** gcc-5.4.0/gcc/cp/init.c	Wed Feb 10 19:36:19 2016
--- gcc-5.5.0/gcc/cp/init.c	Mon Sep 18 18:33:58 2017
*************** expand_aggr_init_1 (tree binfo, tree tru
*** 1810,1815 ****
--- 1810,1828 ----
        return;
      }
  
+   /* List-initialization from {} becomes value-initialization for non-aggregate
+      classes with default constructors.  Handle this here when we're
+      initializing a base, so protected access works.  */
+   if (exp != true_exp && init && TREE_CODE (init) == TREE_LIST)
+     {
+       tree elt = TREE_VALUE (init);
+       if (DIRECT_LIST_INIT_P (elt)
+ 	  && CONSTRUCTOR_ELTS (elt) == 0
+ 	  && CLASSTYPE_NON_AGGREGATE (type)
+ 	  && TYPE_HAS_DEFAULT_CONSTRUCTOR (type))
+ 	init = void_type_node;
+     }
+ 
    /* If an explicit -- but empty -- initializer list was present,
       that's value-initialization.  */
    if (init == void_type_node)
*************** constant_value_1 (tree decl, bool strict
*** 2050,2056 ****
        init = DECL_INITIAL (decl);
        if (init == error_mark_node)
  	{
! 	  if (DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (decl))
  	    /* Treat the error as a constant to avoid cascading errors on
  	       excessively recursive template instantiation (c++/9335).  */
  	    return init;
--- 2063,2070 ----
        init = DECL_INITIAL (decl);
        if (init == error_mark_node)
  	{
! 	  if (TREE_CODE (decl) == CONST_DECL
! 	      || DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (decl))
  	    /* Treat the error as a constant to avoid cascading errors on
  	       excessively recursive template instantiation (c++/9335).  */
  	    return init;
diff -Nrcpad gcc-5.4.0/gcc/cp/mangle.c gcc-5.5.0/gcc/cp/mangle.c
*** gcc-5.4.0/gcc/cp/mangle.c	Fri Dec  4 11:44:17 2015
--- gcc-5.5.0/gcc/cp/mangle.c	Tue May 30 07:41:57 2017
*************** mangle_guard_variable (const tree variab
*** 3881,3886 ****
--- 3881,3887 ----
  tree
  mangle_tls_init_fn (const tree variable)
  {
+   check_abi_tags (variable);
    start_mangling (variable);
    write_string ("_ZTH");
    write_guarded_var_name (variable);
*************** mangle_tls_init_fn (const tree variable)
*** 3895,3900 ****
--- 3896,3902 ----
  tree
  mangle_tls_wrapper_fn (const tree variable)
  {
+   check_abi_tags (variable);
    start_mangling (variable);
    write_string (TLS_WRAPPER_PREFIX);
    write_guarded_var_name (variable);
diff -Nrcpad gcc-5.4.0/gcc/cp/name-lookup.c gcc-5.5.0/gcc/cp/name-lookup.c
*** gcc-5.4.0/gcc/cp/name-lookup.c	Wed Apr 22 20:52:57 2015
--- gcc-5.5.0/gcc/cp/name-lookup.c	Thu Jan 12 12:40:28 2017
*************** set_namespace_binding_1 (tree name, tree
*** 3477,3483 ****
    if (scope == NULL_TREE)
      scope = global_namespace;
    b = binding_for_name (NAMESPACE_LEVEL (scope), name);
!   if (!b->value || TREE_CODE (val) == OVERLOAD || val == error_mark_node)
      b->value = val;
    else
      supplement_binding (b, val);
--- 3477,3488 ----
    if (scope == NULL_TREE)
      scope = global_namespace;
    b = binding_for_name (NAMESPACE_LEVEL (scope), name);
!   if (!b->value
!       /* For templates and using we create a single element OVERLOAD.
! 	 Look for the chain to know whether this is really augmenting
! 	 an existing overload.  */
!       || (TREE_CODE (val) == OVERLOAD && OVL_CHAIN (val))
!       || val == error_mark_node)
      b->value = val;
    else
      supplement_binding (b, val);
diff -Nrcpad gcc-5.4.0/gcc/cp/parser.c gcc-5.5.0/gcc/cp/parser.c
*** gcc-5.4.0/gcc/cp/parser.c	Wed Mar 30 12:31:21 2016
--- gcc-5.5.0/gcc/cp/parser.c	Tue May 30 08:04:55 2017
*************** cp_parser_postfix_expression (cp_parser
*** 5894,5900 ****
  	   can be used in constant-expressions.  */
  	if (!cast_valid_in_integral_constant_expression_p (type)
  	    && cp_parser_non_integral_constant_expression (parser, NIC_CAST))
! 	  return error_mark_node;
  
  	switch (keyword)
  	  {
--- 5894,5903 ----
  	   can be used in constant-expressions.  */
  	if (!cast_valid_in_integral_constant_expression_p (type)
  	    && cp_parser_non_integral_constant_expression (parser, NIC_CAST))
! 	  {
! 	    postfix_expression = error_mark_node;
! 	    break;
! 	  }
  
  	switch (keyword)
  	  {
*************** cp_parser_postfix_expression (cp_parser
*** 5966,5972 ****
  	parser->type_definition_forbidden_message = saved_message;
  	/* `typeid' may not appear in an integral constant expression.  */
  	if (cp_parser_non_integral_constant_expression (parser, NIC_TYPEID))
! 	  return error_mark_node;
        }
        break;
  
--- 5969,5975 ----
  	parser->type_definition_forbidden_message = saved_message;
  	/* `typeid' may not appear in an integral constant expression.  */
  	if (cp_parser_non_integral_constant_expression (parser, NIC_TYPEID))
! 	  postfix_expression = error_mark_node;
        }
        break;
  
*************** cp_parser_postfix_expression (cp_parser
*** 6045,6067 ****
  		    /*cast_p=*/false, /*allow_expansion_p=*/true,
  		    /*non_constant_p=*/NULL);
  	if (vec == NULL)
! 	  return error_mark_node;
  
  	FOR_EACH_VEC_ELT (*vec, i, p)
  	  mark_exp_read (p);
  
  	if (vec->length () == 2)
! 	  return build_x_vec_perm_expr (loc, (*vec)[0], NULL_TREE, (*vec)[1],
! 					 tf_warning_or_error);
  	else if (vec->length () == 3)
! 	  return build_x_vec_perm_expr (loc, (*vec)[0], (*vec)[1], (*vec)[2],
! 					 tf_warning_or_error);
  	else
! 	{
! 	  error_at (loc, "wrong number of arguments to "
! 	      "%<__builtin_shuffle%>");
! 	  return error_mark_node;
! 	}
  	break;
        }
  
--- 6048,6075 ----
  		    /*cast_p=*/false, /*allow_expansion_p=*/true,
  		    /*non_constant_p=*/NULL);
  	if (vec == NULL)
! 	  {
! 	    postfix_expression = error_mark_node;
! 	    break;
! 	  }
  
  	FOR_EACH_VEC_ELT (*vec, i, p)
  	  mark_exp_read (p);
  
  	if (vec->length () == 2)
! 	  postfix_expression
! 	    = build_x_vec_perm_expr (loc, (*vec)[0], NULL_TREE, (*vec)[1],
! 				     tf_warning_or_error);
  	else if (vec->length () == 3)
! 	  postfix_expression
! 	    = build_x_vec_perm_expr (loc, (*vec)[0], (*vec)[1], (*vec)[2],
! 				     tf_warning_or_error);
  	else
! 	  {
! 	    error_at (loc, "wrong number of arguments to "
! 			   "%<__builtin_shuffle%>");
! 	    postfix_expression = error_mark_node;
! 	  }
  	break;
        }
  
*************** cp_parser_std_attribute_list (cp_parser
*** 22528,22535 ****
        if (token->type == CPP_ELLIPSIS)
  	{
  	  cp_lexer_consume_token (parser->lexer);
! 	  TREE_VALUE (attribute)
! 	    = make_pack_expansion (TREE_VALUE (attribute));
  	  token = cp_lexer_peek_token (parser->lexer);
  	}
        if (token->type != CPP_COMMA)
--- 22536,22547 ----
        if (token->type == CPP_ELLIPSIS)
  	{
  	  cp_lexer_consume_token (parser->lexer);
! 	  if (attribute == NULL_TREE)
! 	    error_at (token->location,
! 		      "expected attribute before %<...%>");
! 	  else
! 	    TREE_VALUE (attribute)
! 	      = make_pack_expansion (TREE_VALUE (attribute));
  	  token = cp_lexer_peek_token (parser->lexer);
  	}
        if (token->type != CPP_COMMA)
*************** cp_parser_std_attribute_spec (cp_parser
*** 22598,22608 ****
  
        if (!cp_parser_parse_definitely (parser))
  	{
! 	  gcc_assert (alignas_expr == error_mark_node
! 		      || alignas_expr == NULL_TREE);
! 
! 	  alignas_expr =
! 	    cp_parser_assignment_expression (parser);
  	  if (alignas_expr == error_mark_node)
  	    cp_parser_skip_to_end_of_statement (parser);
  	  if (alignas_expr == NULL_TREE
--- 22610,22616 ----
  
        if (!cp_parser_parse_definitely (parser))
  	{
! 	  alignas_expr = cp_parser_assignment_expression (parser);
  	  if (alignas_expr == error_mark_node)
  	    cp_parser_skip_to_end_of_statement (parser);
  	  if (alignas_expr == NULL_TREE
*************** cp_parser_save_member_function_body (cp_
*** 23964,23969 ****
--- 23972,23978 ----
    cp_token *first;
    cp_token *last;
    tree fn;
+   bool function_try_block = false;
  
    /* Create the FUNCTION_DECL.  */
    fn = grokmethod (decl_specifiers, declarator, attributes);
*************** cp_parser_save_member_function_body (cp_
*** 23984,23992 ****
    /* Save away the tokens that make up the body of the
       function.  */
    first = parser->lexer->next_token;
    /* Handle function try blocks.  */
    if (cp_lexer_next_token_is_keyword (parser->lexer, RID_TRY))
!     cp_lexer_consume_token (parser->lexer);
    /* We can have braced-init-list mem-initializers before the fn body.  */
    if (cp_lexer_next_token_is (parser->lexer, CPP_COLON))
      {
--- 23993,24035 ----
    /* Save away the tokens that make up the body of the
       function.  */
    first = parser->lexer->next_token;
+ 
+   if (cp_lexer_next_token_is_keyword (parser->lexer, RID_TRANSACTION_RELAXED))
+     cp_lexer_consume_token (parser->lexer);
+   else if (cp_lexer_next_token_is_keyword (parser->lexer,
+ 					   RID_TRANSACTION_ATOMIC))
+     {
+       cp_lexer_consume_token (parser->lexer);
+       /* Match cp_parser_txn_attribute_opt [[ identifier ]].  */
+       if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_SQUARE)
+ 	  && cp_lexer_nth_token_is (parser->lexer, 2, CPP_OPEN_SQUARE)
+ 	  && (cp_lexer_nth_token_is (parser->lexer, 3, CPP_NAME)
+ 	      || cp_lexer_nth_token_is (parser->lexer, 3, CPP_KEYWORD))
+ 	  && cp_lexer_nth_token_is (parser->lexer, 4, CPP_CLOSE_SQUARE)
+ 	  && cp_lexer_nth_token_is (parser->lexer, 5, CPP_CLOSE_SQUARE))
+ 	{
+ 	  cp_lexer_consume_token (parser->lexer);
+ 	  cp_lexer_consume_token (parser->lexer);
+ 	  cp_lexer_consume_token (parser->lexer);
+ 	  cp_lexer_consume_token (parser->lexer);
+ 	  cp_lexer_consume_token (parser->lexer);
+ 	}
+       else
+ 	while (cp_next_tokens_can_be_gnu_attribute_p (parser)
+ 	       && cp_lexer_nth_token_is (parser->lexer, 2, CPP_OPEN_PAREN))
+ 	  {
+ 	    cp_lexer_consume_token (parser->lexer);
+ 	    if (cp_parser_cache_group (parser, CPP_CLOSE_PAREN, /*depth=*/0))
+ 	      break;
+ 	  }
+     }
+ 
    /* Handle function try blocks.  */
    if (cp_lexer_next_token_is_keyword (parser->lexer, RID_TRY))
!     {
!       cp_lexer_consume_token (parser->lexer);
!       function_try_block = true;
!     }
    /* We can have braced-init-list mem-initializers before the fn body.  */
    if (cp_lexer_next_token_is (parser->lexer, CPP_COLON))
      {
*************** cp_parser_save_member_function_body (cp_
*** 24004,24011 ****
      }
    cp_parser_cache_group (parser, CPP_CLOSE_BRACE, /*depth=*/0);
    /* Handle function try blocks.  */
!   while (cp_lexer_next_token_is_keyword (parser->lexer, RID_CATCH))
!     cp_parser_cache_group (parser, CPP_CLOSE_BRACE, /*depth=*/0);
    last = parser->lexer->next_token;
  
    /* Save away the inline definition; we will process it when the
--- 24047,24055 ----
      }
    cp_parser_cache_group (parser, CPP_CLOSE_BRACE, /*depth=*/0);
    /* Handle function try blocks.  */
!   if (function_try_block)
!     while (cp_lexer_next_token_is_keyword (parser->lexer, RID_CATCH))
!       cp_parser_cache_group (parser, CPP_CLOSE_BRACE, /*depth=*/0);
    last = parser->lexer->next_token;
  
    /* Save away the inline definition; we will process it when the
*************** cp_parser_omp_teams (cp_parser *parser,
*** 31356,31361 ****
--- 31400,31406 ----
  	  OMP_TEAMS_CLAUSES (ret) = clauses;
  	  OMP_TEAMS_BODY (ret) = body;
  	  OMP_TEAMS_COMBINED (ret) = 1;
+ 	  SET_EXPR_LOCATION (ret, loc);
  	  return add_stmt (ret);
  	}
      }
*************** cp_parser_omp_teams (cp_parser *parser,
*** 31377,31382 ****
--- 31422,31428 ----
    TREE_TYPE (stmt) = void_type_node;
    OMP_TEAMS_CLAUSES (stmt) = clauses;
    OMP_TEAMS_BODY (stmt) = cp_parser_omp_structured_block (parser);
+   SET_EXPR_LOCATION (stmt, loc);
  
    return add_stmt (stmt);
  }
*************** cp_parser_omp_target (cp_parser *parser,
*** 31501,31506 ****
--- 31547,31553 ----
  	  TREE_TYPE (stmt) = void_type_node;
  	  OMP_TARGET_CLAUSES (stmt) = cclauses[C_OMP_CLAUSE_SPLIT_TARGET];
  	  OMP_TARGET_BODY (stmt) = body;
+ 	  SET_EXPR_LOCATION (stmt, pragma_tok->location);
  	  add_stmt (stmt);
  	  return true;
  	}
*************** cp_parser_omp_target (cp_parser *parser,
*** 31522,31527 ****
--- 31569,31579 ----
  	}
      }
  
+   if (!flag_openmp)  /* flag_openmp_simd  */
+     {
+       cp_parser_skip_to_pragma_eol (parser, pragma_tok);
+       return false;
+     }
    tree stmt = make_node (OMP_TARGET);
    TREE_TYPE (stmt) = void_type_node;
  
diff -Nrcpad gcc-5.4.0/gcc/cp/pt.c gcc-5.5.0/gcc/cp/pt.c
*** gcc-5.4.0/gcc/cp/pt.c	Wed May 18 15:59:19 2016
--- gcc-5.5.0/gcc/cp/pt.c	Tue May 30 07:46:27 2017
*************** coerce_template_parameter_pack (tree par
*** 6912,6922 ****
  
    /* Convert the remaining arguments, which will be a part of the
       parameter pack "parm".  */
    for (; arg_idx < nargs; ++arg_idx)
      {
        tree arg = TREE_VEC_ELT (inner_args, arg_idx);
        tree actual_parm = TREE_VALUE (parm);
!       int pack_idx = arg_idx - parm_idx;
  
        if (packed_parms)
          {
--- 6912,6923 ----
  
    /* Convert the remaining arguments, which will be a part of the
       parameter pack "parm".  */
+   int first_pack_arg = arg_idx;
    for (; arg_idx < nargs; ++arg_idx)
      {
        tree arg = TREE_VEC_ELT (inner_args, arg_idx);
        tree actual_parm = TREE_VALUE (parm);
!       int pack_idx = arg_idx - first_pack_arg;
  
        if (packed_parms)
          {
*************** coerce_template_parameter_pack (tree par
*** 6945,6956 ****
        TREE_VEC_ELT (packed_args, pack_idx) = arg;
      }
  
!   if (arg_idx - parm_idx < TREE_VEC_LENGTH (packed_args)
        && TREE_VEC_LENGTH (packed_args) > 0)
      {
        if (complain & tf_error)
  	error ("wrong number of template arguments (%d, should be %d)",
! 	       arg_idx - parm_idx, TREE_VEC_LENGTH (packed_args));
        return error_mark_node;
      }
  
--- 6946,6957 ----
        TREE_VEC_ELT (packed_args, pack_idx) = arg;
      }
  
!   if (arg_idx - first_pack_arg < TREE_VEC_LENGTH (packed_args)
        && TREE_VEC_LENGTH (packed_args) > 0)
      {
        if (complain & tf_error)
  	error ("wrong number of template arguments (%d, should be %d)",
! 	       arg_idx - first_pack_arg, TREE_VEC_LENGTH (packed_args));
        return error_mark_node;
      }
  
*************** tsubst_init (tree init, tree decl, tree
*** 12987,12993 ****
  
    init = tsubst_expr (init, args, complain, in_decl, false);
  
!   if (!init)
      {
        /* If we had an initializer but it
  	 instantiated to nothing,
--- 12988,12994 ----
  
    init = tsubst_expr (init, args, complain, in_decl, false);
  
!   if (!init && TREE_TYPE (decl) != error_mark_node)
      {
        /* If we had an initializer but it
  	 instantiated to nothing,
*************** tsubst_copy (tree t, tree args, tsubst_f
*** 13287,13293 ****
  	      len = TREE_VEC_LENGTH (expanded);
  	      /* Set TREE_USED for the benefit of -Wunused.  */
  	      for (int i = 0; i < len; i++)
! 		TREE_USED (TREE_VEC_ELT (expanded, i)) = true;
  	    }
  
  	  if (expanded == error_mark_node)
--- 13288,13295 ----
  	      len = TREE_VEC_LENGTH (expanded);
  	      /* Set TREE_USED for the benefit of -Wunused.  */
  	      for (int i = 0; i < len; i++)
! 		if (DECL_P (TREE_VEC_ELT (expanded, i)))
! 		  TREE_USED (TREE_VEC_ELT (expanded, i)) = true;
  	    }
  
  	  if (expanded == error_mark_node)
*************** unify (tree tparms, tree targs, tree par
*** 18805,18811 ****
        /* An unresolved overload is a nondeduced context.  */
        if (is_overloaded_fn (parm) || type_unknown_p (parm))
  	return unify_success (explain_p);
!       gcc_assert (EXPR_P (parm));
  
        /* We must be looking at an expression.  This can happen with
  	 something like:
--- 18807,18813 ----
        /* An unresolved overload is a nondeduced context.  */
        if (is_overloaded_fn (parm) || type_unknown_p (parm))
  	return unify_success (explain_p);
!       gcc_assert (EXPR_P (parm) || TREE_CODE (parm) == TRAIT_EXPR);
  
        /* We must be looking at an expression.  This can happen with
  	 something like:
*************** instantiate_decl (tree d, int defer_ok,
*** 20409,20415 ****
    else
      {
        deleted_p = false;
!       pattern_defined = ! DECL_IN_AGGR_P (code_pattern);
      }
  
    /* We may be in the middle of deferred access check.  Disable it now.  */
--- 20411,20420 ----
    else
      {
        deleted_p = false;
!       if (DECL_CLASS_SCOPE_P (code_pattern))
! 	pattern_defined = ! DECL_IN_AGGR_P (code_pattern);
!       else
! 	pattern_defined = ! DECL_EXTERNAL (code_pattern);
      }
  
    /* We may be in the middle of deferred access check.  Disable it now.  */
diff -Nrcpad gcc-5.4.0/gcc/cp/semantics.c gcc-5.5.0/gcc/cp/semantics.c
*** gcc-5.4.0/gcc/cp/semantics.c	Wed Mar  2 02:46:19 2016
--- gcc-5.5.0/gcc/cp/semantics.c	Sat Sep 16 18:31:58 2017
*************** handle_omp_array_sections_1 (tree c, tre
*** 4297,4303 ****
  	return error_mark_node;
        if (TREE_CODE (t) != VAR_DECL && TREE_CODE (t) != PARM_DECL)
  	{
! 	  if (processing_template_decl)
  	    return NULL_TREE;
  	  if (DECL_P (t))
  	    error_at (OMP_CLAUSE_LOCATION (c),
--- 4297,4303 ----
  	return error_mark_node;
        if (TREE_CODE (t) != VAR_DECL && TREE_CODE (t) != PARM_DECL)
  	{
! 	  if (processing_template_decl && TREE_CODE (t) != OVERLOAD)
  	    return NULL_TREE;
  	  if (DECL_P (t))
  	    error_at (OMP_CLAUSE_LOCATION (c),
*************** handle_omp_array_sections_1 (tree c, tre
*** 4410,4418 ****
  	  && TREE_CODE (TYPE_MAX_VALUE (TYPE_DOMAIN (type)))
  			== INTEGER_CST)
  	{
! 	  tree size = size_binop (PLUS_EXPR,
! 				  TYPE_MAX_VALUE (TYPE_DOMAIN (type)),
! 				  size_one_node);
  	  if (TREE_CODE (low_bound) == INTEGER_CST)
  	    {
  	      if (tree_int_cst_lt (size, low_bound))
--- 4410,4418 ----
  	  && TREE_CODE (TYPE_MAX_VALUE (TYPE_DOMAIN (type)))
  			== INTEGER_CST)
  	{
! 	  tree size
! 	    = fold_convert (sizetype, TYPE_MAX_VALUE (TYPE_DOMAIN (type)));
! 	  size = size_binop (PLUS_EXPR, size, size_one_node);
  	  if (TREE_CODE (low_bound) == INTEGER_CST)
  	    {
  	      if (tree_int_cst_lt (size, low_bound))
*************** finish_omp_clauses (tree clauses)
*** 5392,5398 ****
  	  t = OMP_CLAUSE_DECL (c);
  	  if (!VAR_P (t) && TREE_CODE (t) != PARM_DECL)
  	    {
! 	      if (processing_template_decl)
  		break;
  	      if (DECL_P (t))
  		error ("%qD is not a variable in clause %qs", t,
--- 5392,5398 ----
  	  t = OMP_CLAUSE_DECL (c);
  	  if (!VAR_P (t) && TREE_CODE (t) != PARM_DECL)
  	    {
! 	      if (processing_template_decl && TREE_CODE (t) != OVERLOAD)
  		break;
  	      if (DECL_P (t))
  		error ("%qD is not a variable in clause %qs", t,
*************** finish_omp_clauses (tree clauses)
*** 5417,5423 ****
  	  t = OMP_CLAUSE_DECL (c);
  	  if (!VAR_P (t) && TREE_CODE (t) != PARM_DECL)
  	    {
! 	      if (processing_template_decl)
  		break;
  	      if (DECL_P (t))
  		error ("%qD is not a variable in clause %<firstprivate%>", t);
--- 5417,5423 ----
  	  t = OMP_CLAUSE_DECL (c);
  	  if (!VAR_P (t) && TREE_CODE (t) != PARM_DECL)
  	    {
! 	      if (processing_template_decl && TREE_CODE (t) != OVERLOAD)
  		break;
  	      if (DECL_P (t))
  		error ("%qD is not a variable in clause %<firstprivate%>", t);
*************** finish_omp_clauses (tree clauses)
*** 5439,5445 ****
  	  t = OMP_CLAUSE_DECL (c);
  	  if (!VAR_P (t) && TREE_CODE (t) != PARM_DECL)
  	    {
! 	      if (processing_template_decl)
  		break;
  	      if (DECL_P (t))
  		error ("%qD is not a variable in clause %<lastprivate%>", t);
--- 5439,5445 ----
  	  t = OMP_CLAUSE_DECL (c);
  	  if (!VAR_P (t) && TREE_CODE (t) != PARM_DECL)
  	    {
! 	      if (processing_template_decl && TREE_CODE (t) != OVERLOAD)
  		break;
  	      if (DECL_P (t))
  		error ("%qD is not a variable in clause %<lastprivate%>", t);
*************** finish_omp_clauses (tree clauses)
*** 5546,5554 ****
  	  else
  	    {
  	      t = mark_rvalue_use (t);
- 	      t = maybe_constant_value (t);
  	      if (!processing_template_decl)
  		{
  		  if (TREE_CODE (t) != INTEGER_CST
  		      || tree_int_cst_sgn (t) != 1)
  		    {
--- 5546,5554 ----
  	  else
  	    {
  	      t = mark_rvalue_use (t);
  	      if (!processing_template_decl)
  		{
+ 		  t = maybe_constant_value (t);
  		  if (TREE_CODE (t) != INTEGER_CST
  		      || tree_int_cst_sgn (t) != 1)
  		    {
*************** finish_omp_clauses (tree clauses)
*** 5683,5689 ****
  	  t = OMP_CLAUSE_DECL (c);
  	  if (TREE_CODE (t) != VAR_DECL && TREE_CODE (t) != PARM_DECL)
  	    {
! 	      if (processing_template_decl)
  		break;
  	      if (DECL_P (t))
  		error ("%qD is not a variable in %<aligned%> clause", t);
--- 5683,5689 ----
  	  t = OMP_CLAUSE_DECL (c);
  	  if (TREE_CODE (t) != VAR_DECL && TREE_CODE (t) != PARM_DECL)
  	    {
! 	      if (processing_template_decl && TREE_CODE (t) != OVERLOAD)
  		break;
  	      if (DECL_P (t))
  		error ("%qD is not a variable in %<aligned%> clause", t);
*************** finish_omp_clauses (tree clauses)
*** 5726,5734 ****
  	  else
  	    {
  	      t = mark_rvalue_use (t);
- 	      t = maybe_constant_value (t);
  	      if (!processing_template_decl)
  		{
  		  if (TREE_CODE (t) != INTEGER_CST
  		      || tree_int_cst_sgn (t) != 1)
  		    {
--- 5726,5734 ----
  	  else
  	    {
  	      t = mark_rvalue_use (t);
  	      if (!processing_template_decl)
  		{
+ 		  t = maybe_constant_value (t);
  		  if (TREE_CODE (t) != INTEGER_CST
  		      || tree_int_cst_sgn (t) != 1)
  		    {
*************** finish_omp_clauses (tree clauses)
*** 5753,5759 ****
  	    remove = true;
  	  else if (TREE_CODE (t) != VAR_DECL && TREE_CODE (t) != PARM_DECL)
  	    {
! 	      if (processing_template_decl)
  		break;
  	      if (DECL_P (t))
  		error ("%qD is not a variable in %<depend%> clause", t);
--- 5753,5759 ----
  	    remove = true;
  	  else if (TREE_CODE (t) != VAR_DECL && TREE_CODE (t) != PARM_DECL)
  	    {
! 	      if (processing_template_decl && TREE_CODE (t) != OVERLOAD)
  		break;
  	      if (DECL_P (t))
  		error ("%qD is not a variable in %<depend%> clause", t);
*************** finish_omp_clauses (tree clauses)
*** 5795,5801 ****
  	    remove = true;
  	  else if (TREE_CODE (t) != VAR_DECL && TREE_CODE (t) != PARM_DECL)
  	    {
! 	      if (processing_template_decl)
  		break;
  	      if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_MAP
  		  && OMP_CLAUSE_MAP_KIND (c) == GOMP_MAP_POINTER)
--- 5795,5801 ----
  	    remove = true;
  	  else if (TREE_CODE (t) != VAR_DECL && TREE_CODE (t) != PARM_DECL)
  	    {
! 	      if (processing_template_decl && TREE_CODE (t) != OVERLOAD)
  		break;
  	      if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_MAP
  		  && OMP_CLAUSE_MAP_KIND (c) == GOMP_MAP_POINTER)
*************** apply_deduced_return_type (tree fco, tre
*** 7698,7703 ****
--- 7698,7707 ----
    if (TREE_TYPE (result) == return_type)
      return;
  
+   if (!processing_template_decl && !VOID_TYPE_P (return_type)
+       && !complete_type_or_else (return_type, NULL_TREE))
+     return;
+ 
    /* We already have a DECL_RESULT from start_preparsed_function.
       Now we need to redo the work it and allocate_struct_function
       did to reflect the new type.  */
*************** apply_deduced_return_type (tree fco, tre
*** 7713,7720 ****
  
    if (!processing_template_decl)
      {
-       if (!VOID_TYPE_P (TREE_TYPE (result)))
- 	complete_type_or_else (TREE_TYPE (result), NULL_TREE);
        bool aggr = aggregate_value_p (result, fco);
  #ifdef PCC_STATIC_STRUCT_RETURN
        cfun->returns_pcc_struct = aggr;
--- 7717,7722 ----
diff -Nrcpad gcc-5.4.0/gcc/cp/tree.c gcc-5.5.0/gcc/cp/tree.c
*** gcc-5.4.0/gcc/cp/tree.c	Mon Mar 21 12:09:48 2016
--- gcc-5.5.0/gcc/cp/tree.c	Tue May 30 08:24:21 2017
*************** lvalue_kind (const_tree ref)
*** 129,134 ****
--- 129,145 ----
        return op1_lvalue_kind;
  
      case COMPONENT_REF:
+       if (BASELINK_P (TREE_OPERAND (ref, 1)))
+ 	{
+ 	  tree fn = BASELINK_FUNCTIONS (TREE_OPERAND (ref, 1));
+ 
+ 	  /* For static member function recurse on the BASELINK, we can get
+ 	     here e.g. from reference_binding.  If BASELINK_FUNCTIONS is
+ 	     OVERLOAD, the overload is resolved first if possible through
+ 	     resolve_address_of_overloaded_function.  */
+ 	  if (TREE_CODE (fn) == FUNCTION_DECL && DECL_STATIC_FUNCTION_P (fn))
+ 	    return lvalue_kind (TREE_OPERAND (ref, 1));
+ 	}
        op1_lvalue_kind = lvalue_kind (TREE_OPERAND (ref, 0));
        /* Look at the member designator.  */
        if (!op1_lvalue_kind)
diff -Nrcpad gcc-5.4.0/gcc/cp/typeck.c gcc-5.5.0/gcc/cp/typeck.c
*** gcc-5.4.0/gcc/cp/typeck.c	Wed Apr  6 07:45:34 2016
--- gcc-5.5.0/gcc/cp/typeck.c	Tue May 30 07:53:35 2017
*************** cp_build_unary_op (enum tree_code code,
*** 5700,5705 ****
--- 5700,5707 ----
  	errstring = _("wrong type argument to bit-complement");
        else if (!noconvert && CP_INTEGRAL_TYPE_P (TREE_TYPE (arg)))
  	arg = cp_perform_integral_promotions (arg, complain);
+       else if (!noconvert && VECTOR_TYPE_P (TREE_TYPE (arg)))
+ 	arg = mark_rvalue_use (arg);
        break;
  
      case ABS_EXPR:
*************** build_x_conditional_expr (location_t loc
*** 6125,6132 ****
      }
  
    expr = build_conditional_expr (loc, ifexp, op1, op2, complain);
!   if (processing_template_decl && expr != error_mark_node
!       && TREE_CODE (expr) != VEC_COND_EXPR)
      {
        tree min = build_min_non_dep (COND_EXPR, expr,
  				    orig_ifexp, orig_op1, orig_op2);
--- 6127,6133 ----
      }
  
    expr = build_conditional_expr (loc, ifexp, op1, op2, complain);
!   if (processing_template_decl && expr != error_mark_node)
      {
        tree min = build_min_non_dep (COND_EXPR, expr,
  				    orig_ifexp, orig_op1, orig_op2);
diff -Nrcpad gcc-5.4.0/gcc/cselib.c gcc-5.5.0/gcc/cselib.c
*** gcc-5.4.0/gcc/cselib.c	Fri Jan  9 20:18:42 2015
--- gcc-5.5.0/gcc/cselib.c	Tue May 30 08:22:41 2017
*************** static void unchain_one_value (cselib_va
*** 71,77 ****
  static void unchain_one_elt_list (struct elt_list **);
  static void unchain_one_elt_loc_list (struct elt_loc_list **);
  static void remove_useless_values (void);
! static int rtx_equal_for_cselib_1 (rtx, rtx, machine_mode);
  static unsigned int cselib_hash_rtx (rtx, int, machine_mode);
  static cselib_val *new_cselib_val (unsigned int, machine_mode, rtx);
  static void add_mem_for_addr (cselib_val *, cselib_val *, rtx);
--- 71,77 ----
  static void unchain_one_elt_list (struct elt_list **);
  static void unchain_one_elt_loc_list (struct elt_loc_list **);
  static void remove_useless_values (void);
! static int rtx_equal_for_cselib_1 (rtx, rtx, machine_mode, int);
  static unsigned int cselib_hash_rtx (rtx, int, machine_mode);
  static cselib_val *new_cselib_val (unsigned int, machine_mode, rtx);
  static void add_mem_for_addr (cselib_val *, cselib_val *, rtx);
*************** cselib_hasher::equal (const value_type *
*** 147,153 ****
    /* We don't guarantee that distinct rtx's have different hash values,
       so we need to do a comparison.  */
    for (l = v->locs; l; l = l->next)
!     if (rtx_equal_for_cselib_1 (l->loc, x, memmode))
        {
  	promote_debug_loc (l);
  	return true;
--- 147,153 ----
    /* We don't guarantee that distinct rtx's have different hash values,
       so we need to do a comparison.  */
    for (l = v->locs; l; l = l->next)
!     if (rtx_equal_for_cselib_1 (l->loc, x, memmode, 0))
        {
  	promote_debug_loc (l);
  	return true;
*************** cselib_reg_set_mode (const_rtx x)
*** 812,818 ****
  int
  rtx_equal_for_cselib_p (rtx x, rtx y)
  {
!   return rtx_equal_for_cselib_1 (x, y, VOIDmode);
  }
  
  /* If x is a PLUS or an autoinc operation, expand the operation,
--- 812,818 ----
  int
  rtx_equal_for_cselib_p (rtx x, rtx y)
  {
!   return rtx_equal_for_cselib_1 (x, y, VOIDmode, 0);
  }
  
  /* If x is a PLUS or an autoinc operation, expand the operation,
*************** autoinc_split (rtx x, rtx *off, machine_
*** 862,868 ****
     addresses, MEMMODE should be VOIDmode.  */
  
  static int
! rtx_equal_for_cselib_1 (rtx x, rtx y, machine_mode memmode)
  {
    enum rtx_code code;
    const char *fmt;
--- 862,868 ----
     addresses, MEMMODE should be VOIDmode.  */
  
  static int
! rtx_equal_for_cselib_1 (rtx x, rtx y, machine_mode memmode, int depth)
  {
    enum rtx_code code;
    const char *fmt;
*************** rtx_equal_for_cselib_1 (rtx x, rtx y, ma
*** 895,900 ****
--- 895,903 ----
        if (GET_CODE (y) == VALUE)
  	return e == canonical_cselib_val (CSELIB_VAL_PTR (y));
  
+       if (depth == 128)
+ 	return 0;
+ 
        for (l = e->locs; l; l = l->next)
  	{
  	  rtx t = l->loc;
*************** rtx_equal_for_cselib_1 (rtx x, rtx y, ma
*** 904,910 ****
  	     list.  */
  	  if (REG_P (t) || MEM_P (t) || GET_CODE (t) == VALUE)
  	    continue;
! 	  else if (rtx_equal_for_cselib_1 (t, y, memmode))
  	    return 1;
  	}
  
--- 907,913 ----
  	     list.  */
  	  if (REG_P (t) || MEM_P (t) || GET_CODE (t) == VALUE)
  	    continue;
! 	  else if (rtx_equal_for_cselib_1 (t, y, memmode, depth + 1))
  	    return 1;
  	}
  
*************** rtx_equal_for_cselib_1 (rtx x, rtx y, ma
*** 915,927 ****
        cselib_val *e = canonical_cselib_val (CSELIB_VAL_PTR (y));
        struct elt_loc_list *l;
  
        for (l = e->locs; l; l = l->next)
  	{
  	  rtx t = l->loc;
  
  	  if (REG_P (t) || MEM_P (t) || GET_CODE (t) == VALUE)
  	    continue;
! 	  else if (rtx_equal_for_cselib_1 (x, t, memmode))
  	    return 1;
  	}
  
--- 918,933 ----
        cselib_val *e = canonical_cselib_val (CSELIB_VAL_PTR (y));
        struct elt_loc_list *l;
  
+       if (depth == 128)
+ 	return 0;
+ 
        for (l = e->locs; l; l = l->next)
  	{
  	  rtx t = l->loc;
  
  	  if (REG_P (t) || MEM_P (t) || GET_CODE (t) == VALUE)
  	    continue;
! 	  else if (rtx_equal_for_cselib_1 (x, t, memmode, depth + 1))
  	    return 1;
  	}
  
*************** rtx_equal_for_cselib_1 (rtx x, rtx y, ma
*** 942,953 ****
        if (!xoff != !yoff)
  	return 0;
  
!       if (xoff && !rtx_equal_for_cselib_1 (xoff, yoff, memmode))
  	return 0;
  
        /* Don't recurse if nothing changed.  */
        if (x != xorig || y != yorig)
! 	return rtx_equal_for_cselib_1 (x, y, memmode);
  
        return 0;
      }
--- 948,959 ----
        if (!xoff != !yoff)
  	return 0;
  
!       if (xoff && !rtx_equal_for_cselib_1 (xoff, yoff, memmode, depth))
  	return 0;
  
        /* Don't recurse if nothing changed.  */
        if (x != xorig || y != yorig)
! 	return rtx_equal_for_cselib_1 (x, y, memmode, depth);
  
        return 0;
      }
*************** rtx_equal_for_cselib_1 (rtx x, rtx y, ma
*** 978,984 ****
      case MEM:
        /* We have to compare any autoinc operations in the addresses
  	 using this MEM's mode.  */
!       return rtx_equal_for_cselib_1 (XEXP (x, 0), XEXP (y, 0), GET_MODE (x));
  
      default:
        break;
--- 984,991 ----
      case MEM:
        /* We have to compare any autoinc operations in the addresses
  	 using this MEM's mode.  */
!       return rtx_equal_for_cselib_1 (XEXP (x, 0), XEXP (y, 0), GET_MODE (x),
! 				     depth);
  
      default:
        break;
*************** rtx_equal_for_cselib_1 (rtx x, rtx y, ma
*** 1013,1029 ****
  	  /* And the corresponding elements must match.  */
  	  for (j = 0; j < XVECLEN (x, i); j++)
  	    if (! rtx_equal_for_cselib_1 (XVECEXP (x, i, j),
! 					  XVECEXP (y, i, j), memmode))
  	      return 0;
  	  break;
  
  	case 'e':
  	  if (i == 1
  	      && targetm.commutative_p (x, UNKNOWN)
! 	      && rtx_equal_for_cselib_1 (XEXP (x, 1), XEXP (y, 0), memmode)
! 	      && rtx_equal_for_cselib_1 (XEXP (x, 0), XEXP (y, 1), memmode))
  	    return 1;
! 	  if (! rtx_equal_for_cselib_1 (XEXP (x, i), XEXP (y, i), memmode))
  	    return 0;
  	  break;
  
--- 1020,1039 ----
  	  /* And the corresponding elements must match.  */
  	  for (j = 0; j < XVECLEN (x, i); j++)
  	    if (! rtx_equal_for_cselib_1 (XVECEXP (x, i, j),
! 					  XVECEXP (y, i, j), memmode, depth))
  	      return 0;
  	  break;
  
  	case 'e':
  	  if (i == 1
  	      && targetm.commutative_p (x, UNKNOWN)
! 	      && rtx_equal_for_cselib_1 (XEXP (x, 1), XEXP (y, 0), memmode,
! 					 depth)
! 	      && rtx_equal_for_cselib_1 (XEXP (x, 0), XEXP (y, 1), memmode,
! 					 depth))
  	    return 1;
! 	  if (! rtx_equal_for_cselib_1 (XEXP (x, i), XEXP (y, i), memmode,
! 					depth))
  	    return 0;
  	  break;
  
diff -Nrcpad gcc-5.4.0/gcc/data-streamer-in.c gcc-5.5.0/gcc/data-streamer-in.c
*** gcc-5.4.0/gcc/data-streamer-in.c	Thu Feb 26 12:26:11 2015
--- gcc-5.5.0/gcc/data-streamer-in.c	Wed Mar 22 14:59:44 2017
*************** gcov_type
*** 206,211 ****
  streamer_read_gcov_count (struct lto_input_block *ib)
  {
    gcov_type ret = streamer_read_hwi (ib);
-   gcc_assert (ret >= 0);
    return ret;
  }
--- 206,210 ----
diff -Nrcpad gcc-5.4.0/gcc/data-streamer-out.c gcc-5.5.0/gcc/data-streamer-out.c
*** gcc-5.4.0/gcc/data-streamer-out.c	Fri Jan  9 20:18:42 2015
--- gcc-5.5.0/gcc/data-streamer-out.c	Wed Mar 22 14:59:44 2017
*************** streamer_write_hwi_stream (struct lto_ou
*** 363,369 ****
  void
  streamer_write_gcov_count_stream (struct lto_output_stream *obs, gcov_type work)
  {
-   gcc_assert (work >= 0);
    gcc_assert ((HOST_WIDE_INT) work == work);
    streamer_write_hwi_stream (obs, work);
  }
--- 363,368 ----
diff -Nrcpad gcc-5.4.0/gcc/diagnostic.c gcc-5.5.0/gcc/diagnostic.c
*** gcc-5.4.0/gcc/diagnostic.c	Sun Nov 22 19:23:39 2015
--- gcc-5.5.0/gcc/diagnostic.c	Mon Sep 25 23:49:58 2017
*************** along with GCC; see the file COPYING3.
*** 41,48 ****
  # include <sys/ioctl.h>
  #endif
  
- #include <new>                     // For placement new.
- 
  #define pedantic_warning_kind(DC)			\
    ((DC)->pedantic_errors ? DK_ERROR : DK_WARNING)
  #define permissive_error_kind(DC) ((DC)->permissive ? DK_WARNING : DK_ERROR)
--- 41,46 ----
diff -Nrcpad gcc-5.4.0/gcc/doc/aot-compile.1 gcc-5.5.0/gcc/doc/aot-compile.1
*** gcc-5.4.0/gcc/doc/aot-compile.1	Fri Jun  3 10:32:25 2016
--- gcc-5.5.0/gcc/doc/aot-compile.1	Tue Oct 10 09:40:27 2017
***************
*** 1,15 ****
! .\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
- .de Sh \" Subsection heading
- .br
- .if t .Sp
- .ne 5
- .PP
- \fB\\$1\fR
- .PP
- ..
  .de Sp \" Vertical space (when we can't use .PP)
  .if t .sp .5v
  .if n .sp
--- 1,7 ----
! .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
  .de Sp \" Vertical space (when we can't use .PP)
  .if t .sp .5v
  .if n .sp
***************
*** 46,71 ****
  .    ds PI \(*p
  .    ds L" ``
  .    ds R" ''
  'br\}
  .\"
  .\" Escape single quotes in literal strings from groff's Unicode transform.
  .ie \n(.g .ds Aq \(aq
  .el       .ds Aq '
  .\"
! .\" If the F register is turned on, we'll generate index entries on stderr for
! .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
  .\" entries marked with X<> in POD.  Of course, you'll have to process the
  .\" output yourself in some meaningful fashion.
! .ie \nF \{\
! .    de IX
! .    tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .    nr % 0
! .    rr F
! .\}
! .el \{\
  .    de IX
  ..
  .\}
  .\"
  .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
--- 38,68 ----
  .    ds PI \(*p
  .    ds L" ``
  .    ds R" ''
+ .    ds C`
+ .    ds C'
  'br\}
  .\"
  .\" Escape single quotes in literal strings from groff's Unicode transform.
  .ie \n(.g .ds Aq \(aq
  .el       .ds Aq '
  .\"
! .\" If the F register is >0, we'll generate index entries on stderr for
! .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
  .\" entries marked with X<> in POD.  Of course, you'll have to process the
  .\" output yourself in some meaningful fashion.
! .\"
! .\" 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).
***************
*** 132,138 ****
  .\" ========================================================================
  .\"
  .IX Title "AOT-COMPILE 1"
! .TH AOT-COMPILE 1 "2016-06-03" "gcc-5.4.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
--- 129,135 ----
  .\" ========================================================================
  .\"
  .IX Title "AOT-COMPILE 1"
! .TH AOT-COMPILE 1 "2017-10-10" "gcc-5.5.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
diff -Nrcpad gcc-5.4.0/gcc/doc/cpp.1 gcc-5.5.0/gcc/doc/cpp.1
*** gcc-5.4.0/gcc/doc/cpp.1	Fri Jun  3 08:54:10 2016
--- gcc-5.5.0/gcc/doc/cpp.1	Tue Oct 10 08:23:53 2017
***************
*** 1,15 ****
! .\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
- .de Sh \" Subsection heading
- .br
- .if t .Sp
- .ne 5
- .PP
- \fB\\$1\fR
- .PP
- ..
  .de Sp \" Vertical space (when we can't use .PP)
  .if t .sp .5v
  .if n .sp
--- 1,7 ----
! .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
  .de Sp \" Vertical space (when we can't use .PP)
  .if t .sp .5v
  .if n .sp
***************
*** 46,71 ****
  .    ds PI \(*p
  .    ds L" ``
  .    ds R" ''
  'br\}
  .\"
  .\" Escape single quotes in literal strings from groff's Unicode transform.
  .ie \n(.g .ds Aq \(aq
  .el       .ds Aq '
  .\"
! .\" If the F register is turned on, we'll generate index entries on stderr for
! .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
  .\" entries marked with X<> in POD.  Of course, you'll have to process the
  .\" output yourself in some meaningful fashion.
! .ie \nF \{\
! .    de IX
! .    tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .    nr % 0
! .    rr F
! .\}
! .el \{\
  .    de IX
  ..
  .\}
  .\"
  .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
--- 38,68 ----
  .    ds PI \(*p
  .    ds L" ``
  .    ds R" ''
+ .    ds C`
+ .    ds C'
  'br\}
  .\"
  .\" Escape single quotes in literal strings from groff's Unicode transform.
  .ie \n(.g .ds Aq \(aq
  .el       .ds Aq '
  .\"
! .\" If the F register is >0, we'll generate index entries on stderr for
! .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
  .\" entries marked with X<> in POD.  Of course, you'll have to process the
  .\" output yourself in some meaningful fashion.
! .\"
! .\" 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).
***************
*** 132,138 ****
  .\" ========================================================================
  .\"
  .IX Title "CPP 1"
! .TH CPP 1 "2016-06-03" "gcc-5.4.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
--- 129,135 ----
  .\" ========================================================================
  .\"
  .IX Title "CPP 1"
! .TH CPP 1 "2017-10-10" "gcc-5.5.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
*************** Wherever possible, you should use a prep
*** 180,190 ****
  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\s0 M4.
  .PP
! C preprocessors vary in some details.  This manual discusses the \s-1GNU\s0 C
  preprocessor, which provides a small superset of the features of \s-1ISO\s0
! Standard C.  In its default mode, the \s-1GNU\s0 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 \s-1ISO\s0 Standard C,
--- 177,187 ----
  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,
*************** differences that do exist are detailed i
*** 201,207 ****
  Mode\fR.
  .PP
  For clarity, unless noted otherwise, references to \fB\s-1CPP\s0\fR in this
! manual refer to \s-1GNU\s0 \s-1CPP\s0.
  .SH "OPTIONS"
  .IX Header "OPTIONS"
  The C preprocessor expects two file names as arguments, \fIinfile\fR and
--- 198,204 ----
  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 C preprocessor expects two file names as arguments, \fIinfile\fR and
*************** get trigraph conversion without warnings
*** 305,311 ****
  .IP "\fB\-Wtraditional\fR" 4
  .IX Item "-Wtraditional"
  Warn about certain constructs that behave differently in traditional and
! \&\s-1ISO\s0 C.  Also warn about \s-1ISO\s0 C constructs that have no traditional C
  equivalent, and problematic constructs which should be avoided.
  .IP "\fB\-Wundef\fR" 4
  .IX Item "-Wundef"
--- 302,308 ----
  .IP "\fB\-Wtraditional\fR" 4
  .IX Item "-Wtraditional"
  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 problematic constructs which should be avoided.
  .IP "\fB\-Wundef\fR" 4
  .IX Item "-Wundef"
*************** in finding bugs in your own code, theref
*** 358,364 ****
  responsible for the system library, you may want to see them.
  .IP "\fB\-w\fR" 4
  .IX Item "-w"
! Suppress all warnings, including those which \s-1GNU\s0 \s-1CPP\s0 issues by default.
  .IP "\fB\-pedantic\fR" 4
  .IX Item "-pedantic"
  Issue all the mandatory diagnostics listed in the C standard.  Some of
--- 355,361 ----
  responsible for the system library, you may want to see them.
  .IP "\fB\-w\fR" 4
  .IX Item "-w"
! Suppress all warnings, including those which \s-1GNU CPP\s0 issues by default.
  .IP "\fB\-pedantic\fR" 4
  .IX Item "-pedantic"
  Issue all the mandatory diagnostics listed in the C standard.  Some of
*************** may be one of:
*** 530,536 ****
  .el .IP "\f(CWiso9899:1990\fR" 4
  .IX Item "iso9899:1990"
  .PD
! The \s-1ISO\s0 C standard from 1990.  \fBc90\fR is the customary shorthand for
  this version of the standard.
  .Sp
  The \fB\-ansi\fR option is equivalent to \fB\-std=c90\fR.
--- 527,533 ----
  .el .IP "\f(CWiso9899:1990\fR" 4
  .IX Item "iso9899:1990"
  .PD
! The \s-1ISO C\s0 standard from 1990.  \fBc90\fR is the customary shorthand for
  this version of the standard.
  .Sp
  The \fB\-ansi\fR option is equivalent to \fB\-std=c90\fR.
*************** The 1990 C standard, as amended in 1994.
*** 552,558 ****
  .el .IP "\f(CWc9x\fR" 4
  .IX Item "c9x"
  .PD
! The revised \s-1ISO\s0 C standard, published in December 1999.  Before
  publication, this was known as C9X.
  .ie n .IP """iso9899:2011""" 4
  .el .IP "\f(CWiso9899:2011\fR" 4
--- 549,555 ----
  .el .IP "\f(CWc9x\fR" 4
  .IX Item "c9x"
  .PD
! The revised \s-1ISO C\s0 standard, published in December 1999.  Before
  publication, this was known as C9X.
  .ie n .IP """iso9899:2011""" 4
  .el .IP "\f(CWiso9899:2011\fR" 4
*************** publication, this was known as C9X.
*** 565,571 ****
  .el .IP "\f(CWc1x\fR" 4
  .IX Item "c1x"
  .PD
! The revised \s-1ISO\s0 C standard, published in December 2011.  Before
  publication, this was known as C1X.
  .ie n .IP """gnu90""" 4
  .el .IP "\f(CWgnu90\fR" 4
--- 562,568 ----
  .el .IP "\f(CWc1x\fR" 4
  .IX Item "c1x"
  .PD
! The revised \s-1ISO C\s0 standard, published in December 2011.  Before
  publication, this was known as C1X.
  .ie n .IP """gnu90""" 4
  .el .IP "\f(CWgnu90\fR" 4
*************** The 2011 C standard plus \s-1GNU\s0 exte
*** 597,603 ****
  .ie n .IP """c++98""" 4
  .el .IP "\f(CWc++98\fR" 4
  .IX Item "c++98"
! The 1998 \s-1ISO\s0 \*(C+ standard plus amendments.
  .ie n .IP """gnu++98""" 4
  .el .IP "\f(CWgnu++98\fR" 4
  .IX Item "gnu++98"
--- 594,600 ----
  .ie n .IP """c++98""" 4
  .el .IP "\f(CWc++98\fR" 4
  .IX Item "c++98"
! The 1998 \s-1ISO \*(C+\s0 standard plus amendments.
  .ie n .IP """gnu++98""" 4
  .el .IP "\f(CWgnu++98\fR" 4
  .IX Item "gnu++98"
*************** line.  If the value is less than 1 or gr
*** 752,758 ****
  ignored.  The default is 8.
  .IP "\fB\-fdebug\-cpp\fR" 4
  .IX Item "-fdebug-cpp"
! This option is only useful for debugging \s-1GCC\s0.  When used with
  \&\fB\-E\fR, dumps debugging information about location maps.  Every
  token in the output is preceded by the dump of the map its location
  belongs to.  The dump of the map holding the location of a token would
--- 749,755 ----
  ignored.  The default is 8.
  .IP "\fB\-fdebug\-cpp\fR" 4
  .IX Item "-fdebug-cpp"
! This option is only useful for debugging \s-1GCC.\s0  When used with
  \&\fB\-E\fR, dumps debugging information about location maps.  Every
  token in the output is preceded by the dump of the map its location
  belongs to.  The dump of the map holding the location of a token would
*************** Note that \f(CW\*(C`\-ftrack\-macro\-exp
*** 785,796 ****
  .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 \s-1UTF\-32\s0 or \s-1UTF\-16\s0, whichever
  corresponds to the width of \f(CW\*(C`wchar_t\*(C'\fR.  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
--- 782,793 ----
  .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 \s-1UTF\-32\s0 or \s-1UTF\-16,\s0 whichever
  corresponds to the width of \f(CW\*(C`wchar_t\*(C'\fR.  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
*** 798,806 ****
  .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.
--- 795,803 ----
  .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.
*************** Cancel an assertion with the predicate \
*** 837,843 ****
  .IX Item "-dCHARS"
  \&\fI\s-1CHARS\s0\fR is a sequence of one or more of the following characters,
  and must not be preceded by a space.  Other characters are interpreted
! by the compiler proper, or reserved for future versions of \s-1GCC\s0, and so
  are silently ignored.  If you specify characters whose behavior
  conflicts, the result is undefined.
  .RS 4
--- 834,840 ----
  .IX Item "-dCHARS"
  \&\fI\s-1CHARS\s0\fR is a sequence of one or more of the following characters,
  and must not be preceded by a space.  Other characters are interpreted
! by the compiler proper, or reserved for future versions of \s-1GCC,\s0 and so
  are silently ignored.  If you specify characters whose behavior
  conflicts, the result is undefined.
  .RS 4
*************** The \fB\-CC\fR option is generally used
*** 913,919 ****
  .IP "\fB\-traditional\-cpp\fR" 4
  .IX Item "-traditional-cpp"
  Try to imitate the behavior of old-fashioned C preprocessors, as
! opposed to \s-1ISO\s0 C preprocessors.
  .IP "\fB\-trigraphs\fR" 4
  .IX Item "-trigraphs"
  Process trigraph sequences.
--- 910,916 ----
  .IP "\fB\-traditional\-cpp\fR" 4
  .IX Item "-traditional-cpp"
  Try to imitate the behavior of old-fashioned C preprocessors, as
! opposed to \s-1ISO C\s0 preprocessors.
  .IP "\fB\-trigraphs\fR" 4
  .IX Item "-trigraphs"
  Process trigraph sequences.
*************** Print text describing all the command-li
*** 931,937 ****
  preprocessing anything.
  .IP "\fB\-v\fR" 4
  .IX Item "-v"
! Verbose mode.  Print out \s-1GNU\s0 \s-1CPP\s0's version number at the beginning of
  execution, and report the final form of the include path.
  .IP "\fB\-H\fR" 4
  .IX Item "-H"
--- 928,934 ----
  preprocessing anything.
  .IP "\fB\-v\fR" 4
  .IX Item "-v"
! Verbose mode.  Print out \s-1GNU CPP\s0's version number at the beginning of
  execution, and report the final form of the include path.
  .IP "\fB\-H\fR" 4
  .IX Item "-H"
*************** header file is printed with \fB...x\fR a
*** 946,952 ****
  .IP "\fB\-\-version\fR" 4
  .IX Item "--version"
  .PD
! Print out \s-1GNU\s0 \s-1CPP\s0's version number.  With one dash, proceed to
  preprocess as normal.  With two dashes, exit immediately.
  .SH "ENVIRONMENT"
  .IX Header "ENVIRONMENT"
--- 943,949 ----
  .IP "\fB\-\-version\fR" 4
  .IX Item "--version"
  .PD
! Print out \s-1GNU CPP\s0's version number.  With one dash, proceed to
  preprocess as normal.  With two dashes, exit immediately.
  .SH "ENVIRONMENT"
  .IX Header "ENVIRONMENT"
*************** Note that you can also specify places to
*** 958,964 ****
  \&\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
--- 955,961 ----
  \&\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
diff -Nrcpad gcc-5.4.0/gcc/doc/cpp.info gcc-5.5.0/gcc/doc/cpp.info
*** gcc-5.4.0/gcc/doc/cpp.info	Fri Jun  3 10:32:20 2016
--- gcc-5.5.0/gcc/doc/cpp.info	Tue Oct 10 09:40:04 2017
***************
*** 1,5 ****
! This is doc/cpp.info, produced by makeinfo version 4.12 from
! /space/rguenther/gcc-5.4.0/gcc-5.4.0/gcc/doc/cpp.texi.
  
  Copyright (C) 1987-2015 Free Software Foundation, Inc.
  
--- 1,4 ----
! This is cpp.info, produced by makeinfo version 6.1 from cpp.texi.
  
  Copyright (C) 1987-2015 Free Software Foundation, Inc.
  
*************** are (a) (see below), and the Back-Cover
*** 19,27 ****
     (b) The FSF's Back-Cover Text is:
  
     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.
! 
  INFO-DIR-SECTION Software development
  START-INFO-DIR-ENTRY
  * Cpp: (cpp).                  The GNU C preprocessor.
--- 18,25 ----
     (b) The FSF's Back-Cover Text is:
  
     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.
  INFO-DIR-SECTION Software development
  START-INFO-DIR-ENTRY
  * Cpp: (cpp).                  The GNU C preprocessor.
*************** useful on its own.
*** 57,63 ****
  * Option Index::
  * Concept Index::
  
!  --- The Detailed Node Listing ---
  
  Overview
  
--- 55,61 ----
  * Option Index::
  * Concept Index::
  
!  -- The Detailed Node Listing --
  
  Overview
  
*************** Obsolete Features
*** 132,137 ****
--- 130,136 ----
  
  * Obsolete Features::
  
+ 
     Copyright (C) 1987-2015 Free Software Foundation, Inc.
  
     Permission is granted to copy, distribute and/or modify this document
*************** are (a) (see below), and the Back-Cover
*** 150,157 ****
     (b) The FSF's Back-Cover Text is:
  
     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.
  
  
  File: cpp.info,  Node: Overview,  Next: Header Files,  Prev: Top,  Up: Top
--- 149,156 ----
     (b) The FSF's Back-Cover Text is:
  
     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.
  
  
  File: cpp.info,  Node: Overview,  Next: Header Files,  Prev: Top,  Up: Top
*************** File: cpp.info,  Node: Overview,  Next:
*** 159,169 ****
  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
*** 176,182 ****
  
     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
! (Pascal, 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
! (Pascal, 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.
*************** instead of native language comments, and
*** 184,191 ****
     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.
  
     C preprocessors vary in some details.  This manual discusses the GNU
  C preprocessor, which provides a small superset of the features of ISO
--- 182,189 ----
     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.
  
     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 GN
*** 193,201 ****
  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' or `-std=c11' 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' or '-std=c11' 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
*** 204,210 ****
  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.
*** 226,267 ****
  
     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
  replaced by the character in the source character set that they
  represent, then converted to the execution character set, just like
  unescaped characters.
  
     In identifiers, characters outside the ASCII range can only be
! specified with the `\u' and `\U' escapes, not used directly.  If strict
! ISO C90 conformance is specified with an option such as `-std=c90', or
! `-fno-extended-identifiers' is used, then those escapes 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.
  
  
--- 224,265 ----
  
     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
  replaced by the character in the source character set that they
  represent, then converted to the execution character set, just like
  unescaped characters.
  
     In identifiers, characters outside the ASCII range can only be
! specified with the '\u' and '\U' escapes, not used directly.  If strict
! ISO C90 conformance is specified with an option such as '-std=c90', or
! '-fno-extended-identifiers' is used, then those escapes 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.
*** 281,315 ****
    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
       conversion.  (GCC may lose track of the current line number if a
       file doesn't consistently use one convention, as sometimes happens
       when it is edited on computers with different conventions that
       share a network file system.)
  
!      If the last line of any input file lacks an end-of-line marker,
!      the end of the file is considered to implicitly supply one.  The C
       standard says that this condition provokes undefined behavior, so
       GCC will emit a warning message.
  
    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::.
  
--- 279,313 ----
    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
       conversion.  (GCC may lose track of the current line number if a
       file doesn't consistently use one convention, as sometimes happens
       when it is edited on computers with different conventions that
       share a network file system.)
  
!      If the last line of any input file lacks an end-of-line marker, the
!      end of the file is considered to implicitly supply one.  The C
       standard says that this condition provokes undefined behavior, so
       GCC will emit a warning message.
  
    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.
*** 317,324 ****
       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,322 ----
       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.
*** 327,333 ****
  
    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
--- 325,331 ----
  
    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
*************** standard.
*** 338,354 ****
  
       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
!      result of an editing mistake, and many compilers will not accept
!      it as a continued line, GCC will warn you about it.
  
    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.
  
--- 336,352 ----
  
       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
!      result of an editing mistake, and many compilers will not accept it
!      as a continued line, GCC will warn you about it.
  
    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.
*** 371,377 ****
           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
*** 380,387 ****
     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
*** 391,397 ****
       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
*************** token of any kind.  Tokens do not have t
*** 412,426 ****
  but it is often necessary to avoid ambiguities.
  
     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
--- 410,423 ----
  but it is often necessary to avoid ambiguities.
  
     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
*************** preprocessing token becomes one compiler
*** 434,445 ****
  
     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
--- 431,442 ----
  
     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
*** 449,461 ****
  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.  GCC only accepts such characters in
! the `\u' and `\U' forms.
  
!    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
--- 446,458 ----
  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.  GCC only accepts such characters in the
! '\u' and '\U' forms.
  
!    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
*************** one expects of C, but also a number of o
*** 464,472 ****
  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 new to C99.  They are used for hexadecimal floating-point
  constants.)
  
     The purpose of this unusual definition is to isolate the preprocessor
--- 461,469 ----
  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 new to C99.  They are used for hexadecimal floating-point
  constants.)
  
     The purpose of this unusual definition is to isolate the preprocessor
*************** from the full complexity of numeric cons
*** 474,495 ****
  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::.
  
     Header file names either look like string constants, "...", or are
  written with angle brackets instead, <...>.  In either case, backslash
--- 471,492 ----
  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::.
  
     Header file names either look like string constants, "...", or are
  written with angle brackets instead, <...>.  In either case, backslash
*************** Operation::.
*** 500,518 ****
  
     No string literal may extend past the end of a line.  Older versions
  of GCC accepted multi-line string constants.  You may use continued
! lines instead, or string constant concatenation.  *Note Differences
! from previous versions::.
  
     "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:
  
       Digraph:        <%  %>  <:  :>  %:  %:%:
       Punctuator:      {   }   [   ]   #    ##
--- 497,515 ----
  
     No string literal may extend past the end of a line.  Older versions
  of GCC accepted multi-line string constants.  You may use continued
! lines instead, or string constant concatenation.  *Note Differences from
! previous versions::.
  
     "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:
  
       Digraph:        <%  %>  <:  :>  %:  %:%:
       Punctuator:      {   }   [   ]   #    ##
*************** their corresponding normal punctuators a
*** 520,531 ****
     Any other single character is considered "other".  It is passed on to
  the preprocessor's output unmolested.  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 characters with the high bit set (numeric range
! 0x7F-0xFF) are also "other" in the present implementation.  This will
! change when proper support for international character sets is added to
! GCC.
  
     NUL is a special case because of the high probability that its
  appearance is accidental, and because it may be invisible to the user
--- 517,527 ----
     Any other single character is considered "other".  It is passed on to
  the preprocessor's output unmolested.  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 characters with the high bit set (numeric range 0x7F-0xFF)
! are also "other" in the present implementation.  This will change when
! proper support for international character sets is added to GCC.
  
     NUL is a special case because of the high probability that its
  appearance is accidental, and because it may be invisible to the user
*************** have the same meaning.
*** 537,545 ****
       #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 ----------
  
--- 533,541 ----
       #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 ----------
  
*************** and "macros" to be expanded.  Its primar
*** 573,580 ****
       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
--- 569,576 ----
       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
*************** and "macros" to be expanded.  Its primar
*** 583,598 ****
     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
--- 579,594 ----
     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.
*** 600,607 ****
  
     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
  may, however, be continued with backslash-newline, or by a block comment
--- 596,603 ----
  
     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
  may, however, be continued with backslash-newline, or by a block comment
*************** File: cpp.info,  Node: Header Files,  Ne
*** 618,624 ****
  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.
  
--- 614,620 ----
  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.
  
*************** preprocessing directive `#include'.
*** 629,636 ****
  
     * 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
       create a header file for them.
  
     Including a header file produces the same results as copying the
--- 625,632 ----
  
     * 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
       create a header file for them.
  
     Including a header file produces the same results as copying the
*************** as the risk that a failure to find one c
*** 644,650 ****
  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:
--- 640,646 ----
  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,
*** 665,697 ****
  ==================
  
  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.
--- 661,693 ----
  ==================
  
  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
*** 702,718 ****
  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;
--- 698,714 ----
  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,
*** 724,730 ****
         puts (test ());
       }
  
! the compiler will see the same token stream as it would if `program.c'
  read
  
       int x;
--- 720,726 ----
         puts (test ());
       }
  
! the compiler will see the same token stream as it would if 'program.c'
  read
  
       int x;
*************** the file.
*** 750,756 ****
  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.
  
--- 746,752 ----
  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
*** 762,768 ****
  
  GCC looks in several different places for headers.  On a normal Unix
  system, if you do not instruct it otherwise, it will look for headers
! requested with `#include <FILE>' in:
  
       /usr/local/include
       LIBDIR/gcc/TARGET/VERSION/include
--- 758,764 ----
  
  GCC looks in several different places for headers.  On a normal Unix
  system, if you do not instruct it otherwise, it will look for headers
! requested with '#include <FILE>' in:
  
       /usr/local/include
       LIBDIR/gcc/TARGET/VERSION/include
*************** requested with `#include <FILE>' in:
*** 770,783 ****
       /usr/include
  
     For C++ programs, it will also look in
! `LIBDIR/../include/c++/VERSION', first.  In the above, TARGET is the
  canonical name of the system GCC was configured to compile code for;
  often but not always the same as the canonical name of the system it
  runs on.  VERSION is the version of GCC in use.
  
!    You can add to this list with the `-IDIR' command-line option.  All
! the directories named by `-I' are searched, in left-to-right order,
! _before_ the default directories.  The only exception is when `dir' is
  already searched by default.  In this case, the option is ignored and
  the search order for system directories remains unchanged.
  
--- 766,779 ----
       /usr/include
  
     For C++ programs, it will also look in
! 'LIBDIR/../include/c++/VERSION', first.  In the above, TARGET is the
  canonical name of the system GCC was configured to compile code for;
  often but not always the same as the canonical name of the system it
  runs on.  VERSION is the version of GCC in use.
  
!    You can add to this list with the '-IDIR' command-line option.  All
! the directories named by '-I' are searched, in left-to-right order,
! _before_ the default directories.  The only exception is when 'dir' is
  already searched by default.  In this case, the option is ignored and
  the search order for system directories remains unchanged.
  
*************** Thus, it is possible for a directory to
*** 787,824 ****
  chain if it was specified in both the quote and bracket chains.
  
     You can prevent GCC from searching any of the default 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.  `-I'
! options are not ignored as described above when `-nostdinc' is in
  effect.
  
!    GCC looks for headers requested with `#include "FILE"' first in the
  directory containing the current file, then in the directories as
! specified by `-iquote' options, then in the same places it would have
  looked for a header requested with angle brackets.  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.
  
!    `#line' (*note Line Control::) does not change GCC's idea of the
  directory containing the current file.
  
!    You may put `-I-' at any point in your list of `-I' options.  This
! has two effects.  First, directories appearing before the `-I-' in the
  list are searched only for headers requested with quote marks.
! Directories after `-I-' are searched for all headers.  Second, the
  directory containing the current file is not searched for anything,
! unless it happens to be one of the directories named by an `-I' switch.
! `-I-' is deprecated, `-iquote' should be used instead.
  
!    `-I. -I-' is not the same as no `-I' options at all, and does not
! cause the same behavior for `<>' includes that `""' includes get with
! no special options.  `-I.' searches the compiler's current working
  directory for header files.  That may or may not be the same as the
  directory containing the current file.
  
!    If you need to look for headers in a directory named `-', write
! `-I./-'.
  
     There are several more ways to adjust the header search path.  They
  are generally less useful.  *Note Invocation::.
--- 783,820 ----
  chain if it was specified in both the quote and bracket chains.
  
     You can prevent GCC from searching any of the default 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.  '-I'
! options are not ignored as described above when '-nostdinc' is in
  effect.
  
!    GCC looks for headers requested with '#include "FILE"' first in the
  directory containing the current file, then in the directories as
! specified by '-iquote' options, then in the same places it would have
  looked for a header requested with angle brackets.  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.
  
!    '#line' (*note Line Control::) does not change GCC's idea of the
  directory containing the current file.
  
!    You may put '-I-' at any point in your list of '-I' options.  This
! has two effects.  First, directories appearing before the '-I-' in the
  list are searched only for headers requested with quote marks.
! Directories after '-I-' are searched for all headers.  Second, the
  directory containing the current file is not searched for anything,
! unless it happens to be one of the directories named by an '-I' switch.
! '-I-' is deprecated, '-iquote' should be used instead.
  
!    '-I. -I-' is not the same as no '-I' options at all, and does not
! cause the same behavior for '<>' includes that '""' includes get with no
! special options.  '-I.' searches the compiler's current working
  directory for header files.  That may or may not be the same as the
  directory containing the current file.
  
!    If you need to look for headers in a directory named '-', write
! '-I./-'.
  
     There are several more ways to adjust the header search path.  They
  are generally less useful.  *Note Invocation::.
*************** contents of the file in a conditional, l
*** 847,866 ****
  
     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.
--- 843,862 ----
  
     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
*** 872,906 ****
  ===================================
  
  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.  If `#pragma once' is seen
  when scanning a header file, that file will never be read again, no
  matter what.
  
!    `#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.
  
  
  File: cpp.info,  Node: Computed Includes,  Next: Wrapper Headers,  Prev: Alternatives to Wrapper #ifndef,  Up: Header Files
--- 868,902 ----
  ===================================
  
  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.  If '#pragma once' is seen
  when scanning a header file, that file will never be read again, no
  matter what.
  
!    '#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.
  
  
  File: cpp.info,  Node: Computed Includes,  Next: Wrapper Headers,  Prev: Alternatives to Wrapper #ifndef,  Up: Header Files
*************** systems, for instance.  You could do thi
*** 924,950 ****
     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
  string constant are the file to be included.  CPP does not re-examine
--- 920,946 ----
     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
  string constant are the file to be included.  CPP does not re-examine
*************** escapes in the string.  Therefore
*** 954,973 ****
       #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.
  
     In either case, if there are any tokens on the line after the file
! name, an error occurs and the directive is not processed.  It is also
! an error if the result of expansion does not match either of the two
  expected forms.
  
     These rules are implementation-defined behavior according to the C
--- 950,969 ----
       #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.
  
     In either case, if there are any tokens on the line after the file
! name, an error occurs and the directive is not processed.  It is also an
! error if the result of expansion does not match either of the two
  expected forms.
  
     These rules are implementation-defined behavior according to the C
*************** File: cpp.info,  Node: Wrapper Headers,
*** 983,1030 ****
  ===================
  
  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.
  
     You could include the old header with an absolute pathname:
       #include "/usr/include/old-header.h"
!    This works, but is not clean; should the system headers ever move,
! you 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
--- 979,1026 ----
  ===================
  
  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.
  
     You could include the old header with an absolute pathname:
       #include "/usr/include/old-header.h"
! This works, but is not clean; should the system headers ever move, you
! 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,
*** 1035,1072 ****
  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 find that a warning generates lots of false positives because of
! code in macros defined in system headers.
  
     Normally, only the headers found in specific directories are
! considered system headers.  These directories are determined when GCC
! is compiled.  There are, however, two ways to make normal headers into
  system headers.
  
!    The `-isystem' command-line option adds its argument to the list of
! directories to search for headers, just like `-I'.  Any headers found
! in that directory will be considered system headers.
  
!    All directories named by `-isystem' are searched _after_ all
! directories named by `-I', no matter what their order was on the
! command line.  If the same directory is named by both `-I' and
! `-isystem', the `-I' option is ignored.  GCC provides an informative
! message when this occurs if `-v' is used.
  
!    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 will not be affected.  `#pragma GCC system_header' has no
! effect in the primary source file.
  
     On very old systems, some of the pre-defined system header
  directories get even more special treatment.  GNU C++ considers code in
! headers found in those directories to be surrounded by an `extern "C"'
! block.  There is no way to request this behavior with a `#pragma', or
  from the command line.
  
  
--- 1031,1068 ----
  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
! find that a warning generates lots of false positives because of code in
! macros defined in system headers.
  
     Normally, only the headers found in specific directories are
! considered system headers.  These directories are determined when GCC is
! compiled.  There are, however, two ways to make normal headers into
  system headers.
  
!    The '-isystem' command-line option adds its argument to the list of
! directories to search for headers, just like '-I'.  Any headers found in
! that directory will be considered system headers.
  
!    All directories named by '-isystem' are searched _after_ all
! directories named by '-I', no matter what their order was on the command
! line.  If the same directory is named by both '-I' and '-isystem', the
! '-I' option is ignored.  GCC provides an informative message when this
! occurs if '-v' is used.
  
!    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 will not be affected.  '#pragma GCC system_header' has no effect in
! the primary source file.
  
     On very old systems, some of the pre-defined system header
  directories get even more special treatment.  GNU C++ considers code in
! headers found in those directories to be surrounded by an 'extern "C"'
! block.  There is no way to request this behavior with a '#pragma', or
  from the command line.
  
  
*************** File: cpp.info,  Node: Macros,  Next: Co
*** 1077,1093 ****
  
  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++.
  
  * Menu:
  
--- 1073,1089 ----
  
  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++.
  
  * Menu:
  
*************** a code fragment.  It is called object-li
*** 1113,1133 ****
  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);
--- 1109,1129 ----
  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
*** 1136,1142 ****
  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,
--- 1132,1138 ----
  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,
*************** macros to expand.  For example,
*** 1178,1195 ****
            ==> 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
--- 1174,1191 ----
            ==> 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:
*** 1197,1203 ****
       #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
--- 1193,1199 ----
       #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
*** 1211,1218 ****
  ========================
  
  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()
--- 1207,1214 ----
  ========================
  
  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()
*************** same name, and you wish to use the funct
*** 1230,1238 ****
         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.
  
     If you put spaces between the macro name and the parentheses in the
  macro definition, that does not define a function-like macro, it defines
--- 1226,1234 ----
         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.
  
     If you put spaces between the macro name and the parentheses in the
  macro definition, that does not define a function-like macro, it defines
*************** parentheses.
*** 1245,1251 ****
  
     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.
  
  
--- 1241,1247 ----
  
     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,
*** 1254,1264 ****
  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
--- 1250,1260 ----
  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
*************** prevent a comma from separating argument
*** 1290,1308 ****
  
       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
  text is scanned again for macros to expand, including the arguments.
! This rule may seem strange, but it is carefully designed so you need
! not worry about whether any function call is actually a macro
! invocation.  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))
  
--- 1286,1304 ----
  
       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
  text is scanned again for macros to expand, including the arguments.
! This rule may seem strange, but it is carefully designed so you need not
! worry about whether any function call is actually a macro invocation.
! 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
*** 1318,1339 ****
  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.
  
     Macro parameters appearing inside string literals are not replaced by
  their corresponding actual arguments.
--- 1314,1334 ----
  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.
  
     Macro parameters appearing inside string literals are not replaced by
  their corresponding actual arguments.
*************** File: cpp.info,  Node: Stringification,
*** 1349,1356 ****
  
  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 "stringification".
--- 1344,1351 ----
  
  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 "stringification".
*************** first.  This is called "stringification"
*** 1358,1366 ****
     There is no way to combine an argument with surrounding text and
  stringify it all together.  Instead, you can write a series of adjacent
  string constants and stringified arguments.  The preprocessor will
! replace the stringified arguments with string constants.  The C
! compiler will then combine all the adjacent string constants into one
! long string.
  
     Here is an example of a macro definition that uses stringification:
  
--- 1353,1361 ----
     There is no way to combine an argument with surrounding text and
  stringify it all together.  Instead, you can write a series of adjacent
  string constants and stringified arguments.  The preprocessor will
! replace the stringified arguments with string constants.  The C compiler
! will then combine all the adjacent string constants into one long
! string.
  
     Here is an example of a macro definition that uses stringification:
  
*************** long string.
*** 1372,1394 ****
            ==> 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, stringified, 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::.
  
     Stringification 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, stringifying `p = "foo\n";'
  results in "p = \"foo\\n\";".  However, backslashes that are not inside
! string or character constants are not duplicated: `\n' by itself
  stringifies to "\n".
  
     All leading and trailing whitespace in text being stringified is
--- 1367,1388 ----
            ==> 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, stringified, 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::.
  
     Stringification 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, stringifying 'p = "foo\n";'
  results in "p = \"foo\\n\";".  However, backslashes that are not inside
! string or character constants are not duplicated: '\n' by itself
  stringifies to "\n".
  
     All leading and trailing whitespace in text being stringified is
*************** you have to use two levels of macros.
*** 1413,1423 ****
            ==> str (4)
            ==> "4"
  
!    `s' is stringified 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,  Next: Variadic Macros,  Prev: Stringification,  Up: Macros
--- 1407,1417 ----
            ==> str (4)
            ==> "4"
  
!    's' is stringified 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,  Next: Variadic Macros,  Prev: Stringification,  Up: Macros
*************** File: cpp.info,  Node: Concatenation,  N
*** 1426,1464 ****
  =================
  
  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 stringification, 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
--- 1420,1458 ----
  =================
  
  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 stringification, 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:
*** 1477,1488 ****
         ...
       };
  
!    It would be cleaner not to have to give each command name twice,
! once 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 stringification,
! and the function name by concatenating the argument with `_command'.
! Here is how it is done:
  
       #define COMMAND(NAME)  { #NAME, NAME ## _command }
  
--- 1471,1482 ----
         ...
       };
  
!    It would be cleaner not to have to give each command name twice, once
! 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 stringification, 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:
*** 1508,1514 ****
     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)
--- 1502,1508 ----
     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)
*************** macro body wherever it appears.  Thus, w
*** 1516,1538 ****
  
     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 stringify 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__)
  
--- 1510,1532 ----
  
     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 stringify 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__)
  
*************** This formulation looks more descriptive,
*** 1540,1547 ****
  flexible: you must now supply at least one argument after the format
  string.  In standard C, you cannot omit the comma separating the named
  argument from the variable arguments.  Furthermore, if you leave the
! variable argument empty, you will get a syntax error, because there
! will be an extra comma after the format string.
  
       eprintf("success!\n", );
            ==> fprintf(stderr, "success!\n", );
--- 1534,1541 ----
  flexible: you must now supply at least one argument after the format
  string.  In standard C, you cannot omit the comma separating the named
  argument from the variable arguments.  Furthermore, if you leave the
! variable argument empty, you will get a syntax error, because there will
! be an extra comma after the format string.
  
       eprintf("success!\n", );
            ==> fprintf(stderr, "success!\n", );
*************** First, you are allowed to leave the vari
*** 1552,1597 ****
       eprintf ("success!\n")
            ==> fprintf(stderr, "success!\n", );
  
! Second, the `##' token paste operator has a special meaning when placed
  between a comma and a variable argument.  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 to distinguish whether no argument at all is an empty argument or a
! missing argument.  In this case the C99 standard is clear that the
! comma must remain, however the existing GCC extension used to swallow
! the comma.  So CPP retains the comma when conforming to a specific C
  standard, and drops it otherwise.
  
!    C99 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.
  
     Variadic macros are a new feature in C99.  GNU CPP has supported them
! for a long time, but only with a named variable argument (`args...',
! not `...' and `__VA_ARGS__').  If you are concerned with portability to
  previous versions of GCC, you should use only named variable arguments.
  On the other hand, if you are concerned with portability to other
! conforming implementations of C99, you should use only `__VA_ARGS__'.
  
     Previous versions of CPP implemented the comma-deletion extension
  much more generally.  We have restricted it in this release to minimize
  the differences from C99.  To get the same effect with both this and
! previous versions of GCC, the token preceding the special `##' must be
! a comma, and there must be white space between that comma and whatever
  comes immediately before it:
  
       #define eprintf(format, args...) fprintf (stderr, format , ##args)
--- 1546,1591 ----
       eprintf ("success!\n")
            ==> fprintf(stderr, "success!\n", );
  
! Second, the '##' token paste operator has a special meaning when placed
  between a comma and a variable argument.  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
! to distinguish whether no argument at all is an empty argument or a
! missing argument.  In this case the C99 standard is clear that the comma
! must remain, however the existing GCC extension used to swallow the
! comma.  So CPP retains the comma when conforming to a specific C
  standard, and drops it otherwise.
  
!    C99 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.
  
     Variadic macros are a new feature in C99.  GNU CPP has supported them
! for a long time, but only with a named variable argument ('args...', not
! '...' and '__VA_ARGS__').  If you are concerned with portability to
  previous versions of GCC, you should use only named variable arguments.
  On the other hand, if you are concerned with portability to other
! conforming implementations of C99, you should use only '__VA_ARGS__'.
  
     Previous versions of CPP implemented the comma-deletion extension
  much more generally.  We have restricted it in this release to minimize
  the differences from C99.  To get the same effect with both this and
! previous versions of GCC, the token preceding the special '##' must be a
! comma, and there must be white space between that comma and whatever
  comes immediately before it:
  
       #define eprintf(format, args...) fprintf (stderr, format , ##args)
*************** File: cpp.info,  Node: Standard Predefin
*** 1625,1649 ****
  --------------------------------
  
  The standard predefined macros are specified by the relevant language
! standards, so they are available with all compilers that implement
! those 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,
--- 1619,1643 ----
  --------------------------------
  
  The standard predefined macros are specified by the relevant language
! standards, so they are available with all compilers that implement those
! 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,
*** 1653,1755 ****
                        "%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 introduces `__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.  Support for the 1999
!      revision is not yet complete.
  
!      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', as
!      mandated by the 1998 C++ standard; `201103L', per the 2011 C++
!      standard; an unspecified value strictly larger than `201103L' for
!      the experimental languages enabled by `-std=c++1y' and
!      `-std=gnu++1y'.
  
! `__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.
  
- 
  
  File: cpp.info,  Node: Common Predefined Macros,  Next: System-specific Predefined Macros,  Prev: Standard Predefined Macros,  Up: Predefined Macros
  
--- 1647,1747 ----
                        "%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 introduces '__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.  Support for the 1999 revision
!      is not yet complete.
  
!      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', as mandated
!      by the 1998 C++ standard; '201103L', per the 2011 C++ standard; an
!      unspecified value strictly larger than '201103L' for the
!      experimental languages enabled by '-std=c++1y' and '-std=gnu++1y'.
  
! '__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.
  
  
  File: cpp.info,  Node: Common Predefined Macros,  Next: System-specific Predefined Macros,  Prev: Standard Predefined Macros,  Up: Predefined Macros
  
*************** with the same meanings regardless of the
*** 1761,1802 ****
  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 3.2.1 will define
!      `__GNUC__' to 3, `__GNUC_MINOR__' to 2, and `__GNUC_PATCHLEVEL__'
!      to 1.  These macros are also defined if you invoke the
!      preprocessor directly.
  
!      `__GNUC_PATCHLEVEL__' is new to GCC 3.0; it is also present in the
       widely-used development snapshots leading up to 3.0 (which identify
       themselves as GCC 2.96 or 2.97, depending on which snapshot you
       have).
  
       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
!      (which happens rarely), the minor version and patch level are
!      reset.  If you wish to use the predefined macros directly in the
!      conditional, you will need to write it like this:
  
            /* Test for GCC > 3.2.0 */
            #if __GNUC__ > 3 || \
--- 1753,1794 ----
  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 3.2.1 will define
!      '__GNUC__' to 3, '__GNUC_MINOR__' to 2, and '__GNUC_PATCHLEVEL__'
!      to 1.  These macros are also defined if you invoke the preprocessor
!      directly.
  
!      '__GNUC_PATCHLEVEL__' is new to GCC 3.0; it is also present in the
       widely-used development snapshots leading up to 3.0 (which identify
       themselves as GCC 2.96 or 2.97, depending on which snapshot you
       have).
  
       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 (which
!      happens rarely), the minor version and patch level are reset.  If
!      you wish to use the predefined macros directly in the conditional,
!      you will need to write it like this:
  
            /* Test for GCC > 3.2.0 */
            #if __GNUC__ > 3 || \
*************** double underscores.
*** 1816,1863 ****
  
       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 restrict their definitions to the minimal set found in
!      the 1989 C standard.
  
! `__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.
  
! `__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
--- 1808,1855 ----
  
       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 restrict their definitions to the minimal set found in the 1989
!      C standard.
  
! '__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.
  
! '__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.
*** 1865,2080 ****
       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 standard.  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.  Support for
!      this and `__GNUC_GNU_INLINE__' was added in GCC 4.1.3.  If neither
!      macro is defined, an older version of GCC is being used: `inline'
!      functions will be compiled in gnu90 mode, and the `gnu_inline'
       function attribute will not be recognized.
  
! `__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.
  
! `__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.
--- 1857,2072 ----
       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 standard.  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.  Support for
!      this and '__GNUC_GNU_INLINE__' was added in GCC 4.1.3.  If neither
!      macro is defined, an older version of GCC is being used: 'inline'
!      functions will be compiled in gnu90 mode, and the 'gnu_inline'
       function attribute will not be recognized.
  
! '__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.
  
! '__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.
*** 2084,2237 ****
            /* 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 the
!      option `-std=c++0x' or `-std=gnu++0x'. It indicates that some
!      features likely to be included in C++0x are available. Note that
       these features are experimental, and may change or be removed in
       future versions of GCC.
  
! `__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"
       that are defined in multiple translation units.  If the compiler
!      will not collapse such symbols, this macro is defined with value
!      0.  In general, user code should not need to make use of this
!      macro; 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.
  
! `__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.
  
! `__GCC_HAVE_DWARF2_CFI_ASM'
       This macro is defined when the compiler is emitting Dwarf2 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.
  
! `__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).  If 1, it indicates that IEEE 754 arithmetic is
!      intended to be supported; this does not mean that all relevant
!      language features are supported by GCC.  If 2 or more, it
!      additionally indicates support for IEEE 754-2008 (in particular,
!      that the binary encodings for quiet and signaling NaNs are as
!      specified in IEEE 754-2008).
  
       This macro does not indicate the default state of command-line
       options that control optimizations that C99 and C11 permit to be
       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.
  
  
  File: cpp.info,  Node: System-specific Predefined Macros,  Next: C++ Named Operators,  Prev: Common Predefined Macros,  Up: Predefined Macros
--- 2076,2226 ----
            /* 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 the
!      option '-std=c++0x' or '-std=gnu++0x'.  It indicates that some
!      features likely to be included in C++0x are available.  Note that
       these features are experimental, and may change or be removed in
       future versions of GCC.
  
! '__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"
       that are defined in multiple translation units.  If the compiler
!      will not collapse such symbols, this macro is defined with value 0.
!      In general, user code should not need to make use of this macro;
!      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.
  
! '__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.
  
! '__GCC_HAVE_DWARF2_CFI_ASM'
       This macro is defined when the compiler is emitting Dwarf2 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.
  
! '__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).
!      If 1, it indicates that IEEE 754 arithmetic is intended to be
!      supported; this does not mean that all relevant language features
!      are supported by GCC. If 2 or more, it additionally indicates
!      support for IEEE 754-2008 (in particular, that the binary encodings
!      for quiet and signaling NaNs are as specified in IEEE 754-2008).
  
       This macro does not indicate the default state of command-line
       options that control optimizations that C99 and C11 permit to be
       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.
  
  
  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
*** 2242,2264 ****
  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.
--- 2231,2253 ----
  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
*** 2269,2275 ****
  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
--- 2258,2264 ----
  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
*** 2280,2304 ****
  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
--- 2269,2293 ----
  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
*** 2306,2316 ****
  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;
--- 2295,2305 ----
  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;
*************** the macro name.  `#undef' has no effect
*** 2318,2335 ****
       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.
--- 2307,2321 ----
       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.
*************** These definitions are effectively the sa
*** 2338,2344 ****
       #define FOUR (2 + 2)
       #define FOUR         (2    +    2)
       #define FOUR (2 /* two */ + 2)
!    but these are not:
       #define FOUR (2 + 2)
       #define FOUR ( 2+2 )
       #define FOUR (2 * 2)
--- 2324,2330 ----
       #define FOUR (2 + 2)
       #define FOUR         (2    +    2)
       #define FOUR (2 /* two */ + 2)
! but these are not:
       #define FOUR (2 + 2)
       #define FOUR ( 2+2 )
       #define FOUR (2 * 2)
*************** these cases is undefined.
*** 2364,2374 ****
     Versions of CPP prior to 3.2 would reject such constructs with an
  error message.  This was the only syntactic difference between normal
  functions and function-like macros, so it seemed attractive to remove
! this limitation, and people would often be surprised that they could
! not use macros in this way.  Moreover, sometimes people would use
  conditional compilation in the argument list to a normal library
! function like `printf', only to find that after a library upgrade
! `printf' had changed to be a function-like macro, and their code would
  no longer compile.  So from version 3.2 we changed CPP to successfully
  process arbitrary directives within macro arguments in exactly the same
  way as it would have processed the directive were the function-like
--- 2350,2360 ----
     Versions of CPP prior to 3.2 would reject such constructs with an
  error message.  This was the only syntactic difference between normal
  functions and function-like macros, so it seemed attractive to remove
! this limitation, and people would often be surprised that they could not
! use macros in this way.  Moreover, sometimes people would use
  conditional compilation in the argument list to a normal library
! function like 'printf', only to find that after a library upgrade
! 'printf' had changed to be a function-like macro, and their code would
  no longer compile.  So from version 3.2 we changed CPP to successfully
  process arbitrary directives within macro arguments in exactly the same
  way as it would have processed the directive were the function-like
*************** outside of it.  For example,
*** 2439,2447 ****
       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 should be avoided.
  
  
  File: cpp.info,  Node: Operator Precedence Problems,  Next: Swallowing the Semicolon,  Prev: Misnesting,  Up: Macro Pitfalls
--- 2425,2433 ----
       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
! should be avoided.
  
  
  File: cpp.info,  Node: Operator Precedence Problems,  Next: Swallowing the Semicolon,  Prev: Misnesting,  Up: Macro Pitfalls
*************** way.
*** 2460,2467 ****
       #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);
--- 2446,2453 ----
       #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);
*************** Defining the macro as
*** 2481,2499 ****
  
  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))
  
--- 2467,2485 ----
  
  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
*** 2505,2511 ****
  
  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)  \
--- 2491,2497 ----
  
  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
*** 2518,2531 ****
  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)
--- 2504,2517 ----
  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.
*** 2533,2543 ****
       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);         \
--- 2519,2529 ----
       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
*** 2546,2552 ****
                p--; break; }}}          \
       while (0)
  
!    Now `SKIP_SPACES (p, lim);' expands into
  
       do {...} while (0);
  
--- 2532,2538 ----
                p--; break; }}}          \
       while (0)
  
!    Now 'SKIP_SPACES (p, lim);' expands into
  
       do {...} while (0);
  
*************** File: cpp.info,  Node: Duplication of Si
*** 2559,2570 ****
  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))
  
!    When you use this macro with an argument containing a side effect,
! as shown here,
  
       next = min (x + y, foo (z));
  
--- 2545,2556 ----
  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))
  
!    When you use this macro with an argument containing a side effect, as
! shown here,
  
       next = min (x + y, foo (z));
  
*************** it expands as follows:
*** 2572,2588 ****
  
       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:
  
--- 2558,2574 ----
  
       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:
*** 2591,2597 ****
          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
--- 2577,2583 ----
          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
*** 2599,2607 ****
  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))
       ...
--- 2585,2593 ----
  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))
       ...
*************** variable in `min':
*** 2610,2616 ****
         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
--- 2596,2602 ----
         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
*************** preprocessor output unchanged.  Consider
*** 2627,2668 ****
  
       #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))
--- 2613,2654 ----
  
       #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))
*************** same results.
*** 2695,2722 ****
  
     You might expect the double scan to change the results when a
  self-referential macro is used in an argument of another macro (*note
! Self-Referential Macros::): the self-referential macro would be
! expanded once in the first scan, and a second time in the second scan.
! However, this is not what happens.  The self-references that do not
! expand in the first scan are marked so that they will not expand in the
! second scan either.
  
     You might wonder, "Why mention the prescan, if it makes no
! difference?  And why not skip it and make the preprocessor faster?"
! The 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 stringify or concatenate.
  
--- 2681,2708 ----
  
     You might expect the double scan to change the results when a
  self-referential macro is used in an argument of another macro (*note
! Self-Referential Macros::): the self-referential macro would be expanded
! once in the first scan, and a second time in the second scan.  However,
! this is not what happens.  The self-references that do not expand in the
! first scan are marked so that they will not expand in the second scan
! either.
  
     You might wonder, "Why mention the prescan, if it makes no
! difference?  And why not skip it and make the preprocessor faster?"  The
! 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 stringify or concatenate.
  
*************** cases:
*** 2731,2738 ****
            #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
--- 2717,2724 ----
            #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
*************** cases:
*** 2745,2753 ****
            #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:
--- 2731,2739 ----
            #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:
*** 2756,2765 ****
       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.
  
- 
  
  File: cpp.info,  Node: Newlines in Arguments,  Prev: Argument Prescan,  Up: Macro Pitfalls
  
--- 2742,2750 ----
       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.
  
  
  File: cpp.info,  Node: Newlines in Arguments,  Prev: Argument Prescan,  Up: Macro Pitfalls
  
*************** different to the line containing the arg
*** 2780,2786 ****
                          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.
  
--- 2765,2771 ----
                          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
*** 2792,2818 ****
  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 your program is compiled.  Its purpose is to allow different
! code to be included in the program depending on the situation at the
! time of 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
--- 2777,2803 ----
  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
! your program is compiled.  Its purpose is to allow different code to be
! included in the program depending on the situation at the time of
! 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
*************** There are three general reasons to use a
*** 2840,2858 ****
       one operating system may be erroneous on another operating system;
       for example, it might refer to data types or constants that do not
       exist on the other system.  When this happens, it is not enough to
!      avoid executing the invalid code.  Its mere presence will cause
!      the compiler to reject the program.  With a preprocessing
!      conditional, 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.
  
     Simple programs that do not need system-specific logic or complex
  debugging hooks generally will not need to use preprocessing
--- 2825,2843 ----
       one operating system may be erroneous on another operating system;
       for example, it might refer to data types or constants that do not
       exist on the other system.  When this happens, it is not enough to
!      avoid executing the invalid code.  Its mere presence will cause the
!      compiler to reject the program.  With a preprocessing conditional,
!      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.
  
     Simple programs that do not need system-specific logic or complex
  debugging hooks generally will not need to use preprocessing
*************** File: cpp.info,  Node: Conditional Synta
*** 2865,2871 ****
  ======================
  
  A conditional in the C preprocessor begins with a "conditional
! directive": `#if', `#ifdef' or `#ifndef'.
  
  * Menu:
  
--- 2850,2856 ----
  ======================
  
  A conditional in the C preprocessor begins with a "conditional
! directive": '#if', '#ifdef' or '#ifndef'.
  
  * Menu:
  
*************** included in the output of the preprocess
*** 2894,2905 ****
  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
  run through initial transformations and tokenization.  Therefore, it
--- 2879,2890 ----
  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
  run through initial transformations and tokenization.  Therefore, it
*************** must all be lexically valid C.  Normally
*** 2907,2924 ****
  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.
--- 2892,2909 ----
  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.
*************** Here are some samples.
*** 2932,2952 ****
       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 conditionals to test whether or how this macro is
!      defined, and then 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
--- 2917,2935 ----
       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
!      conditionals to test whether or how this macro is defined, and then
!      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
*** 2954,2960 ****
  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
--- 2937,2943 ----
  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
*************** restrictions.  It may contain
*** 2973,3001 ****
  
     * 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
--- 2956,2984 ----
  
     * 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
*** 3003,3009 ****
  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.
  
  
--- 2986,2992 ----
  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
*** 3012,3045 ****
  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
! `-pedantic', since other compilers may handle it differently.
  
  
  File: cpp.info,  Node: Else,  Next: Elif,  Prev: Defined,  Up: Conditional Syntax
--- 2995,3027 ----
  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
! '-pedantic', since other compilers may handle it differently.
  
  
  File: cpp.info,  Node: Else,  Next: Elif,  Prev: Defined,  Up: Conditional Syntax
*************** File: cpp.info,  Node: Else,  Next: Elif
*** 3047,3053 ****
  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:
  
--- 3029,3035 ----
  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:
*** 3060,3066 ****
  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,  Prev: Else,  Up: Conditional Syntax
--- 3042,3048 ----
  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,  Prev: Else,  Up: Conditional Syntax
*************** two possible alternatives.  For example,
*** 3081,3088 ****
       #endif /* X != 2 */
       #endif /* X != 1 */
  
!    Another conditional directive, `#elif', allows this to be
! abbreviated as follows:
  
       #if X == 1
       ...
--- 3063,3070 ----
       #endif /* X != 2 */
       #endif /* X != 1 */
  
!    Another conditional directive, '#elif', allows this to be abbreviated
! as follows:
  
       #if X == 1
       ...
*************** abbreviated as follows:
*** 3092,3111 ****
       ...
       #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: Deleted Code,  Prev: Conditional Syntax,  Up: Conditionals
--- 3074,3093 ----
       ...
       #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: Deleted Code,  Prev: Conditional Syntax,  Up: Conditionals
*************** code will end the commenting-out.  The p
*** 3120,3139 ****
  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
--- 3102,3121 ----
  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
*** 3141,3151 ****
  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
--- 3123,3133 ----
  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
*** 3156,3179 ****
  
     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 apostrophes and the like.
  
  
  File: cpp.info,  Node: Line Control,  Next: Pragmas,  Prev: Diagnostics,  Up: Top
--- 3138,3161 ----
  
     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
! apostrophes and the like.
  
  
  File: cpp.info,  Node: Line Control,  Next: Pragmas,  Prev: Diagnostics,  Up: Top
*************** reported as having appeared on the line
*** 3188,3246 ****
  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'.
  
!      Previous versions of CPP did not interpret escapes in `#line'; we
       have changed it because the standard requires they be interpreted,
       and most other compilers do.
  
! `#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.  This is a change from
! GCC 2.95.  Previously, a file reading
  
-      #line 1 "../src/gram.y"
       #include "gram.h"
  
!    would search for `gram.h' in `../src', then the `-I' chain; the
! directory containing the physical source file would not be searched.
! In GCC 3.0 and later, the `#include' is not affected by the presence of
! a `#line' referring to a different directory.
  
     We made this change because the old behavior caused problems when
  generated source files were transported between machines.  For instance,
  it is common practice to ship generated parsers with a source release,
  so that people building the distribution do not need to have yacc or
! Bison installed.  These files frequently have `#line' directives
  referring to the directory tree of the system where the distribution was
  created.  If GCC tries to search for headers in those directories, the
  build is likely to fail.
--- 3170,3227 ----
  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'.
  
!      Previous versions of CPP did not interpret escapes in '#line'; we
       have changed it because the standard requires they be interpreted,
       and most other compilers do.
  
! '#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.  This is a change from GCC 2.95.
! Previously, a file reading
  
       #include "gram.h"
  
!    would search for 'gram.h' in '../src', then the '-I' chain; the
! directory containing the physical source file would not be searched.  In
! GCC 3.0 and later, the '#include' is not affected by the presence of a
! '#line' referring to a different directory.
  
     We made this change because the old behavior caused problems when
  generated source files were transported between machines.  For instance,
  it is common practice to ship generated parsers with a source release,
  so that people building the distribution do not need to have yacc or
! Bison installed.  These files frequently have '#line' directives
  referring to the directory tree of the system where the distribution was
  created.  If GCC tries to search for headers in those directories, the
  build is likely to fail.
*************** build is likely to fail.
*** 3249,3255 ****
  in the same directory as its source and it attempts to include a header
  which would be visible searching from the directory containing the
  source file.  However, this problem is easily solved with an additional
! `-I' switch on the command line.  The failures caused by the old
  semantics could sometimes be corrected only by editing the generated
  files, which is difficult and error-prone.
  
--- 3230,3236 ----
  in the same directory as its source and it attempts to include a header
  which would be visible searching from the directory containing the
  source file.  However, this problem is easily solved with an additional
! '-I' switch on the command line.  The failures caused by the old
  semantics could sometimes be corrected only by editing the generated
  files, which is difficult and error-prone.
  
*************** File: cpp.info,  Node: Pragmas,  Next: O
*** 3259,3306 ****
  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.  Three forms of this directive
! (commonly known as "pragmas") are specified by the 1999 C standard.  A
! C compiler is free to attach any meaning it likes to other pragmas.
  
     GCC has historically preferred to use extensions to the syntax of the
! language, such as `__attribute__', for this purpose.  However, GCC does
  define a few pragmas of its own.  These mostly have effects on the
  entire translation unit or source file.
  
     In GCC version 3, all GNU-defined, supported pragmas have been given
! a `GCC' prefix.  This is in line with the `STDC' prefix on all pragmas
  defined by C99.  For backward compatibility, pragmas which were
! recognized by previous versions are still recognized without the `GCC'
! prefix, but that usage is deprecated.  Some older pragmas are
! deprecated in their entirety.  They are not recognized with the `GCC'
! prefix.  *Note Obsolete Features::.
  
!    C99 introduces 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++
--- 3240,3287 ----
  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.  Three forms of this directive
! (commonly known as "pragmas") are specified by the 1999 C standard.  A C
! compiler is free to attach any meaning it likes to other pragmas.
  
     GCC has historically preferred to use extensions to the syntax of the
! language, such as '__attribute__', for this purpose.  However, GCC does
  define a few pragmas of its own.  These mostly have effects on the
  entire translation unit or source file.
  
     In GCC version 3, all GNU-defined, supported pragmas have been given
! a 'GCC' prefix.  This is in line with the 'STDC' prefix on all pragmas
  defined by C99.  For backward compatibility, pragmas which were
! recognized by previous versions are still recognized without the 'GCC'
! prefix, but that usage is deprecated.  Some older pragmas are deprecated
! in their entirety.  They are not recognized with the 'GCC' prefix.
! *Note Obsolete Features::.
  
!    C99 introduces 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
*** 3308,3315 ****
  
     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
--- 3289,3296 ----
  
     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
*** 3320,3330 ****
            #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,
--- 3301,3311 ----
            #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
*** 3335,3343 ****
       will produce an error.
  
       If a poisoned identifier appears as part of the expansion of a
!      macro which was defined before the identifier was poisoned, it
!      will _not_ cause an error.  This lets you poison an identifier
!      without worrying about system headers defining macros that use it.
  
       For example,
  
--- 3316,3324 ----
       will produce an error.
  
       If a poisoned identifier appears as part of the expansion of a
!      macro which was defined before the identifier was poisoned, it will
!      _not_ cause an error.  This lets you poison an identifier without
!      worrying about system headers defining macros that use it.
  
       For example,
  
*************** compilers.  They are documented in the G
*** 3347,3366 ****
  
       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'.
! 
  
  
  File: cpp.info,  Node: Other Directives,  Next: Preprocessor Output,  Prev: Pragmas,  Up: Top
--- 3328,3346 ----
  
       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'.
  
  
  File: cpp.info,  Node: Other Directives,  Next: Preprocessor Output,  Prev: Pragmas,  Up: Top
*************** File: cpp.info,  Node: Other Directives,
*** 3368,3388 ****
  8 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.
  
  
--- 3348,3368 ----
  8 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.
  
  
*************** that the following line originated in fi
*** 3424,3462 ****
  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
--- 3404,3439 ----
  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,
*** 3466,3472 ****
  
  Traditional (pre-standard) C preprocessing is rather different from the
  preprocessing specified by the standard.  When GCC is given the
! `-traditional-cpp' option, it attempts to emulate a traditional
  preprocessor.
  
     GCC versions 3.2 and later only support traditional mode semantics in
--- 3443,3449 ----
  
  Traditional (pre-standard) C preprocessing is rather different from the
  preprocessing specified by the standard.  When GCC is given the
! '-traditional-cpp' option, it attempts to emulate a traditional
  preprocessor.
  
     GCC versions 3.2 and later only support traditional mode semantics in
*************** simply treated as a stream of text with
*** 3499,3529 ****
  
     This implementation does not treat trigraphs (*note trigraphs::)
  specially since they were an invention of the standards committee.  It
! handles arbitrarily-positioned escaped newlines properly and splices
! the lines as you would expect; many traditional preprocessors did not
! do this.
  
     The form of horizontal whitespace in the input file is preserved in
  the output.  In particular, hard tabs remain hard tabs.  This can be
  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 the output of the preprocessor, this means that comments can
! effectively be used as token paste operators.  However, comments behave
! like separators for text handled by the preprocessor itself, since it
! doesn't re-lex its input.  For example, in
  
       #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
  
--- 3476,3505 ----
  
     This implementation does not treat trigraphs (*note trigraphs::)
  specially since they were an invention of the standards committee.  It
! handles arbitrarily-positioned escaped newlines properly and splices the
! lines as you would expect; many traditional preprocessors did not do
! this.
  
     The form of horizontal whitespace in the input file is preserved in
  the output.  In particular, hard tabs remain hard tabs.  This can be
  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
! the output of the preprocessor, this means that comments can effectively
! be used as token paste operators.  However, comments behave like
! separators for text handled by the preprocessor itself, since it doesn't
! re-lex its input.  For example, in
  
       #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
*** 3537,3543 ****
  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
--- 3513,3519 ----
  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
*** 3568,3583 ****
  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 stringification 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
  replacement, do not expand.
  
     CPP replaces an unquoted object-like macro name with its replacement
--- 3544,3559 ----
  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 stringification 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
  replacement, do not expand.
  
     CPP replaces an unquoted object-like macro name with its replacement
*************** invocation.
*** 3597,3619 ****
     Function-like macros are similar in form but quite different in
  behavior to their ISO counterparts.  Their arguments are contained
  within parentheses, are comma-separated, and can cross physical lines.
! Commas within nested parentheses are not treated as argument
! separators.  Similarly, a quote in an argument cannot be left unclosed;
! a following comma or parenthesis that comes before the closing quote is
! treated like 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.
  
     If a macro argument crosses a new line, the new line is replaced with
  a space when forming the argument.  If the previous line contained an
--- 3573,3594 ----
     Function-like macros are similar in form but quite different in
  behavior to their ISO counterparts.  Their arguments are contained
  within parentheses, are comma-separated, and can cross physical lines.
! Commas within nested parentheses are not treated as argument separators.
! Similarly, a quote in an argument cannot be left unclosed; a following
! comma or parenthesis that comes before the closing quote is treated like
! 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.
  
     If a macro argument crosses a new line, the new line is replaced with
  a space when forming the argument.  If the previous line contained an
*************** File: cpp.info,  Node: Traditional misce
*** 3644,3659 ****
  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.
  
--- 3619,3634 ----
  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.
  
*************** preprocessor.
*** 3662,3668 ****
     * If a line that looks like a directive appears within macro
       arguments, the behavior is undefined.
  
- 
  
  File: cpp.info,  Node: Traditional warnings,  Prev: Traditional miscellany,  Up: Traditional Mode
  
--- 3637,3642 ----
*************** File: cpp.info,  Node: Traditional warni
*** 3670,3693 ****
  =========================
  
  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
--- 3644,3667 ----
  =========================
  
  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
*************** using a conforming compiler, such as the
*** 3696,3707 ****
  
     * 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
--- 3670,3681 ----
  
     * 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
*** 3737,3803 ****
  ====================================
  
  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++ and
!      C99 also allow universal character names, and C99 further permits
!      implementation-defined characters.
  
!      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
       non-directive line of output is preceded with sufficient spaces
!      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 (a slight change from versions 3.1 and earlier of
!      GCC).  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.
  
--- 3711,3778 ----
  ====================================
  
  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++ and C99 also allow universal
!      character names, and C99 further permits implementation-defined
!      characters.
! 
!      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
       non-directive line of output is preceded with sufficient spaces
!      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 (a slight
!      change from versions 3.1 and earlier of GCC).  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.
  
*************** it.
*** 3805,3823 ****
       *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.
  
- 
  
  File: cpp.info,  Node: Implementation limits,  Next: Obsolete Features,  Prev: Implementation-defined behavior,  Up: Implementation Details
  
--- 3780,3797 ----
       *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.
  
  
  File: cpp.info,  Node: Implementation limits,  Next: Obsolete Features,  Prev: Implementation-defined behavior,  Up: Implementation Details
  
*************** limit, please report that as a bug.  *No
*** 3832,3843 ****
  
     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.
--- 3806,3817 ----
  
     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.
*************** consumed by other processes on the same
*** 3863,3872 ****
       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.
--- 3837,3846 ----
       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.
*************** consumed by other processes on the same
*** 3878,3888 ****
     * 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 by the available address space.  This is generally at
!      least two gigabytes.  Depending on the operating system, the size
!      of physical memory may or may not be a limitation.
! 
  
  
  File: cpp.info,  Node: Obsolete Features,  Next: Differences from previous versions,  Prev: Implementation limits,  Up: Implementation Details
--- 3852,3861 ----
     * 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
!      by the available address space.  This is generally at least two
!      gigabytes.  Depending on the operating system, the size of physical
!      memory may or may not be a limitation.
  
  
  File: cpp.info,  Node: Obsolete Features,  Next: Differences from previous versions,  Prev: Implementation limits,  Up: Implementation Details
*************** File: cpp.info,  Node: Obsolete Features
*** 3891,3898 ****
  ======================
  
  CPP has some features which are present mainly for compatibility with
! older programs.  We discourage their use in new code.  In some cases,
! we plan to remove the feature in a future version of GCC.
  
  11.3.1 Assertions
  -----------------
--- 3864,3871 ----
  ======================
  
  CPP has some features which are present mainly for compatibility with
! older programs.  We discourage their use in new code.  In some cases, we
! plan to remove the feature in a future version of GCC.
  
  11.3.1 Assertions
  -----------------
*************** define them with preprocessing directive
*** 3906,3913 ****
  the compiler's target system and we added them for compatibility with
  existing compilers.  In practice they are just as unpredictable as the
  system-specific predefined macros.  In addition, they are not part of
! any standard, and only a few compilers support them.  Therefore, the
! use of assertions is *less* portable than the use of system-specific
  predefined macros.  We recommend you do not use them at all.
  
     An assertion looks like this:
--- 3879,3886 ----
  the compiler's target system and we added them for compatibility with
  existing compilers.  In practice they are just as unpredictable as the
  system-specific predefined macros.  In addition, they are not part of
! any standard, and only a few compilers support them.  Therefore, the use
! of assertions is *less* portable than the use of system-specific
  predefined macros.  We recommend you do not use them at all.
  
     An assertion looks like this:
*************** PREDICATE must be a single identifier.
*** 3918,3929 ****
  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)
  
--- 3891,3902 ----
  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:
*** 3932,3939 ****
  
       #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)
--- 3905,3912 ----
  
       #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
*** 3943,3957 ****
  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.
--- 3916,3930 ----
  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: Differences from
*** 3964,3971 ****
  =======================================
  
  This section details behavior which has changed from previous versions
! of CPP.  We do not plan to change it again in the near future, but we
! do not promise not to, either.
  
     The "previous versions" discussed here are 2.95 and before.  The
  behavior of GCC 3.0 is mostly the same as the behavior of the widely
--- 3937,3944 ----
  =======================================
  
  This section details behavior which has changed from previous versions
! of CPP.  We do not plan to change it again in the near future, but we do
! not promise not to, either.
  
     The "previous versions" discussed here are 2.95 and before.  The
  behavior of GCC 3.0 is mostly the same as the behavior of the widely
*************** they generally represent bugs in the sna
*** 3974,4021 ****
  
     * -I- deprecated
  
!      This option has been deprecated in 4.0.  `-iquote' is meant to
       replace the need for this option.
  
!    * Order of evaluation of `#' and `##' operators
  
       The standard does not specify the order of evaluation of a chain of
!      `##' operators, nor whether `#' is evaluated before, after, or at
!      the same time as `##'.  You should therefore not write any code
       which depends on any specific ordering.  It is possible to
       guarantee an ordering, if you need one, by suitable use of nested
       macros.
  
!      An example of where this might matter is pasting the arguments `1',
!      `e' and `-2'.  This would be fine for left-to-right pasting, but
!      right-to-left pasting would produce an invalid token `e-2'.
  
!      GCC 3.0 evaluates `#' and `##' at the same time and strictly left
!      to right.  Older versions evaluated all `#' operators first, then
!      all `##' operators, in an unreliable order.
  
     * The form of whitespace between tokens in preprocessor output
  
       *Note Preprocessor Output::, for the current textual format.  This
       is also the format used by stringification.  Normally, the
!      preprocessor communicates tokens directly to the compiler's
!      parser, and whitespace does not come up at all.
  
!      Older versions of GCC preserved all whitespace provided by the
!      user and inserted lots more whitespace of their own, because they
!      could not accurately predict when extra spaces were needed to
!      prevent accidental token pasting.
  
     * Optional argument when invoking rest argument macros
  
       As an extension, GCC permits you to omit the variable arguments
!      entirely when you use a variable argument macro.  This is
!      forbidden by the 1999 C standard, and will provoke a pedantic
!      warning with GCC 3.0.  Previous versions accepted it silently.
  
!    * `##' swallowing preceding text in rest argument macros
  
!      Formerly, in a macro expansion, if `##' appeared before a variable
       arguments parameter, and the set of tokens specified for that
       argument in the macro invocation was empty, previous versions of
       CPP would back up and remove the preceding sequence of
--- 3947,3994 ----
  
     * -I- deprecated
  
!      This option has been deprecated in 4.0.  '-iquote' is meant to
       replace the need for this option.
  
!    * Order of evaluation of '#' and '##' operators
  
       The standard does not specify the order of evaluation of a chain of
!      '##' operators, nor whether '#' is evaluated before, after, or at
!      the same time as '##'.  You should therefore not write any code
       which depends on any specific ordering.  It is possible to
       guarantee an ordering, if you need one, by suitable use of nested
       macros.
  
!      An example of where this might matter is pasting the arguments '1',
!      'e' and '-2'.  This would be fine for left-to-right pasting, but
!      right-to-left pasting would produce an invalid token 'e-2'.
  
!      GCC 3.0 evaluates '#' and '##' at the same time and strictly left
!      to right.  Older versions evaluated all '#' operators first, then
!      all '##' operators, in an unreliable order.
  
     * The form of whitespace between tokens in preprocessor output
  
       *Note Preprocessor Output::, for the current textual format.  This
       is also the format used by stringification.  Normally, the
!      preprocessor communicates tokens directly to the compiler's parser,
!      and whitespace does not come up at all.
  
!      Older versions of GCC preserved all whitespace provided by the user
!      and inserted lots more whitespace of their own, because they could
!      not accurately predict when extra spaces were needed to prevent
!      accidental token pasting.
  
     * Optional argument when invoking rest argument macros
  
       As an extension, GCC permits you to omit the variable arguments
!      entirely when you use a variable argument macro.  This is forbidden
!      by the 1999 C standard, and will provoke a pedantic warning with
!      GCC 3.0.  Previous versions accepted it silently.
  
!    * '##' swallowing preceding text in rest argument macros
  
!      Formerly, in a macro expansion, if '##' appeared before a variable
       arguments parameter, and the set of tokens specified for that
       argument in the macro invocation was empty, previous versions of
       CPP would back up and remove the preceding sequence of
*************** they generally represent bugs in the sna
*** 4023,4053 ****
       extension is in direct conflict with the 1999 C standard and has
       been drastically pared back.
  
!      In the current version of the preprocessor, if `##' appears between
       a comma and a variable arguments parameter, and the variable
       argument is omitted entirely, the comma will be removed from the
       expansion.  If the variable argument is empty, or the token before
!      `##' is not a comma, then `##' behaves as a normal token paste.
  
!    * `#line' and `#include'
  
!      The `#line' directive used to change GCC's notion of the
!      "directory containing the current file", used by `#include' with a
       double-quoted header file name.  In 3.0 and later, it does not.
       *Note Line Control::, for further explanation.
  
!    * Syntax of `#line'
  
!      In GCC 2.95 and previous, the string constant argument to `#line'
!      was treated the same way as the argument to `#include': backslash
!      escapes were not honored, and the string ended at the second `"'.
       This is not compliant with the C standard.  In GCC 3.0, an attempt
!      was made to correct the behavior, so that the string was treated
!      as a real string constant, but it turned out to be buggy.  In 3.1,
!      the bugs have been fixed.  (We are not fixing the bugs in 3.0
!      because they affect relatively few people and the fix is quite
!      invasive.)
! 
  
  
  File: cpp.info,  Node: Invocation,  Next: Environment Variables,  Prev: Implementation Details,  Up: Top
--- 3996,4024 ----
       extension is in direct conflict with the 1999 C standard and has
       been drastically pared back.
  
!      In the current version of the preprocessor, if '##' appears between
       a comma and a variable arguments parameter, and the variable
       argument is omitted entirely, the comma will be removed from the
       expansion.  If the variable argument is empty, or the token before
!      '##' is not a comma, then '##' behaves as a normal token paste.
  
!    * '#line' and '#include'
  
!      The '#line' directive used to change GCC's notion of the "directory
!      containing the current file", used by '#include' with a
       double-quoted header file name.  In 3.0 and later, it does not.
       *Note Line Control::, for further explanation.
  
!    * Syntax of '#line'
  
!      In GCC 2.95 and previous, the string constant argument to '#line'
!      was treated the same way as the argument to '#include': backslash
!      escapes were not honored, and the string ended at the second '"'.
       This is not compliant with the C standard.  In GCC 3.0, an attempt
!      was made to correct the behavior, so that the string was treated as
!      a real string constant, but it turned out to be buggy.  In 3.1, the
!      bugs have been fixed.  (We are not fixing the bugs in 3.0 because
!      they affect relatively few people and the fix is quite invasive.)
  
  
  File: cpp.info,  Node: Invocation,  Next: Environment Variables,  Prev: Implementation Details,  Up: Top
*************** here are also acceptable to the C compil
*** 4062,4100 ****
  except that the C compiler has different rules for specifying the output
  file.
  
!    _Note:_ Whether you use the preprocessor by way of `gcc' or `cpp',
  the "compiler driver" is run first.  This program's purpose is to
  translate your command into invocations of the programs that do the
  actual work.  Their command-line interfaces are similar but not
  identical to the documented interface, and may change without notice.
  
     The C preprocessor 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.
! Also, if either file is omitted, it means the same as if `-' had been
  specified for that 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 will be truncated by embedded
!      newline characters.
  
       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
--- 4033,4071 ----
  except that the C compiler has different rules for specifying the output
  file.
  
!    _Note:_ Whether you use the preprocessor by way of 'gcc' or 'cpp',
  the "compiler driver" is run first.  This program's purpose is to
  translate your command into invocations of the programs that do the
  actual work.  Their command-line interfaces are similar but not
  identical to the documented interface, and may change without notice.
  
     The C preprocessor 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.
! Also, if either file is omitted, it means the same as if '-' had been
  specified for that 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 will be truncated by embedded newline
!      characters.
  
       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
*************** single-letter options may _not_ be group
*** 4103,4178 ****
       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 will 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.
  
! `-U NAME'
!      Cancel any previous definition of NAME, either built in or
!      provided with a `-D' option.
  
! `-undef'
       Do not predefine any system-specific or GCC-specific macros.  The
       standard predefined macros remain defined.  *Note Standard
       Predefined Macros::.
  
! `-I DIR'
!      Add the directory DIR to the list of directories to be searched
!      for header files.  *Note Search Path::.  Directories named by `-I'
!      are searched before the standard system include directories.  If
!      the directory DIR is a standard system include directory, the
!      option is ignored to ensure that the default search order for
!      system directories and the special treatment of system headers are
!      not defeated (*note System Headers::) .  If DIR begins with `=',
!      then the `=' will be replaced by the sysroot prefix; see
!      `--sysroot' and `-isysroot'.
  
! `-o FILE'
       Write output to FILE.  This is the same as specifying FILE as the
!      second non-option argument to `cpp'.  `gcc' has a different
       interpretation of a second non-option argument, so you must use
!      `-o' to specify the output file.
  
! `-Wall'
       Turns on all optional warnings which are desirable for normal code.
!      At present this is `-Wcomment', `-Wtrigraphs', `-Wmultichar' and a
!      warning about integer promotion causing a change of sign in `#if'
       expressions.  Note that many of the preprocessor's warnings are on
       by default and have no options to control them.
  
! `-Wcomment'
! `-Wcomments'
!      Warn whenever a comment-start sequence `/*' appears in a `/*'
!      comment, or whenever a backslash-newline appears in a `//' comment.
       (Both forms have the same effect.)
  
! `-Wtrigraphs'
       Most trigraphs in comments cannot affect the meaning of the
       program.  However, a trigraph that would form an escaped newline
!      (`??/' at the end of a line) can, by changing where the comment
       begins or ends.  Therefore, only trigraphs that would form escaped
       newlines produce warnings inside a comment.
  
!      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'.
  
! `-Wtraditional'
       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 problematic constructs which
       should be avoided.  *Note Traditional Mode::.
  
! `-Wundef'
       Warn whenever an identifier which is not a macro is encountered in
!      an `#if' directive, outside of `defined'.  Such identifiers are
       replaced with zero.
  
! `-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 will also warn if the macro has not been
--- 4074,4149 ----
       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 will 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.
  
! '-U NAME'
!      Cancel any previous definition of NAME, either built in or provided
!      with a '-D' option.
  
! '-undef'
       Do not predefine any system-specific or GCC-specific macros.  The
       standard predefined macros remain defined.  *Note Standard
       Predefined Macros::.
  
! '-I DIR'
!      Add the directory DIR to the list of directories to be searched for
!      header files.  *Note Search Path::.  Directories named by '-I' are
!      searched before the standard system include directories.  If the
!      directory DIR is a standard system include directory, the option is
!      ignored to ensure that the default search order for system
!      directories and the special treatment of system headers are not
!      defeated (*note System Headers::) .  If DIR begins with '=', then
!      the '=' will be replaced by the sysroot prefix; see '--sysroot' and
!      '-isysroot'.
  
! '-o FILE'
       Write output to FILE.  This is the same as specifying FILE as the
!      second non-option argument to 'cpp'.  'gcc' has a different
       interpretation of a second non-option argument, so you must use
!      '-o' to specify the output file.
  
! '-Wall'
       Turns on all optional warnings which are desirable for normal code.
!      At present this is '-Wcomment', '-Wtrigraphs', '-Wmultichar' and a
!      warning about integer promotion causing a change of sign in '#if'
       expressions.  Note that many of the preprocessor's warnings are on
       by default and have no options to control them.
  
! '-Wcomment'
! '-Wcomments'
!      Warn whenever a comment-start sequence '/*' appears in a '/*'
!      comment, or whenever a backslash-newline appears in a '//' comment.
       (Both forms have the same effect.)
  
! '-Wtrigraphs'
       Most trigraphs in comments cannot affect the meaning of the
       program.  However, a trigraph that would form an escaped newline
!      ('??/' at the end of a line) can, by changing where the comment
       begins or ends.  Therefore, only trigraphs that would form escaped
       newlines produce warnings inside a comment.
  
!      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'.
  
! '-Wtraditional'
       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 problematic constructs which
       should be avoided.  *Note Traditional Mode::.
  
! '-Wundef'
       Warn whenever an identifier which is not a macro is encountered in
!      an '#if' directive, outside of 'defined'.  Such identifiers are
       replaced with zero.
  
! '-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 will also warn if the macro has not been
*************** single-letter options may _not_ be group
*** 4191,4199 ****
            #if defined the_macro_causing_the_warning
            #endif
  
! `-Wendif-labels'
!      Warn whenever an `#else' or an `#endif' are followed by text.
!      This usually happens in code of the form
  
            #if FOO
            ...
--- 4162,4170 ----
            #if defined the_macro_causing_the_warning
            #endif
  
! '-Wendif-labels'
!      Warn whenever an '#else' or an '#endif' are followed by text.  This
!      usually happens in code of the form
  
            #if FOO
            ...
*************** single-letter options may _not_ be group
*** 4201,4292 ****
            ...
            #endif FOO
  
!      The second and third `FOO' should be in comments, but often are not
       in older programs.  This warning is on by default.
  
! `-Werror'
       Make all warnings into hard errors.  Source code which triggers
       warnings will be rejected.
  
! `-Wsystem-headers'
       Issue warnings for code in system headers.  These are normally
       unhelpful in finding bugs in your own code, therefore suppressed.
       If you are responsible for the system library, you may want to see
       them.
  
! `-w'
       Suppress all warnings, including those which GNU CPP issues by
       default.
  
! `-pedantic'
!      Issue all the mandatory diagnostics listed in the C standard.
!      Some of them are left out by default, since they trigger
!      frequently on harmless code.
  
! `-pedantic-errors'
       Issue all the mandatory diagnostics, and make all mandatory
       diagnostics into errors.  This includes mandatory diagnostics that
!      GCC issues without `-pedantic' but treats as warnings.
  
! `-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 will still be 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 will appear in `-MM' dependency output.  This is a slight
       change in semantics from GCC versions 3.0 and earlier.
  
! `-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 have sent preprocessed
       output.
  
!      When used with the driver options `-MD' or `-MMD', `-MF' overrides
       the default dependency output file.
  
! `-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.
  
! `-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:
  
--- 4172,4263 ----
            ...
            #endif FOO
  
!      The second and third 'FOO' should be in comments, but often are not
       in older programs.  This warning is on by default.
  
! '-Werror'
       Make all warnings into hard errors.  Source code which triggers
       warnings will be rejected.
  
! '-Wsystem-headers'
       Issue warnings for code in system headers.  These are normally
       unhelpful in finding bugs in your own code, therefore suppressed.
       If you are responsible for the system library, you may want to see
       them.
  
! '-w'
       Suppress all warnings, including those which GNU CPP issues by
       default.
  
! '-pedantic'
!      Issue all the mandatory diagnostics listed in the C standard.  Some
!      of them are left out by default, since they trigger frequently on
!      harmless code.
  
! '-pedantic-errors'
       Issue all the mandatory diagnostics, and make all mandatory
       diagnostics into errors.  This includes mandatory diagnostics that
!      GCC issues without '-pedantic' but treats as warnings.
  
! '-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 will still be 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 will appear in '-MM' dependency output.  This is a slight
       change in semantics from GCC versions 3.0 and earlier.
  
! '-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 have sent preprocessed
       output.
  
!      When used with the driver options '-MD' or '-MMD', '-MF' overrides
       the default dependency output file.
  
! '-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.
  
! '-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
*** 4294,4734 ****
  
            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 will set 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.
  
! `-x c'
! `-x c++'
! `-x objective-c'
! `-x assembler-with-cpp'
       Specify the source language: C, C++, Objective-C, or assembly.
!      This has nothing to do with standards conformance or extensions;
!      it merely selects which base syntax to expect.  If you give none
!      of these options, cpp will deduce the language from the extension
!      of the source file: `.c', `.cc', `.m', or `.S'.  Some other common
       extensions for C++ and assembly are also recognized.  If cpp does
       not recognize the extension, it will treat the file as C; this is
       the most generic mode.
  
!      _Note:_ Previous versions of cpp accepted a `-lang' option which
       selected both the language and the standards conformance level.
!      This option has been removed, because it conflicts with the `-l'
       option.
  
! `-std=STANDARD'
! `-ansi'
       Specify the standard to which the code should conform.  Currently
       CPP knows about C and C++ standards; others may be added in the
       future.
  
       STANDARD may be one of:
!     `c90'
!     `c89'
!     `iso9899:1990'
!           The ISO C standard from 1990.  `c90' is the customary
            shorthand for this version of the standard.
  
!           The `-ansi' option is equivalent to `-std=c90'.
  
!     `iso9899:199409'
            The 1990 C standard, as amended in 1994.
  
!     `iso9899:1999'
!     `c99'
!     `iso9899:199x'
!     `c9x'
            The revised ISO C standard, published in December 1999.
            Before publication, this was known as C9X.
  
!     `iso9899:2011'
!     `c11'
!     `c1x'
            The revised ISO C standard, published in December 2011.
            Before publication, this was known as C1X.
  
!     `gnu90'
!     `gnu89'
            The 1990 C standard plus GNU extensions.  This is the default.
  
!     `gnu99'
!     `gnu9x'
            The 1999 C standard plus GNU extensions.
  
!     `gnu11'
!     `gnu1x'
            The 2011 C standard plus GNU extensions.
  
!     `c++98'
            The 1998 ISO C++ standard plus amendments.
  
!     `gnu++98'
!           The same as `-std=c++98' plus GNU extensions.  This is the
            default for C++ code.
  
! `-I-'
!      Split the include path.  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"'.
       *Note Search Path::.  This option has been deprecated.
  
! `-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.
  
! `-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.)
  
! `-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'.
  
! `-idirafter DIR'
       Search DIR for header 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 `=' will be replaced by the sysroot
!      prefix; see `--sysroot' and `-isysroot'.
  
! `-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.
  
! `-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.  *Note System
!      Headers::.  If DIR begins with `=', then the `=' will be replaced
!      by the sysroot prefix; see `--sysroot' and `-isysroot'.
  
! `-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.  *Note Search Path::.  If DIR begins with `=', then
!      the `=' will be replaced by the sysroot prefix; see `--sysroot'
!      and `-isysroot'.
  
! `-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 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.
  
! `-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'.
  
! `-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.
  
! `-fdebug-cpp'
!      This option is only useful for debugging GCC.  When used with
!      `-E', dumps debugging information about location maps.  Every
!      token in the output is preceded by the dump of the map its location
!      belongs to.  The dump of the map holding the location of a token
!      would be:
!           {`P':`/file/path';`F':`/includer/path';`L':LINE_NUM;`C':COL_NUM;`S':SYSTEM_HEADER_P;`M':MAP_ADDRESS;`E':MACRO_EXPANSION_P,`loc':LOCATION}
  
!      When used without `-E', this option has no effect.
  
! `-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 just as if no `-ftrack-macro-expansion' was present on the
!      command line. 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.
  
! `-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 UTF-32 or UTF-16, whichever
!      corresponds to the width of `wchar_t'.  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
       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'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
       will let the compiler know the current working directory at the
       time of preprocessing.  When this option is enabled, the
       preprocessor will emit, after the initial linemarker, a second
       linemarker with the current working directory followed by two
       slashes.  GCC will use 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 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.
  
! `-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'.
  
! `-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.
  
! `-dCHARS'
!      CHARS is a sequence of one or more of the following characters,
!      and must not be preceded by a space.  Other characters are
!      interpreted by the compiler proper, or reserved for future
!      versions of GCC, and so are silently ignored.  If you specify
!      characters whose behavior conflicts, the result is undefined.
  
!     `M'
!           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
  
            will show all the predefined macros.
  
!           If you use `-dM' without the `-E' option, `-dM' is
!           interpreted as a synonym for `-fdump-rtl-mach'.  *Note
!           Debugging Options: (gcc)Debugging Options.
  
!     `D'
!           Like `M' 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.
  
!     `N'
!           Like `D', but emit only the macro names, not their expansions.
  
!     `I'
!           Output `#include' directives in addition to the result of
            preprocessing.
  
!     `U'
!           Like `D' 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.
  
! `-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::.
  
! `-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.
  
! `-traditional-cpp'
       Try to imitate the behavior of old-fashioned C preprocessors, as
       opposed to ISO C preprocessors.  *Note Traditional Mode::.
  
! `-trigraphs'
       Process trigraph sequences.  *Note Initial processing::.
  
! `-remap'
       Enable special code to work around file systems which only permit
       very short file names, such as MS-DOS.
  
! `--help'
! `--target-help'
       Print text describing all the command-line options instead of
       preprocessing anything.
  
! `-v'
       Verbose mode.  Print out GNU CPP's version number at the beginning
       of execution, and report the final form of the include path.
  
! `-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 `...!' .
  
! `-version'
! `--version'
       Print out GNU CPP's version number.  With one dash, proceed to
       preprocess as normal.  With two dashes, exit immediately.
  
--- 4265,4700 ----
  
            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 will set 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.
  
! '-x c'
! '-x c++'
! '-x objective-c'
! '-x assembler-with-cpp'
       Specify the source language: C, C++, Objective-C, or assembly.
!      This has nothing to do with standards conformance or extensions; it
!      merely selects which base syntax to expect.  If you give none of
!      these options, cpp will deduce the language from the extension of
!      the source file: '.c', '.cc', '.m', or '.S'.  Some other common
       extensions for C++ and assembly are also recognized.  If cpp does
       not recognize the extension, it will treat the file as C; this is
       the most generic mode.
  
!      _Note:_ Previous versions of cpp accepted a '-lang' option which
       selected both the language and the standards conformance level.
!      This option has been removed, because it conflicts with the '-l'
       option.
  
! '-std=STANDARD'
! '-ansi'
       Specify the standard to which the code should conform.  Currently
       CPP knows about C and C++ standards; others may be added in the
       future.
  
       STANDARD may be one of:
!      'c90'
!      'c89'
!      'iso9899:1990'
!           The ISO C standard from 1990.  'c90' is the customary
            shorthand for this version of the standard.
  
!           The '-ansi' option is equivalent to '-std=c90'.
  
!      'iso9899:199409'
            The 1990 C standard, as amended in 1994.
  
!      'iso9899:1999'
!      'c99'
!      'iso9899:199x'
!      'c9x'
            The revised ISO C standard, published in December 1999.
            Before publication, this was known as C9X.
  
!      'iso9899:2011'
!      'c11'
!      'c1x'
            The revised ISO C standard, published in December 2011.
            Before publication, this was known as C1X.
  
!      'gnu90'
!      'gnu89'
            The 1990 C standard plus GNU extensions.  This is the default.
  
!      'gnu99'
!      'gnu9x'
            The 1999 C standard plus GNU extensions.
  
!      'gnu11'
!      'gnu1x'
            The 2011 C standard plus GNU extensions.
  
!      'c++98'
            The 1998 ISO C++ standard plus amendments.
  
!      'gnu++98'
!           The same as '-std=c++98' plus GNU extensions.  This is the
            default for C++ code.
  
! '-I-'
!      Split the include path.  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"'.
       *Note Search Path::.  This option has been deprecated.
  
! '-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.
  
! '-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.)
  
! '-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'.
  
! '-idirafter DIR'
       Search DIR for header 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 '=' will be replaced by the sysroot
!      prefix; see '--sysroot' and '-isysroot'.
  
! '-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.
  
! '-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.  *Note System
!      Headers::.  If DIR begins with '=', then the '=' will be replaced
!      by the sysroot prefix; see '--sysroot' and '-isysroot'.
  
! '-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.
!      *Note Search Path::.  If DIR begins with '=', then the '=' will be
!      replaced by the sysroot prefix; see '--sysroot' and '-isysroot'.
  
! '-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 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.
  
! '-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'.
  
! '-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.
  
! '-fdebug-cpp'
!      This option is only useful for debugging GCC. When used with '-E',
!      dumps debugging information about location maps.  Every token in
!      the output is preceded by the dump of the map its location belongs
!      to.  The dump of the map holding the location of a token would be:
!           {'P':/file/path;'F':/includer/path;'L':LINE_NUM;'C':COL_NUM;'S':SYSTEM_HEADER_P;'M':MAP_ADDRESS;'E':MACRO_EXPANSION_P,'loc':LOCATION}
  
!      When used without '-E', this option has no effect.
  
! '-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 just as if
!      no '-ftrack-macro-expansion' was present on the command line.
!      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.
  
! '-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 UTF-32 or UTF-16, whichever
!      corresponds to the width of 'wchar_t'.  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
       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'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
       will let the compiler know the current working directory at the
       time of preprocessing.  When this option is enabled, the
       preprocessor will emit, after the initial linemarker, a second
       linemarker with the current working directory followed by two
       slashes.  GCC will use 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 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.
  
! '-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'.
  
! '-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.
  
! '-dCHARS'
!      CHARS is a sequence of one or more of the following characters, and
!      must not be preceded by a space.  Other characters are interpreted
!      by the compiler proper, or reserved for future versions of GCC, and
!      so are silently ignored.  If you specify characters whose behavior
!      conflicts, the result is undefined.
  
!      'M'
!           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
  
            will show all the predefined macros.
  
!           If you use '-dM' without the '-E' option, '-dM' is interpreted
!           as a synonym for '-fdump-rtl-mach'.  *Note (gcc)Debugging
!           Options::.
  
!      'D'
!           Like 'M' 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.
  
!      'N'
!           Like 'D', but emit only the macro names, not their expansions.
  
!      'I'
!           Output '#include' directives in addition to the result of
            preprocessing.
  
!      'U'
!           Like 'D' 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.
  
! '-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::.
  
! '-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.
  
! '-traditional-cpp'
       Try to imitate the behavior of old-fashioned C preprocessors, as
       opposed to ISO C preprocessors.  *Note Traditional Mode::.
  
! '-trigraphs'
       Process trigraph sequences.  *Note Initial processing::.
  
! '-remap'
       Enable special code to work around file systems which only permit
       very short file names, such as MS-DOS.
  
! '--help'
! '--target-help'
       Print text describing all the command-line options instead of
       preprocessing anything.
  
! '-v'
       Verbose mode.  Print out GNU CPP's version number at the beginning
       of execution, and report the final form of the include path.
  
! '-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 '...!' .
  
! '-version'
! '--version'
       Print out GNU CPP's version number.  With one dash, proceed to
       preprocess as normal.  With two dashes, exit immediately.
  
*************** operates.  You can use them to specify d
*** 4743,4802 ****
  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::.
  
  
  File: cpp.info,  Node: GNU Free Documentation License,  Next: Index of Directives,  Prev: Environment Variables,  Up: Top
--- 4709,4768 ----
  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::.
  
  
  File: cpp.info,  Node: GNU Free Documentation License,  Next: Index of Directives,  Prev: Environment Variables,  Up: Top
*************** GNU Free Documentation License
*** 4807,4813 ****
                       Version 1.3, 3 November 2008
  
       Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
!      `http://fsf.org/'
  
       Everyone is permitted to copy and distribute verbatim copies
       of this license document, but changing it is not allowed.
--- 4773,4779 ----
                       Version 1.3, 3 November 2008
  
       Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
!      <http://fsf.org/>
  
       Everyone is permitted to copy and distribute verbatim copies
       of this license document, but changing it is not allowed.
*************** GNU Free Documentation License
*** 4832,4852 ****
       free program should come with manuals providing the same freedoms
       that the software does.  But this License is not limited to
       software manuals; 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.
  
    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
--- 4798,4818 ----
       free program should come with manuals providing the same freedoms
       that the software does.  But this License is not limited to
       software manuals; 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.
  
    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
*************** GNU Free Documentation License
*** 4864,4875 ****
       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 Document may contain zero Invariant 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
--- 4830,4841 ----
       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 Document may
!      contain zero Invariant 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
*************** GNU Free Documentation License
*** 4880,4906 ****
       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 paint programs or (for drawings) some
!      widely available drawing editor, and that is suitable for input to
!      text formatters or for automatic translation to a variety of
!      formats suitable for input to text formatters.  A copy made in an
!      otherwise Transparent file 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".
  
       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.
  
       The "Title Page" means, for a printed book, the title page itself,
       plus such following pages as are needed to hold, legibly, the
--- 4846,4872 ----
       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 paint programs or (for drawings) some widely
!      available drawing editor, and that is suitable for input to text
!      formatters or for automatic translation to a variety of formats
!      suitable for input to text formatters.  A copy made in an otherwise
!      Transparent file 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".
  
       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.
  
       The "Title Page" means, for a printed book, the title page itself,
       plus such following pages as are needed to hold, legibly, the
*************** GNU Free Documentation License
*** 4938,4945 ****
       may not use technical measures to obstruct or control the reading
       or further copying of the copies you make or distribute.  However,
       you may accept compensation in exchange for copies.  If you
!      distribute a large enough number of copies you must also follow
!      the conditions in section 3.
  
       You may also lend copies, under the same conditions stated above,
       and you may publicly display copies.
--- 4904,4911 ----
       may not use technical measures to obstruct or control the reading
       or further copying of the copies you make or distribute.  However,
       you may accept compensation in exchange for copies.  If you
!      distribute a large enough number of copies you must also follow the
!      conditions in section 3.
  
       You may also lend copies, under the same conditions stated above,
       and you may publicly display copies.
*************** GNU Free Documentation License
*** 4953,4964 ****
       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 visible.  You may add other material
!      on the covers in addition.  Copying with changes limited to the
!      covers, as long as they preserve the title of the Document and
!      satisfy these conditions, can be treated as verbatim copying in
!      other respects.
  
       If the required texts for either cover are too voluminous to fit
       legibly, you should put the first ones listed (as many as fit
--- 4919,4929 ----
       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 visible.  You may add other material on the
!      covers in addition.  Copying with changes limited to the covers, as
!      long as they preserve the title of the Document and satisfy these
!      conditions, can be treated as verbatim copying in other respects.
  
       If the required texts for either cover are too voluminous to fit
       legibly, you should put the first ones listed (as many as fit
*************** GNU Free Documentation License
*** 4966,5005 ****
       adjacent pages.
  
       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 that
!      this Transparent copy will remain thus accessible at the stated
!      location until at least one year after the last time you
!      distribute an Opaque copy (directly or through your agents or
!      retailers) of that edition to the public.
  
       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.
  
    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 Modified Version under precisely this License, with
!      the Modified Version filling the role of the Document, thus
!      licensing distribution and modification of the Modified Version to
!      whoever possesses a copy of it.  In addition, you must do these
!      things in the Modified Version:
  
         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.
  
         B. List on the Title Page, as authors, one or more persons or
            entities responsible for authorship of the modifications in
--- 4931,4969 ----
       adjacent pages.
  
       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 that this Transparent copy will
!      remain thus accessible at the stated location until at least one
!      year after the last time you distribute an Opaque copy (directly or
!      through your agents or retailers) of that edition to the public.
  
       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.
  
    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 Modified Version under precisely this License, with the
!      Modified Version filling the role of the Document, thus licensing
!      distribution and modification of the Modified Version to whoever
!      possesses a copy of it.  In addition, you must do these things in
!      the Modified Version:
  
         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.
  
         B. List on the Title Page, as authors, one or more persons or
            entities responsible for authorship of the modifications in
*************** GNU Free Documentation License
*** 5029,5059 ****
  
         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.
  
         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.
  
         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.
  
!        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.
  
         M. Delete any section Entitled "Endorsements".  Such a section
            may not be included in the Modified Version.
--- 4993,5022 ----
  
         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.
  
         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.
  
         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.
  
!        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.
  
         M. Delete any section Entitled "Endorsements".  Such a section
            may not be included in the Modified Version.
*************** GNU Free Documentation License
*** 5066,5076 ****
  
       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.
  
       You may add a section Entitled "Endorsements", provided it contains
       nothing but endorsements of your Modified Version by various
--- 5029,5039 ----
  
       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.
  
       You may add a section Entitled "Endorsements", provided it contains
       nothing but endorsements of your Modified Version by various
*************** GNU Free Documentation License
*** 5079,5093 ****
       definition of a standard.
  
       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, you may not add another; but you may
!      replace the old one, on explicit permission from the previous
!      publisher that added the old one.
  
       The author(s) and publisher(s) of the Document do not by this
       License give permission to use their names for publicity for or to
--- 5042,5056 ----
       definition of a standard.
  
       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, you may not add another; but you may replace the old
!      one, on explicit permission from the previous publisher that added
!      the old one.
  
       The author(s) and publisher(s) of the Document do not by this
       License give permission to use their names for publicity for or to
*************** GNU Free Documentation License
*** 5097,5104 ****
  
       You may combine the Document with other documents released under
       this License, under the terms defined in section 4 above for
!      modified versions, provided that you include in the combination
!      all of the Invariant Sections of all of the original documents,
       unmodified, and list them all as Invariant Sections of your
       combined work in its license notice, and that you preserve all
       their Warranty Disclaimers.
--- 5060,5067 ----
  
       You may combine the Document with other documents released under
       this License, under the terms defined in section 4 above for
!      modified versions, provided that you include in the combination all
!      of the Invariant Sections of all of the original documents,
       unmodified, and list them all as Invariant Sections of your
       combined work in its license notice, and that you preserve all
       their Warranty Disclaimers.
*************** GNU Free Documentation License
*** 5125,5144 ****
       documents released under this License, and replace the individual
       copies of this License in the various documents with a single copy
       that is included in the collection, provided that you follow the
!      rules of this License for verbatim copying of each of the
!      documents in all other respects.
  
       You may extract a single document from such a collection, and
       distribute 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.
  
    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 distribution medium, is called an "aggregate" 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
--- 5088,5107 ----
       documents released under this License, and replace the individual
       copies of this License in the various documents with a single copy
       that is included in the collection, provided that you follow the
!      rules of this License for verbatim copying of each of the documents
!      in all other respects.
  
       You may extract a single document from such a collection, and
       distribute 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.
  
    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 distribution medium, is called an "aggregate" 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
*************** GNU Free Documentation License
*** 5183,5190 ****
  
       However, if you cease all violation of this License, then your
       license from a particular copyright holder is reinstated (a)
!      provisionally, unless and until the copyright holder explicitly
!      and finally terminates your license, and (b) permanently, if the
       copyright holder fails to notify you of the violation by some
       reasonable means prior to 60 days after the cessation.
  
--- 5146,5153 ----
  
       However, if you cease all violation of this License, then your
       license from a particular copyright holder is reinstated (a)
!      provisionally, unless and until the copyright holder explicitly and
!      finally terminates your license, and (b) permanently, if the
       copyright holder fails to notify you of the violation by some
       reasonable means prior to 60 days after the cessation.
  
*************** GNU Free Documentation License
*** 5196,5228 ****
       after your receipt of the notice.
  
       Termination of your rights under this section does not terminate
!      the licenses of parties who have received copies or rights from
!      you under 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.
  
!  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 will be similar in spirit to the present version, but may
       differ in detail to address new problems or concerns.  See
!      `http://www.gnu.org/copyleft/'.
  
       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'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
--- 5159,5191 ----
       after your receipt of the notice.
  
       Termination of your rights under this section does not terminate
!      the licenses of parties who have received copies or rights from you
!      under 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.
  
!   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 will be similar in spirit to the present version, but may
       differ in detail to address new problems or concerns.  See
!      <http://www.gnu.org/copyleft/>.
  
       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'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
*************** GNU Free Documentation License
*** 5252,5258 ****
       site 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
  ====================================================
  
--- 5215,5220 ----
*************** notices just after the title page:
*** 5269,5275 ****
         Free Documentation License''.
  
     If you have Invariant Sections, Front-Cover Texts and Back-Cover
! Texts, replace the "with...Texts." line with this:
  
           with the Invariant Sections being LIST THEIR TITLES, with
           the Front-Cover Texts being LIST, and with the Back-Cover Texts
--- 5231,5237 ----
         Free Documentation License''.
  
     If you have Invariant Sections, Front-Cover Texts and Back-Cover
! Texts, replace the "with...Texts."  line with this:
  
           with the Invariant Sections being LIST THEIR TITLES, with
           the Front-Cover Texts being LIST, and with the Back-Cover Texts
*************** combination of the three, merge those tw
*** 5280,5288 ****
  situation.
  
     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.
  
  
  File: cpp.info,  Node: Index of Directives,  Next: Option Index,  Prev: GNU Free Documentation License,  Up: Top
--- 5242,5250 ----
  situation.
  
     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.
  
  
  File: cpp.info,  Node: Index of Directives,  Next: Option Index,  Prev: GNU Free Documentation License,  Up: Top
*************** Index of Directives
*** 5311,5318 ****
  * #pragma GCC dependency:                Pragmas.             (line  55)
  * #pragma GCC error:                     Pragmas.             (line 100)
  * #pragma GCC poison:                    Pragmas.             (line  67)
- * #pragma GCC system_header <1>:         Pragmas.             (line  94)
  * #pragma GCC system_header:             System Headers.      (line  31)
  * #pragma GCC warning:                   Pragmas.             (line  99)
  * #sccs:                                 Other Directives.    (line   6)
  * #unassert:                             Obsolete Features.   (line  59)
--- 5273,5280 ----
  * #pragma GCC dependency:                Pragmas.             (line  55)
  * #pragma GCC error:                     Pragmas.             (line 100)
  * #pragma GCC poison:                    Pragmas.             (line  67)
  * #pragma GCC system_header:             System Headers.      (line  31)
+ * #pragma GCC system_header <1>:         Pragmas.             (line  94)
  * #pragma GCC warning:                   Pragmas.             (line  99)
  * #sccs:                                 Other Directives.    (line   6)
  * #unassert:                             Obsolete Features.   (line  59)
*************** Option Index
*** 5327,5422 ****
  ************
  
  CPP's command-line options and environment variables are indexed here
! without any initial `-' or `--'.
  
  [index]
  * Menu:
  
! * A:                                     Invocation.          (line 567)
! * ansi:                                  Invocation.          (line 308)
! * C:                                     Invocation.          (line 626)
! * C_INCLUDE_PATH:                        Environment Variables.
!                                                               (line  16)
  * CPATH:                                 Environment Variables.
                                                                (line  15)
  * CPLUS_INCLUDE_PATH:                    Environment Variables.
                                                                (line  17)
! * D:                                     Invocation.          (line  39)
! * dD:                                    Invocation.          (line 599)
  * DEPENDENCIES_OUTPUT:                   Environment Variables.
!                                                               (line  44)
! * dI:                                    Invocation.          (line 608)
! * dM:                                    Invocation.          (line 583)
! * dN:                                    Invocation.          (line 605)
! * dU:                                    Invocation.          (line 612)
! * fdebug-cpp:                            Invocation.          (line 496)
! * fdirectives-only:                      Invocation.          (line 444)
! * fdollars-in-identifiers:               Invocation.          (line 466)
  * fexec-charset:                         Invocation.          (line 524)
! * fextended-identifiers:                 Invocation.          (line 469)
  * finput-charset:                        Invocation.          (line 537)
! * fno-canonical-system-headers:          Invocation.          (line 473)
! * fno-show-column:                       Invocation.          (line 562)
  * fno-working-directory:                 Invocation.          (line 547)
! * fpreprocessed:                         Invocation.          (line 477)
! * ftabstop:                              Invocation.          (line 490)
  * ftrack-macro-expansion:                Invocation.          (line 506)
  * fwide-exec-charset:                    Invocation.          (line 529)
  * fworking-directory:                    Invocation.          (line 547)
! * H:                                     Invocation.          (line 671)
! * help:                                  Invocation.          (line 663)
! * I:                                     Invocation.          (line  71)
! * I-:                                    Invocation.          (line 357)
! * idirafter:                             Invocation.          (line 399)
! * imacros:                               Invocation.          (line 390)
! * imultilib:                             Invocation.          (line 424)
! * include:                               Invocation.          (line 379)
! * iprefix:                               Invocation.          (line 406)
! * iquote:                                Invocation.          (line 436)
! * isysroot:                              Invocation.          (line 418)
! * isystem:                               Invocation.          (line 428)
! * iwithprefix:                           Invocation.          (line 412)
! * iwithprefixbefore:                     Invocation.          (line 412)
! * M:                                     Invocation.          (line 180)
! * MD:                                    Invocation.          (line 269)
! * MF:                                    Invocation.          (line 215)
! * MG:                                    Invocation.          (line 224)
! * MM:                                    Invocation.          (line 205)
! * MMD:                                   Invocation.          (line 285)
! * MP:                                    Invocation.          (line 234)
! * MQ:                                    Invocation.          (line 260)
! * MT:                                    Invocation.          (line 246)
! * nostdinc:                              Invocation.          (line 369)
! * nostdinc++:                            Invocation.          (line 374)
! * o:                                     Invocation.          (line  82)
  * OBJC_INCLUDE_PATH:                     Environment Variables.
                                                                (line  18)
! * P:                                     Invocation.          (line 619)
! * pedantic:                              Invocation.          (line 170)
! * pedantic-errors:                       Invocation.          (line 175)
! * remap:                                 Invocation.          (line 658)
! * std=:                                  Invocation.          (line 308)
  * SUNPRO_DEPENDENCIES:                   Environment Variables.
!                                                               (line  60)
! * target-help:                           Invocation.          (line 663)
! * traditional-cpp:                       Invocation.          (line 651)
! * trigraphs:                             Invocation.          (line 655)
! * U:                                     Invocation.          (line  62)
! * undef:                                 Invocation.          (line  66)
! * v:                                     Invocation.          (line 667)
! * version:                               Invocation.          (line 680)
! * w:                                     Invocation.          (line 166)
! * Wall:                                  Invocation.          (line  88)
! * Wcomment:                              Invocation.          (line  96)
! * Wcomments:                             Invocation.          (line  96)
! * Wendif-labels:                         Invocation.          (line 143)
! * Werror:                                Invocation.          (line 156)
! * Wsystem-headers:                       Invocation.          (line 160)
! * Wtraditional:                          Invocation.          (line 113)
! * Wtrigraphs:                            Invocation.          (line 101)
! * Wundef:                                Invocation.          (line 119)
! * Wunused-macros:                        Invocation.          (line 124)
! * x:                                     Invocation.          (line 292)
  
  
  File: cpp.info,  Node: Concept Index,  Prev: Option Index,  Up: Top
--- 5289,5384 ----
  ************
  
  CPP's command-line options and environment variables are indexed here
! without any initial '-' or '--'.
  
  [index]
  * Menu:
  
! * A:                                     Invocation.          (line 566)
! * ansi:                                  Invocation.          (line 311)
! * C:                                     Invocation.          (line 624)
  * CPATH:                                 Environment Variables.
                                                                (line  15)
  * CPLUS_INCLUDE_PATH:                    Environment Variables.
                                                                (line  17)
! * C_INCLUDE_PATH:                        Environment Variables.
!                                                               (line  16)
! * D:                                     Invocation.          (line  40)
! * dD:                                    Invocation.          (line 597)
  * DEPENDENCIES_OUTPUT:                   Environment Variables.
!                                                               (line  45)
! * dI:                                    Invocation.          (line 606)
! * dM:                                    Invocation.          (line 582)
! * dN:                                    Invocation.          (line 603)
! * dU:                                    Invocation.          (line 610)
! * fdebug-cpp:                            Invocation.          (line 497)
! * fdirectives-only:                      Invocation.          (line 446)
! * fdollars-in-identifiers:               Invocation.          (line 467)
  * fexec-charset:                         Invocation.          (line 524)
! * fextended-identifiers:                 Invocation.          (line 470)
  * finput-charset:                        Invocation.          (line 537)
! * fno-canonical-system-headers:          Invocation.          (line 474)
! * fno-show-column:                       Invocation.          (line 561)
  * fno-working-directory:                 Invocation.          (line 547)
! * fpreprocessed:                         Invocation.          (line 478)
! * ftabstop:                              Invocation.          (line 491)
  * ftrack-macro-expansion:                Invocation.          (line 506)
  * fwide-exec-charset:                    Invocation.          (line 529)
  * fworking-directory:                    Invocation.          (line 547)
! * H:                                     Invocation.          (line 668)
! * help:                                  Invocation.          (line 660)
! * I:                                     Invocation.          (line  72)
! * I-:                                    Invocation.          (line 360)
! * idirafter:                             Invocation.          (line 402)
! * imacros:                               Invocation.          (line 393)
! * imultilib:                             Invocation.          (line 427)
! * include:                               Invocation.          (line 382)
! * iprefix:                               Invocation.          (line 409)
! * iquote:                                Invocation.          (line 439)
! * isysroot:                              Invocation.          (line 421)
! * isystem:                               Invocation.          (line 431)
! * iwithprefix:                           Invocation.          (line 415)
! * iwithprefixbefore:                     Invocation.          (line 415)
! * M:                                     Invocation.          (line 181)
! * MD:                                    Invocation.          (line 272)
! * MF:                                    Invocation.          (line 216)
! * MG:                                    Invocation.          (line 225)
! * MM:                                    Invocation.          (line 206)
! * MMD:                                   Invocation.          (line 288)
! * MP:                                    Invocation.          (line 235)
! * MQ:                                    Invocation.          (line 262)
! * MT:                                    Invocation.          (line 247)
! * nostdinc:                              Invocation.          (line 372)
! * nostdinc++:                            Invocation.          (line 377)
! * o:                                     Invocation.          (line  83)
  * OBJC_INCLUDE_PATH:                     Environment Variables.
                                                                (line  18)
! * P:                                     Invocation.          (line 617)
! * pedantic:                              Invocation.          (line 171)
! * pedantic-errors:                       Invocation.          (line 176)
! * remap:                                 Invocation.          (line 655)
! * std=:                                  Invocation.          (line 311)
  * SUNPRO_DEPENDENCIES:                   Environment Variables.
!                                                               (line  61)
! * target-help:                           Invocation.          (line 660)
! * traditional-cpp:                       Invocation.          (line 648)
! * trigraphs:                             Invocation.          (line 652)
! * U:                                     Invocation.          (line  63)
! * undef:                                 Invocation.          (line  67)
! * v:                                     Invocation.          (line 664)
! * version:                               Invocation.          (line 676)
! * w:                                     Invocation.          (line 167)
! * Wall:                                  Invocation.          (line  89)
! * Wcomment:                              Invocation.          (line  97)
! * Wcomments:                             Invocation.          (line  97)
! * Wendif-labels:                         Invocation.          (line 144)
! * Werror:                                Invocation.          (line 157)
! * Wsystem-headers:                       Invocation.          (line 161)
! * Wtraditional:                          Invocation.          (line 114)
! * Wtrigraphs:                            Invocation.          (line 102)
! * Wundef:                                Invocation.          (line 120)
! * Wunused-macros:                        Invocation.          (line 125)
! * x:                                     Invocation.          (line 295)
  
  
  File: cpp.info,  Node: Concept Index,  Prev: Option Index,  Up: Top
*************** Concept Index
*** 5430,5436 ****
  * # operator:                            Stringification.     (line   6)
  * ## operator:                           Concatenation.       (line   6)
  * _Pragma:                               Pragmas.             (line  25)
! * alternative tokens:                    Tokenization.        (line 105)
  * arguments:                             Macro Arguments.     (line   6)
  * arguments in macro definitions:        Macro Arguments.     (line   6)
  * assertions:                            Obsolete Features.   (line  13)
--- 5392,5398 ----
  * # operator:                            Stringification.     (line   6)
  * ## operator:                           Concatenation.       (line   6)
  * _Pragma:                               Pragmas.             (line  25)
! * alternative tokens:                    Tokenization.        (line 104)
  * arguments:                             Macro Arguments.     (line   6)
  * arguments in macro definitions:        Macro Arguments.     (line   6)
  * assertions:                            Obsolete Features.   (line  13)
*************** Concept Index
*** 5438,5444 ****
  * backslash-newline:                     Initial processing.  (line  61)
  * block comments:                        Initial processing.  (line  77)
  * C++ named operators:                   C++ Named Operators. (line   6)
! * character constants:                   Tokenization.        (line  84)
  * character set, execution:              Invocation.          (line 524)
  * character set, input:                  Invocation.          (line 537)
  * character set, wide execution:         Invocation.          (line 529)
--- 5400,5406 ----
  * backslash-newline:                     Initial processing.  (line  61)
  * block comments:                        Initial processing.  (line  77)
  * C++ named operators:                   C++ Named Operators. (line   6)
! * character constants:                   Tokenization.        (line  83)
  * character set, execution:              Invocation.          (line 524)
  * character set, input:                  Invocation.          (line 537)
  * character set, wide execution:         Invocation.          (line 529)
*************** Concept Index
*** 5455,5466 ****
  * controlling macro:                     Once-Only Headers.   (line  35)
  * defined:                               Defined.             (line   6)
  * dependencies for make as output:       Environment Variables.
!                                                               (line  45)
! * dependencies, make:                    Invocation.          (line 180)
  * diagnostic:                            Diagnostics.         (line   6)
  * differences from previous versions:    Differences from previous versions.
                                                                (line   6)
! * digraphs:                              Tokenization.        (line 105)
  * directive line:                        The preprocessing language.
                                                                (line   6)
  * directive name:                        The preprocessing language.
--- 5417,5430 ----
  * controlling macro:                     Once-Only Headers.   (line  35)
  * defined:                               Defined.             (line   6)
  * dependencies for make as output:       Environment Variables.
!                                                               (line  46)
! * dependencies for make as output <1>:   Environment Variables.
!                                                               (line  62)
! * dependencies, make:                    Invocation.          (line 181)
  * diagnostic:                            Diagnostics.         (line   6)
  * differences from previous versions:    Differences from previous versions.
                                                                (line   6)
! * digraphs:                              Tokenization.        (line 104)
  * directive line:                        The preprocessing language.
                                                                (line   6)
  * directive name:                        The preprocessing language.
*************** Concept Index
*** 5478,5485 ****
  * grouping options:                      Invocation.          (line  34)
  * guard macro:                           Once-Only Headers.   (line  35)
  * header file:                           Header Files.        (line   6)
! * header file names:                     Tokenization.        (line  84)
! * identifiers:                           Tokenization.        (line  34)
  * implementation limits:                 Implementation limits.
                                                                (line   6)
  * implementation-defined behavior:       Implementation-defined behavior.
--- 5442,5449 ----
  * grouping options:                      Invocation.          (line  34)
  * guard macro:                           Once-Only Headers.   (line  35)
  * header file:                           Header Files.        (line   6)
! * header file names:                     Tokenization.        (line  83)
! * identifiers:                           Tokenization.        (line  33)
  * implementation limits:                 Implementation limits.
                                                                (line   6)
  * implementation-defined behavior:       Implementation-defined behavior.
*************** Concept Index
*** 5497,5513 ****
  * 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 180)
  * manifest constants:                    Object-like Macros.  (line   6)
  * named operators:                       C++ Named Operators. (line   6)
  * newlines in macro arguments:           Newlines in Arguments.
                                                                (line   6)
  * null directive:                        Other Directives.    (line  15)
! * numbers:                               Tokenization.        (line  60)
  * object-like macro:                     Object-like Macros.  (line   6)
! * options:                               Invocation.          (line  38)
  * options, grouping:                     Invocation.          (line  34)
! * other tokens:                          Tokenization.        (line 119)
  * output format:                         Preprocessor Output. (line  12)
  * overriding a header file:              Wrapper Headers.     (line   6)
  * parentheses in macro bodies:           Operator Precedence Problems.
--- 5461,5477 ----
  * 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 181)
  * manifest constants:                    Object-like Macros.  (line   6)
  * named operators:                       C++ Named Operators. (line   6)
  * newlines in macro arguments:           Newlines in Arguments.
                                                                (line   6)
  * null directive:                        Other Directives.    (line  15)
! * numbers:                               Tokenization.        (line  59)
  * object-like macro:                     Object-like Macros.  (line   6)
! * options:                               Invocation.          (line  39)
  * options, grouping:                     Invocation.          (line  34)
! * other tokens:                          Tokenization.        (line 118)
  * output format:                         Preprocessor Output. (line  12)
  * overriding a header file:              Wrapper Headers.     (line   6)
  * parentheses in macro bodies:           Operator Precedence Problems.
*************** Concept Index
*** 5519,5529 ****
  * predicates:                            Obsolete Features.   (line  26)
  * preprocessing directives:              The preprocessing language.
                                                                (line   6)
! * preprocessing numbers:                 Tokenization.        (line  60)
  * preprocessing tokens:                  Tokenization.        (line   6)
  * prescan of macro arguments:            Argument Prescan.    (line   6)
  * problems with macros:                  Macro Pitfalls.      (line   6)
! * punctuators:                           Tokenization.        (line 105)
  * redefining macros:                     Undefining and Redefining Macros.
                                                                (line   6)
  * repeated inclusion:                    Once-Only Headers.   (line   6)
--- 5483,5493 ----
  * predicates:                            Obsolete Features.   (line  26)
  * preprocessing directives:              The preprocessing language.
                                                                (line   6)
! * preprocessing numbers:                 Tokenization.        (line  59)
  * preprocessing tokens:                  Tokenization.        (line   6)
  * prescan of macro arguments:            Argument Prescan.    (line   6)
  * problems with macros:                  Macro Pitfalls.      (line   6)
! * punctuators:                           Tokenization.        (line 104)
  * redefining macros:                     Undefining and Redefining Macros.
                                                                (line   6)
  * repeated inclusion:                    Once-Only Headers.   (line   6)
*************** Concept Index
*** 5539,5550 ****
                                                                (line   6)
  * standard predefined macros.:           Standard Predefined Macros.
                                                                (line   6)
! * string constants:                      Tokenization.        (line  84)
! * string literals:                       Tokenization.        (line  84)
  * stringification:                       Stringification.     (line   6)
  * symbolic constants:                    Object-like Macros.  (line   6)
- * system header files <1>:               System Headers.      (line   6)
  * system header files:                   Header Files.        (line  13)
  * system-specific predefined macros:     System-specific Predefined Macros.
                                                                (line   6)
  * testing predicates:                    Obsolete Features.   (line  37)
--- 5503,5514 ----
                                                                (line   6)
  * standard predefined macros.:           Standard Predefined Macros.
                                                                (line   6)
! * string constants:                      Tokenization.        (line  83)
! * string literals:                       Tokenization.        (line  83)
  * stringification:                       Stringification.     (line   6)
  * symbolic constants:                    Object-like Macros.  (line   6)
  * system header files:                   Header Files.        (line  13)
+ * system header files <1>:               System Headers.      (line   6)
  * system-specific predefined macros:     System-specific Predefined Macros.
                                                                (line   6)
  * testing predicates:                    Obsolete Features.   (line  37)
*************** Concept Index
*** 5564,5642 ****
  
  
  Tag Table:
! Node: Top996
! Node: Overview3601
! Node: Character sets6434
! Ref: Character sets-Footnote-18591
! Node: Initial processing8772
! Ref: trigraphs10331
! Node: Tokenization14533
! Ref: Tokenization-Footnote-121564
! Node: The preprocessing language21675
! Node: Header Files24553
! Node: Include Syntax26469
! Node: Include Operation28106
! Node: Search Path29954
! Node: Once-Only Headers33155
! Node: Alternatives to Wrapper #ifndef34814
! Node: Computed Includes36557
! Node: Wrapper Headers39715
! Node: System Headers42141
! Node: Macros44191
! Node: Object-like Macros45332
! Node: Function-like Macros48922
! Node: Macro Arguments50538
! Node: Stringification54683
! Node: Concatenation57889
! Node: Variadic Macros60997
! Node: Predefined Macros65784
! Node: Standard Predefined Macros66372
! Node: Common Predefined Macros72348
! Node: System-specific Predefined Macros92437
! Node: C++ Named Operators94460
! Node: Undefining and Redefining Macros95424
! Node: Directives Within Macro Arguments97528
! Node: Macro Pitfalls99076
! Node: Misnesting99609
! Node: Operator Precedence Problems100721
! Node: Swallowing the Semicolon102587
! Node: Duplication of Side Effects104610
! Node: Self-Referential Macros106793
! Node: Argument Prescan109202
! Node: Newlines in Arguments112956
! Node: Conditionals113907
! Node: Conditional Uses115737
! Node: Conditional Syntax117095
! Node: Ifdef117415
! Node: If120581
! Node: Defined122885
! Node: Else124168
! Node: Elif124738
! Node: Deleted Code126027
! Node: Diagnostics127274
! Node: Line Control128821
! Node: Pragmas132625
! Node: Other Directives137381
! Node: Preprocessor Output138431
! Node: Traditional Mode141632
! Node: Traditional lexical analysis142690
! Node: Traditional macros145193
! Node: Traditional miscellany148995
! Node: Traditional warnings149992
! Node: Implementation Details152189
! Node: Implementation-defined behavior152810
! Ref: Identifier characters153562
! Node: Implementation limits156446
! Node: Obsolete Features159120
! Node: Differences from previous versions162008
! Node: Invocation166216
! Ref: Wtrigraphs170668
! Ref: dashMF175443
! Ref: fdollars-in-identifiers185174
! Node: Environment Variables195019
! Node: GNU Free Documentation License197985
! Node: Index of Directives223149
! Node: Option Index225229
! Node: Concept Index231632
  
  End Tag Table
--- 5528,5606 ----
  
  
  Tag Table:
! Node: Top945
! Node: Overview3549
! Node: Character sets6383
! Ref: Character sets-Footnote-18538
! Node: Initial processing8719
! Ref: trigraphs10278
! Node: Tokenization14478
! Ref: Tokenization-Footnote-121507
! Node: The preprocessing language21618
! Node: Header Files24497
! Node: Include Syntax26413
! Node: Include Operation28050
! Node: Search Path29898
! Node: Once-Only Headers33099
! Node: Alternatives to Wrapper #ifndef34758
! Node: Computed Includes36500
! Node: Wrapper Headers39658
! Node: System Headers42081
! Node: Macros44131
! Node: Object-like Macros45272
! Node: Function-like Macros48862
! Node: Macro Arguments50478
! Node: Stringification54621
! Node: Concatenation57827
! Node: Variadic Macros60935
! Node: Predefined Macros65722
! Node: Standard Predefined Macros66310
! Node: Common Predefined Macros72279
! Node: System-specific Predefined Macros92352
! Node: C++ Named Operators94375
! Node: Undefining and Redefining Macros95339
! Node: Directives Within Macro Arguments97437
! Node: Macro Pitfalls98985
! Node: Misnesting99518
! Node: Operator Precedence Problems100630
! Node: Swallowing the Semicolon102496
! Node: Duplication of Side Effects104519
! Node: Self-Referential Macros106702
! Node: Argument Prescan109111
! Node: Newlines in Arguments112866
! Node: Conditionals113817
! Node: Conditional Uses115646
! Node: Conditional Syntax117004
! Node: Ifdef117324
! Node: If120481
! Node: Defined122785
! Node: Else124066
! Node: Elif124636
! Node: Deleted Code125925
! Node: Diagnostics127172
! Node: Line Control128721
! Node: Pragmas132496
! Node: Other Directives137250
! Node: Preprocessor Output138300
! Node: Traditional Mode141498
! Node: Traditional lexical analysis142556
! Node: Traditional macros145059
! Node: Traditional miscellany148860
! Node: Traditional warnings149856
! Node: Implementation Details152053
! Node: Implementation-defined behavior152674
! Ref: Identifier characters153424
! Node: Implementation limits156313
! Node: Obsolete Features158986
! Node: Differences from previous versions161873
! Node: Invocation166075
! Ref: Wtrigraphs170527
! Ref: dashMF175304
! Ref: fdollars-in-identifiers185046
! Node: Environment Variables194849
! Node: GNU Free Documentation License197815
! Node: Index of Directives222960
! Node: Option Index225040
! Node: Concept Index231443
  
  End Tag Table
diff -Nrcpad gcc-5.4.0/gcc/doc/cppinternals.info gcc-5.5.0/gcc/doc/cppinternals.info
*** gcc-5.4.0/gcc/doc/cppinternals.info	Fri Jun  3 10:32:21 2016
--- gcc-5.5.0/gcc/doc/cppinternals.info	Tue Oct 10 09:40:20 2017
***************
*** 1,12 ****
! This is doc/cppinternals.info, produced by makeinfo version 4.12 from
! /space/rguenther/gcc-5.4.0/gcc-5.4.0/gcc/doc/cppinternals.texi.
  
  INFO-DIR-SECTION Software development
  START-INFO-DIR-ENTRY
  * Cpplib: (cppinternals).      Cpplib internals.
  END-INFO-DIR-ENTRY
  
!    This file documents the internals of the GNU C Preprocessor.
  
     Copyright (C) 2000-2015 Free Software Foundation, Inc.
  
--- 1,12 ----
! This is cppinternals.info, produced by makeinfo version 6.1 from
! cppinternals.texi.
  
  INFO-DIR-SECTION Software development
  START-INFO-DIR-ENTRY
  * Cpplib: (cppinternals).      Cpplib internals.
  END-INFO-DIR-ENTRY
  
! This file documents the internals of the GNU C Preprocessor.
  
     Copyright (C) 2000-2015 Free Software Foundation, Inc.
  
*************** preserved on all copies.
*** 16,23 ****
  
     Permission is granted to copy and distribute modified versions of
  this manual under the conditions for verbatim copying, provided also
! that the entire resulting derived work is distributed under the terms
! of a permission notice identical to this one.
  
     Permission is granted to copy and distribute translations of this
  manual into another language, under the above conditions for modified
--- 16,23 ----
  
     Permission is granted to copy and distribute modified versions of
  this manual under the conditions for verbatim copying, provided also
! that the entire resulting derived work is distributed under the terms of
! a permission notice identical to this one.
  
     Permission is granted to copy and distribute translations of this
  manual into another language, under the above conditions for modified
*************** preprocessor in previous versions of GCC
*** 46,54 ****
  as the fundamental unit.
  
     This brief manual documents the internals of cpplib, and explains
! some of the tricky issues.  It is intended that, along with the
! comments in the source code, a reasonably competent C programmer should
! be able to figure out what the code is doing, and why things have been
  implemented the way they have.
  
  * Menu:
--- 46,54 ----
  as the fundamental unit.
  
     This brief manual documents the internals of cpplib, and explains
! some of the tricky issues.  It is intended that, along with the comments
! in the source code, a reasonably competent C programmer should be able
! to figure out what the code is doing, and why things have been
  implemented the way they have.
  
  * Menu:
*************** File: cppinternals.info,  Node: Conventi
*** 69,85 ****
  Conventions
  ***********
  
! cpplib has two interfaces--one is exposed internally only, and the
! other 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
--- 69,85 ----
  Conventions
  ***********
  
! cpplib has two interfaces--one is exposed internally only, and the other
! 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
*** 95,101 ****
  Overview
  ========
  
! The lexer is contained in the file `lex.c'.  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
--- 95,101 ----
  Overview
  ========
  
! The lexer is contained in the file 'lex.c'.  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
*** 104,120 ****
  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
--- 104,120 ----
  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
*** 122,187 ****
  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 stringified.  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
--- 122,187 ----
  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 stringified.  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
*** 190,277 ****
  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, the library issues a
! warning 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.
  
--- 190,276 ----
  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, the library issues a warning
! 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.
*** 288,296 ****
  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
--- 287,295 ----
  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
*** 303,310 ****
  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::).
  
--- 302,309 ----
  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::).
*** 312,336 ****
  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
! expansions, and what happens when we have a long line that overflows
! the token run?
  
     Since we promise clients that we preserve the validity of pointers
  that we have already returned for tokens that appeared earlier in the
! line, we cannot reallocate the run.  Instead, on overflow it is
! expanded 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
  stringification 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
--- 311,335 ----
  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
! expansions, and what happens when we have a long line that overflows the
! token run?
  
     Since we promise clients that we preserve the validity of pointers
  that we have already returned for tokens that appeared earlier in the
! line, we cannot reallocate the run.  Instead, on overflow it is expanded
! 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
  stringification 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
*************** management issues, but not all.  The ope
*** 341,360 ****
  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 cpplib will export an
! interface 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
--- 340,359 ----
  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 cpplib will export an interface
! 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
*** 368,377 ****
  
  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
--- 367,376 ----
  
  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
*** 380,425 ****
     * 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 takes, and its expansion.  Built-in macros are
!      flagged as special, 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).
  
  
  File: cppinternals.info,  Node: Macro Expansion,  Next: Token Spacing,  Prev: Hash Nodes,  Up: Top
--- 379,424 ----
     * 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
!      takes, and its expansion.  Built-in macros are flagged as special,
!      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).
  
  
  File: cppinternals.info,  Node: Macro Expansion,  Next: Token Spacing,  Prev: Hash Nodes,  Up: Top
*************** and situations that render what you thou
*** 432,460 ****
  the preprocessor's expansion algorithm wrong in quite subtle ways.
  
     I strongly recommend you have a good grasp of how the C and C++
! standards require macros to be expanded before diving into this
! section, let alone the code!.  If you don't have a clear mental picture
! of how things like nested macro expansion, stringification and token
! pasting are supposed to work, damage to your sanity can quickly result.
  
  Internal representation of macros
  =================================
  
  The preprocessor stores macro expansions in tokenized form.  This saves
! repeated lexing passes during expansion, at the cost of a small
! increase in memory consumption on average.  The tokens are stored
! contiguously in memory, so a pointer to the first one and a token count
! is all you need to get the replacement list of a macro.
  
     If the macro is a function-like macro the preprocessor also stores
  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.
  
--- 431,459 ----
  the preprocessor's expansion algorithm wrong in quite subtle ways.
  
     I strongly recommend you have a good grasp of how the C and C++
! standards require macros to be expanded before diving into this section,
! let alone the code!.  If you don't have a clear mental picture of how
! things like nested macro expansion, stringification and token pasting
! are supposed to work, damage to your sanity can quickly result.
  
  Internal representation of macros
  =================================
  
  The preprocessor stores macro expansions in tokenized form.  This saves
! repeated lexing passes during expansion, at the cost of a small increase
! in memory consumption on average.  The tokens are stored contiguously in
! memory, so a pointer to the first one and a token count is all you need
! to get the replacement list of a macro.
  
     If the macro is a function-like macro the preprocessor also stores
  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
*** 462,517 ****
  ========================
  
  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 off the stack, and subsequent ones if necessary, until an
! unexhausted context is found or it returns to base context.  In base
! context, cpplib reads tokens directly from the lexer.
  
     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 expanded.
  
  Scanning the replacement list for macros to expand
  ==================================================
  
! The C standard states that, after any parameters have been replaced
! with their possibly-expanded arguments, the replacement list is scanned
! for nested macros.  Further, any identifiers in the replacement list
! that are not expanded during this scan are never again eligible for
! expansion in the future, if the reason they were not expanded is that
! the macro in question was disabled.
  
     Clearly this latter condition can only apply to tokens resulting from
  argument pre-expansion.  Other tokens never have an opportunity to be
--- 461,516 ----
  ========================
  
  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
! off the stack, and subsequent ones if necessary, until an unexhausted
! context is found or it returns to base context.  In base context, cpplib
! reads tokens directly from the lexer.
  
     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
! expanded.
  
  Scanning the replacement list for macros to expand
  ==================================================
  
! The C standard states that, after any parameters have been replaced with
! their possibly-expanded arguments, the replacement list is scanned for
! nested macros.  Further, any identifiers in the replacement list that
! are not expanded during this scan are never again eligible for expansion
! in the future, if the reason they were not expanded is that the macro in
! question was disabled.
  
     Clearly this latter condition can only apply to tokens resulting from
  argument pre-expansion.  Other tokens never have an opportunity to be
*************** looking for the _next_ token do we pop i
*** 530,556 ****
  lower context.  This makes backing up by one token easy, but more
  importantly ensures that the macro corresponding to the current context
  is still disabled when we are considering the last token of its
! replacement list for expansion (or indeed expanding it).  As an
! example, which illustrates many of the points above, consider
  
       #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
--- 529,555 ----
  lower context.  This makes backing up by one token easy, but more
  importantly ensures that the macro corresponding to the current context
  is still disabled when we are considering the last token of its
! replacement list for expansion (or indeed expanding it).  As an example,
! which illustrates many of the points above, consider
  
       #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
*************** Function-like macros only expand when im
*** 560,577 ****
  parenthesis.  To do this cpplib needs to temporarily disable macros and
  read the next token.  Unfortunately, because of spacing issues (*note
  Token Spacing::), there can be fake padding tokens in-between, and if
! the next real token is not a parenthesis cpplib needs to be able to
! back up that one token as well as retain the information in any
! intervening padding tokens.
  
     Backing up more than one token when macros are involved is not
  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 expansion
  ==============================================
--- 559,576 ----
  parenthesis.  To do this cpplib needs to temporarily disable macros and
  read the next token.  Unfortunately, because of spacing issues (*note
  Token Spacing::), there can be fake padding tokens in-between, and if
! the next real token is not a parenthesis cpplib needs to be able to back
! up that one token as well as retain the information in any intervening
! padding tokens.
  
     Backing up more than one token when macros are involved is not
  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 expansion
  ==============================================
*************** Marking tokens ineligible for future exp
*** 579,590 ****
  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
--- 578,589 ----
  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
*************** both for aesthetic reasons and because i
*** 619,638 ****
  still try to abuse the preprocessor for things like Fortran source and
  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.
  
     Now consider the result of the following macro expansion:
  
--- 618,637 ----
  still try to abuse the preprocessor for things like Fortran source and
  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.
  
     Now consider the result of the following macro expansion:
  
*************** decide whether to insert a space between
*** 640,679 ****
       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.
  
       #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.
  
     But what if a macro expansion is left?  Adjusting the above example
--- 639,677 ----
       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.
  
       #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.
  
     But what if a macro expansion is left?  Adjusting the above example
*************** slightly:
*** 685,697 ****
       [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 stringified, where spacing
--- 683,695 ----
       [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 stringified, where spacing
*************** matters.
*** 699,709 ****
  
     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.
--- 697,707 ----
  
     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:
*** 715,721 ****
  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
--- 713,719 ----
  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
*************** There are three reasonable requirements
*** 734,740 ****
  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:
--- 732,737 ----
*************** the line number of a token passed to it:
*** 749,762 ****
       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.
--- 746,759 ----
       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.
*** 778,787 ****
  
     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.
  
  Representation of line numbers
  ==============================
--- 775,784 ----
  
     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.
  
  Representation of line numbers
  ==============================
*************** starts counting from one.
*** 801,815 ****
  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.c' 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.
  
  
  File: cppinternals.info,  Node: Guard Macros,  Next: Files,  Prev: Line Numbering,  Up: Top
--- 798,811 ----
  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.c' 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.
  
  
  File: cppinternals.info,  Node: Guard Macros,  Next: Files,  Prev: Line Numbering,  Up: Top
*************** Header files are often of the form
*** 826,832 ****
  
  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".
--- 822,828 ----
  
  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".
*************** inclusion would result in no tokens to r
*** 837,848 ****
  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
  
--- 833,844 ----
  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
*** 852,921 ****
  
            #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
--- 848,915 ----
  
            #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
*** 924,936 ****
  *************
  
  Fairly obviously, the file handling code of cpplib resides in the file
! `files.c'.  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.
--- 918,930 ----
  *************
  
  Fairly obviously, the file handling code of cpplib resides in the file
! 'files.c'.  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
*** 942,986 ****
  
     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.
--- 936,980 ----
  
     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
*** 996,1002 ****
  
  * assertions:                            Hash Nodes.          (line   6)
  * controlling macros:                    Guard Macros.        (line   6)
! * escaped newlines:                      Lexer.               (line   6)
  * files:                                 Files.               (line   6)
  * guard macros:                          Guard Macros.        (line   6)
  * hash table:                            Hash Nodes.          (line   6)
--- 990,996 ----
  
  * assertions:                            Hash Nodes.          (line   6)
  * controlling macros:                    Guard Macros.        (line   6)
! * escaped newlines:                      Lexer.               (line   5)
  * files:                                 Files.               (line   6)
  * guard macros:                          Guard Macros.        (line   6)
  * hash table:                            Hash Nodes.          (line   6)
*************** Concept Index
*** 1004,1010 ****
  * identifiers:                           Hash Nodes.          (line   6)
  * interface:                             Conventions.         (line   6)
  * lexer:                                 Lexer.               (line   6)
! * line numbers:                          Line Numbering.      (line   6)
  * macro expansion:                       Macro Expansion.     (line   6)
  * macro representation (internal):       Macro Expansion.     (line  19)
  * macros:                                Hash Nodes.          (line   6)
--- 998,1004 ----
  * identifiers:                           Hash Nodes.          (line   6)
  * interface:                             Conventions.         (line   6)
  * lexer:                                 Lexer.               (line   6)
! * line numbers:                          Line Numbering.      (line   5)
  * macro expansion:                       Macro Expansion.     (line   6)
  * macro representation (internal):       Macro Expansion.     (line  19)
  * macros:                                Hash Nodes.          (line   6)
*************** Concept Index
*** 1013,1035 ****
  * newlines:                              Lexer.               (line   6)
  * paste avoidance:                       Token Spacing.       (line   6)
  * spacing:                               Token Spacing.       (line   6)
! * token run:                             Lexer.               (line 192)
  * token spacing:                         Token Spacing.       (line   6)
  
  
  
  Tag Table:
! Node: Top958
! Node: Conventions2643
! Node: Lexer3585
! Ref: Invalid identifiers11498
! Ref: Lexing a line13447
! Node: Hash Nodes18220
! Node: Macro Expansion21099
! Node: Token Spacing30046
! Node: Line Numbering35906
! Node: Guard Macros39991
! Node: Files44782
! Node: Concept Index48248
  
  End Tag Table
--- 1007,1029 ----
  * newlines:                              Lexer.               (line   6)
  * paste avoidance:                       Token Spacing.       (line   6)
  * spacing:                               Token Spacing.       (line   6)
! * token run:                             Lexer.               (line 191)
  * token spacing:                         Token Spacing.       (line   6)
  
  
  
  Tag Table:
! Node: Top905
! Node: Conventions2590
! Node: Lexer3532
! Ref: Invalid identifiers11447
! Ref: Lexing a line13397
! Node: Hash Nodes18170
! Node: Macro Expansion21049
! Node: Token Spacing29997
! Node: Line Numbering35854
! Node: Guard Macros39939
! Node: Files44730
! Node: Concept Index48196
  
  End Tag Table
diff -Nrcpad gcc-5.4.0/gcc/doc/extend.texi gcc-5.5.0/gcc/doc/extend.texi
*** gcc-5.4.0/gcc/doc/extend.texi	Thu Oct 15 16:38:47 2015
--- gcc-5.5.0/gcc/doc/extend.texi	Sat Aug 19 08:25:14 2017
*************** together with checking whether the opera
*** 8625,8634 ****
  @deftypefn {Built-in Function} bool __builtin_add_overflow (@var{type1} a, @var{type2} b, @var{type3} *res)
  @deftypefnx {Built-in Function} bool __builtin_sadd_overflow (int a, int b, int *res)
  @deftypefnx {Built-in Function} bool __builtin_saddl_overflow (long int a, long int b, long int *res)
! @deftypefnx {Built-in Function} bool __builtin_saddll_overflow (long long int a, long long int b, long int *res)
  @deftypefnx {Built-in Function} bool __builtin_uadd_overflow (unsigned int a, unsigned int b, unsigned int *res)
  @deftypefnx {Built-in Function} bool __builtin_uaddl_overflow (unsigned long int a, unsigned long int b, unsigned long int *res)
! @deftypefnx {Built-in Function} bool __builtin_uaddll_overflow (unsigned long long int a, unsigned long long int b, unsigned long int *res)
  
  These built-in functions promote the first two operands into infinite precision signed
  type and perform addition on those promoted operands.  The result is then
--- 8625,8634 ----
  @deftypefn {Built-in Function} bool __builtin_add_overflow (@var{type1} a, @var{type2} b, @var{type3} *res)
  @deftypefnx {Built-in Function} bool __builtin_sadd_overflow (int a, int b, int *res)
  @deftypefnx {Built-in Function} bool __builtin_saddl_overflow (long int a, long int b, long int *res)
! @deftypefnx {Built-in Function} bool __builtin_saddll_overflow (long long int a, long long int b, long long int *res)
  @deftypefnx {Built-in Function} bool __builtin_uadd_overflow (unsigned int a, unsigned int b, unsigned int *res)
  @deftypefnx {Built-in Function} bool __builtin_uaddl_overflow (unsigned long int a, unsigned long int b, unsigned long int *res)
! @deftypefnx {Built-in Function} bool __builtin_uaddll_overflow (unsigned long long int a, unsigned long long int b, unsigned long long int *res)
  
  These built-in functions promote the first two operands into infinite precision signed
  type and perform addition on those promoted operands.  The result is then
*************** after addition, conditional jump on carr
*** 8651,8660 ****
  @deftypefn {Built-in Function} bool __builtin_sub_overflow (@var{type1} a, @var{type2} b, @var{type3} *res)
  @deftypefnx {Built-in Function} bool __builtin_ssub_overflow (int a, int b, int *res)
  @deftypefnx {Built-in Function} bool __builtin_ssubl_overflow (long int a, long int b, long int *res)
! @deftypefnx {Built-in Function} bool __builtin_ssubll_overflow (long long int a, long long int b, long int *res)
  @deftypefnx {Built-in Function} bool __builtin_usub_overflow (unsigned int a, unsigned int b, unsigned int *res)
  @deftypefnx {Built-in Function} bool __builtin_usubl_overflow (unsigned long int a, unsigned long int b, unsigned long int *res)
! @deftypefnx {Built-in Function} bool __builtin_usubll_overflow (unsigned long long int a, unsigned long long int b, unsigned long int *res)
  
  These built-in functions are similar to the add overflow checking built-in
  functions above, except they perform subtraction, subtract the second argument
--- 8651,8660 ----
  @deftypefn {Built-in Function} bool __builtin_sub_overflow (@var{type1} a, @var{type2} b, @var{type3} *res)
  @deftypefnx {Built-in Function} bool __builtin_ssub_overflow (int a, int b, int *res)
  @deftypefnx {Built-in Function} bool __builtin_ssubl_overflow (long int a, long int b, long int *res)
! @deftypefnx {Built-in Function} bool __builtin_ssubll_overflow (long long int a, long long int b, long long int *res)
  @deftypefnx {Built-in Function} bool __builtin_usub_overflow (unsigned int a, unsigned int b, unsigned int *res)
  @deftypefnx {Built-in Function} bool __builtin_usubl_overflow (unsigned long int a, unsigned long int b, unsigned long int *res)
! @deftypefnx {Built-in Function} bool __builtin_usubll_overflow (unsigned long long int a, unsigned long long int b, unsigned long long int *res)
  
  These built-in functions are similar to the add overflow checking built-in
  functions above, except they perform subtraction, subtract the second argument
*************** from the first one, instead of addition.
*** 8665,8674 ****
  @deftypefn {Built-in Function} bool __builtin_mul_overflow (@var{type1} a, @var{type2} b, @var{type3} *res)
  @deftypefnx {Built-in Function} bool __builtin_smul_overflow (int a, int b, int *res)
  @deftypefnx {Built-in Function} bool __builtin_smull_overflow (long int a, long int b, long int *res)
! @deftypefnx {Built-in Function} bool __builtin_smulll_overflow (long long int a, long long int b, long int *res)
  @deftypefnx {Built-in Function} bool __builtin_umul_overflow (unsigned int a, unsigned int b, unsigned int *res)
  @deftypefnx {Built-in Function} bool __builtin_umull_overflow (unsigned long int a, unsigned long int b, unsigned long int *res)
! @deftypefnx {Built-in Function} bool __builtin_umulll_overflow (unsigned long long int a, unsigned long long int b, unsigned long int *res)
  
  These built-in functions are similar to the add overflow checking built-in
  functions above, except they perform multiplication, instead of addition.
--- 8665,8674 ----
  @deftypefn {Built-in Function} bool __builtin_mul_overflow (@var{type1} a, @var{type2} b, @var{type3} *res)
  @deftypefnx {Built-in Function} bool __builtin_smul_overflow (int a, int b, int *res)
  @deftypefnx {Built-in Function} bool __builtin_smull_overflow (long int a, long int b, long int *res)
! @deftypefnx {Built-in Function} bool __builtin_smulll_overflow (long long int a, long long int b, long long int *res)
  @deftypefnx {Built-in Function} bool __builtin_umul_overflow (unsigned int a, unsigned int b, unsigned int *res)
  @deftypefnx {Built-in Function} bool __builtin_umull_overflow (unsigned long int a, unsigned long int b, unsigned long int *res)
! @deftypefnx {Built-in Function} bool __builtin_umulll_overflow (unsigned long long int a, unsigned long long int b, unsigned long long int *res)
  
  These built-in functions are similar to the add overflow checking built-in
  functions above, except they perform multiplication, instead of addition.
*************** is enabled. Cilk Plus can be enabled usi
*** 9041,9047 ****
  
  Further details and examples about these built-in functions are described 
  in the Cilk Plus language manual which can be found at 
! @uref{http://www.cilkplus.org}.
  
  @node Other Builtins
  @section Other Built-in Functions Provided by GCC
--- 9041,9047 ----
  
  Further details and examples about these built-in functions are described 
  in the Cilk Plus language manual which can be found at 
! @uref{https://www.cilkplus.org}.
  
  @node Other Builtins
  @section Other Built-in Functions Provided by GCC
*************** The following built-in functions are ava
*** 12486,12499 ****
  of processors when hardware decimal floating point
  (@option{-mhard-dfp}) is available:
  @smallexample
! _Decimal64 __builtin_dxex (_Decimal64);
! _Decimal128 __builtin_dxexq (_Decimal128);
  _Decimal64 __builtin_ddedpd (int, _Decimal64);
  _Decimal128 __builtin_ddedpdq (int, _Decimal128);
  _Decimal64 __builtin_denbcd (int, _Decimal64);
  _Decimal128 __builtin_denbcdq (int, _Decimal128);
! _Decimal64 __builtin_diex (_Decimal64, _Decimal64);
! _Decimal128 _builtin_diexq (_Decimal128, _Decimal128);
  _Decimal64 __builtin_dscli (_Decimal64, int);
  _Decimal128 __builtin_dscliq (_Decimal128, int);
  _Decimal64 __builtin_dscri (_Decimal64, int);
--- 12486,12499 ----
  of processors when hardware decimal floating point
  (@option{-mhard-dfp}) is available:
  @smallexample
! long long __builtin_dxex (_Decimal64);
! long long __builtin_dxexq (_Decimal128);
  _Decimal64 __builtin_ddedpd (int, _Decimal64);
  _Decimal128 __builtin_ddedpdq (int, _Decimal128);
  _Decimal64 __builtin_denbcd (int, _Decimal64);
  _Decimal128 __builtin_denbcdq (int, _Decimal128);
! _Decimal64 __builtin_diex (long long, _Decimal64);
! _Decimal128 _builtin_diexq (long long, _Decimal128);
  _Decimal64 __builtin_dscli (_Decimal64, int);
  _Decimal128 __builtin_dscliq (_Decimal128, int);
  _Decimal64 __builtin_dscri (_Decimal64, int);
*************** void vec_vsx_st (vector bool char, int,
*** 14638,14657 ****
  void vec_vsx_st (vector bool char, int, unsigned char *);
  void vec_vsx_st (vector bool char, int, signed char *);
  
! vector double vec_xxpermdi (vector double, vector double, int);
! vector float vec_xxpermdi (vector float, vector float, int);
! vector long long vec_xxpermdi (vector long long, vector long long, int);
  vector unsigned long long vec_xxpermdi (vector unsigned long long,
!                                         vector unsigned long long, int);
! vector int vec_xxpermdi (vector int, vector int, int);
  vector unsigned int vec_xxpermdi (vector unsigned int,
!                                   vector unsigned int, int);
! vector short vec_xxpermdi (vector short, vector short, int);
  vector unsigned short vec_xxpermdi (vector unsigned short,
!                                     vector unsigned short, int);
! vector signed char vec_xxpermdi (vector signed char, vector signed char, int);
  vector unsigned char vec_xxpermdi (vector unsigned char,
!                                    vector unsigned char, int);
  
  vector double vec_xxsldi (vector double, vector double, int);
  vector float vec_xxsldi (vector float, vector float, int);
--- 14638,14658 ----
  void vec_vsx_st (vector bool char, int, unsigned char *);
  void vec_vsx_st (vector bool char, int, signed char *);
  
! vector double vec_xxpermdi (vector double, vector double, const int);
! vector float vec_xxpermdi (vector float, vector float, const int);
! vector long long vec_xxpermdi (vector long long, vector long long, const int);
  vector unsigned long long vec_xxpermdi (vector unsigned long long,
!                                         vector unsigned long long, const int);
! vector int vec_xxpermdi (vector int, vector int, const int);
  vector unsigned int vec_xxpermdi (vector unsigned int,
!                                   vector unsigned int, const int);
! vector short vec_xxpermdi (vector short, vector short, const int);
  vector unsigned short vec_xxpermdi (vector unsigned short,
!                                     vector unsigned short, const int);
! vector signed char vec_xxpermdi (vector signed char, vector signed char,
!                                  const int);
  vector unsigned char vec_xxpermdi (vector unsigned char,
!                                    vector unsigned char, const int);
  
  vector double vec_xxsldi (vector double, vector double, int);
  vector float vec_xxsldi (vector float, vector float, int);
*************** unsigned long long _pext_u64 (unsigned l
*** 17221,17227 ****
  The following built-in functions are available when @option{-mlzcnt} is used.
  All of them generate the machine instruction that is part of the name.
  @smallexample
! unsigned short __builtin_ia32_lzcnt_16(unsigned short);
  unsigned int __builtin_ia32_lzcnt_u32(unsigned int);
  unsigned long long __builtin_ia32_lzcnt_u64 (unsigned long long);
  @end smallexample
--- 17222,17228 ----
  The following built-in functions are available when @option{-mlzcnt} is used.
  All of them generate the machine instruction that is part of the name.
  @smallexample
! 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);
  @end smallexample
diff -Nrcpad gcc-5.4.0/gcc/doc/fsf-funding.7 gcc-5.5.0/gcc/doc/fsf-funding.7
*** gcc-5.4.0/gcc/doc/fsf-funding.7	Fri Jun  3 08:54:13 2016
--- gcc-5.5.0/gcc/doc/fsf-funding.7	Tue Oct 10 08:23:55 2017
***************
*** 1,15 ****
! .\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
- .de Sh \" Subsection heading
- .br
- .if t .Sp
- .ne 5
- .PP
- \fB\\$1\fR
- .PP
- ..
  .de Sp \" Vertical space (when we can't use .PP)
  .if t .sp .5v
  .if n .sp
--- 1,7 ----
! .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
  .de Sp \" Vertical space (when we can't use .PP)
  .if t .sp .5v
  .if n .sp
***************
*** 46,71 ****
  .    ds PI \(*p
  .    ds L" ``
  .    ds R" ''
  'br\}
  .\"
  .\" Escape single quotes in literal strings from groff's Unicode transform.
  .ie \n(.g .ds Aq \(aq
  .el       .ds Aq '
  .\"
! .\" If the F register is turned on, we'll generate index entries on stderr for
! .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
  .\" entries marked with X<> in POD.  Of course, you'll have to process the
  .\" output yourself in some meaningful fashion.
! .ie \nF \{\
! .    de IX
! .    tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .    nr % 0
! .    rr F
! .\}
! .el \{\
  .    de IX
  ..
  .\}
  .\"
  .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
--- 38,68 ----
  .    ds PI \(*p
  .    ds L" ``
  .    ds R" ''
+ .    ds C`
+ .    ds C'
  'br\}
  .\"
  .\" Escape single quotes in literal strings from groff's Unicode transform.
  .ie \n(.g .ds Aq \(aq
  .el       .ds Aq '
  .\"
! .\" If the F register is >0, we'll generate index entries on stderr for
! .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
  .\" entries marked with X<> in POD.  Of course, you'll have to process the
  .\" output yourself in some meaningful fashion.
! .\"
! .\" 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).
***************
*** 132,138 ****
  .\" ========================================================================
  .\"
  .IX Title "FSF-FUNDING 7"
! .TH FSF-FUNDING 7 "2016-06-03" "gcc-5.4.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
--- 129,135 ----
  .\" ========================================================================
  .\"
  .IX Title "FSF-FUNDING 7"
! .TH FSF-FUNDING 7 "2017-10-10" "gcc-5.5.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
***************
*** 141,147 ****
  fsf\-funding \- Funding Free Software
  .SH "DESCRIPTION"
  .IX Header "DESCRIPTION"
! .Sh "Funding Free Software"
  .IX Subsection "Funding Free Software"
  If you want to have more free software a few years from now, it makes
  sense for you to help encourage people to contribute funds for its
--- 138,144 ----
  fsf\-funding \- Funding Free Software
  .SH "DESCRIPTION"
  .IX Header "DESCRIPTION"
! .SS "Funding Free Software"
  .IX Subsection "Funding Free Software"
  If you want to have more free software a few years from now, it makes
  sense for you to help encourage people to contribute funds for its
diff -Nrcpad gcc-5.4.0/gcc/doc/g++.1 gcc-5.5.0/gcc/doc/g++.1
*** gcc-5.4.0/gcc/doc/g++.1	Fri Jun  3 10:32:25 2016
--- gcc-5.5.0/gcc/doc/g++.1	Tue Oct 10 09:40:26 2017
***************
*** 1,15 ****
! .\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
- .de Sh \" Subsection heading
- .br
- .if t .Sp
- .ne 5
- .PP
- \fB\\$1\fR
- .PP
- ..
  .de Sp \" Vertical space (when we can't use .PP)
  .if t .sp .5v
  .if n .sp
--- 1,7 ----
! .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
  .de Sp \" Vertical space (when we can't use .PP)
  .if t .sp .5v
  .if n .sp
***************
*** 46,71 ****
  .    ds PI \(*p
  .    ds L" ``
  .    ds R" ''
  'br\}
  .\"
  .\" Escape single quotes in literal strings from groff's Unicode transform.
  .ie \n(.g .ds Aq \(aq
  .el       .ds Aq '
  .\"
! .\" If the F register is turned on, we'll generate index entries on stderr for
! .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
  .\" entries marked with X<> in POD.  Of course, you'll have to process the
  .\" output yourself in some meaningful fashion.
! .ie \nF \{\
! .    de IX
! .    tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .    nr % 0
! .    rr F
! .\}
! .el \{\
  .    de IX
  ..
  .\}
  .\"
  .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
--- 38,68 ----
  .    ds PI \(*p
  .    ds L" ``
  .    ds R" ''
+ .    ds C`
+ .    ds C'
  'br\}
  .\"
  .\" Escape single quotes in literal strings from groff's Unicode transform.
  .ie \n(.g .ds Aq \(aq
  .el       .ds Aq '
  .\"
! .\" If the F register is >0, we'll generate index entries on stderr for
! .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
  .\" entries marked with X<> in POD.  Of course, you'll have to process the
  .\" output yourself in some meaningful fashion.
! .\"
! .\" 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).
***************
*** 132,138 ****
  .\" ========================================================================
  .\"
  .IX Title "GCC 1"
! .TH GCC 1 "2016-06-03" "gcc-5.4.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
--- 129,135 ----
  .\" ========================================================================
  .\"
  .IX Title "GCC 1"
! .TH GCC 1 "2017-10-10" "gcc-5.5.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
*************** Only the most useful options are listed
*** 153,159 ****
  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
--- 150,156 ----
  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
*************** these have both positive and negative fo
*** 188,194 ****
  only one of these two forms, whichever one is not the default.
  .SH "OPTIONS"
  .IX Header "OPTIONS"
! .Sh "Option Summary"
  .IX Subsection "Option Summary"
  Here is a summary of all the options, grouped by type.  Explanations are
  in the following sections.
--- 185,191 ----
  only one of these two forms, whichever one is not the default.
  .SH "OPTIONS"
  .IX Header "OPTIONS"
! .SS "Option Summary"
  .IX Subsection "Option Summary"
  Here is a summary of all the options, grouped by type.  Explanations are
  in the following sections.
*************** in the following sections.
*** 276,282 ****
  \&\-Wno\-attributes \-Wno\-builtin\-macro\-redefined 
  \&\-Wc90\-c99\-compat \-Wc99\-c11\-compat 
  \&\-Wc++\-compat \-Wc++11\-compat \-Wc++14\-compat \-Wcast\-align  \-Wcast\-qual  
! \&\-Wchar\-subscripts \-Wclobbered  \-Wcomment \-Wconditionally\-supported  
  \&\-Wconversion \-Wcoverage\-mismatch \-Wdate\-time \-Wdelete\-incomplete \-Wno\-cpp  
  \&\-Wno\-deprecated \-Wno\-deprecated\-declarations \-Wno\-designated\-init 
  \&\-Wdisabled\-optimization 
--- 273,279 ----
  \&\-Wno\-attributes \-Wno\-builtin\-macro\-redefined 
  \&\-Wc90\-c99\-compat \-Wc99\-c11\-compat 
  \&\-Wc++\-compat \-Wc++11\-compat \-Wc++14\-compat \-Wcast\-align  \-Wcast\-qual  
! \&\-Wchar\-subscripts \-Wchkp \-Wclobbered  \-Wcomment \-Wconditionally\-supported  
  \&\-Wconversion \-Wcoverage\-mismatch \-Wdate\-time \-Wdelete\-incomplete \-Wno\-cpp  
  \&\-Wno\-deprecated \-Wno\-deprecated\-declarations \-Wno\-designated\-init 
  \&\-Wdisabled\-optimization 
*************** in the following sections.
*** 594,600 ****
  \&\fI\s-1AVR\s0 Options\fR
  \&\fB\-mmcu=\fR\fImcu\fR \fB\-maccumulate\-args \-mbranch\-cost=\fR\fIcost\fR 
  \&\fB\-mcall\-prologues \-mint8 \-mn_flash=\fR\fIsize\fR \fB\-mno\-interrupts 
! \&\-mrelax \-mrmw \-mstrict\-X \-mtiny\-stack \-nodevicelib \-Waddr\-space\-convert\fR
  .Sp
  \&\fIBlackfin Options\fR
  \&\fB\-mcpu=\fR\fIcpu\fR[\fB\-\fR\fIsirevision\fR] 
--- 591,598 ----
  \&\fI\s-1AVR\s0 Options\fR
  \&\fB\-mmcu=\fR\fImcu\fR \fB\-maccumulate\-args \-mbranch\-cost=\fR\fIcost\fR 
  \&\fB\-mcall\-prologues \-mint8 \-mn_flash=\fR\fIsize\fR \fB\-mno\-interrupts 
! \&\-mrelax \-mrmw \-mstrict\-X \-mtiny\-stack \-nodevicelib \-Waddr\-space\-convert 
! \&\-Wmisspelled\-isr\fR
  .Sp
  \&\fIBlackfin Options\fR
  \&\fB\-mcpu=\fR\fIcpu\fR[\fB\-\fR\fIsirevision\fR] 
*************** See \s-1RS/6000\s0 and PowerPC Options.
*** 943,949 ****
  \&\-mpointers\-to\-nested\-functions \-mno\-pointers\-to\-nested\-functions 
  \&\-msave\-toc\-indirect \-mno\-save\-toc\-indirect 
  \&\-mpower8\-fusion \-mno\-mpower8\-fusion \-mpower8\-vector \-mno\-power8\-vector 
! \&\-mcrypto \-mno\-crypto \-mdirect\-move \-mno\-direct\-move 
  \&\-mquad\-memory \-mno\-quad\-memory 
  \&\-mquad\-memory\-atomic \-mno\-quad\-memory\-atomic 
  \&\-mcompat\-align\-parm \-mno\-compat\-align\-parm 
--- 941,947 ----
  \&\-mpointers\-to\-nested\-functions \-mno\-pointers\-to\-nested\-functions 
  \&\-msave\-toc\-indirect \-mno\-save\-toc\-indirect 
  \&\-mpower8\-fusion \-mno\-mpower8\-fusion \-mpower8\-vector \-mno\-power8\-vector 
! \&\-mcrypto \-mno\-crypto \-mhtm \-mno\-htm \-mdirect\-move \-mno\-direct\-move 
  \&\-mquad\-memory \-mno\-quad\-memory 
  \&\-mquad\-memory\-atomic \-mno\-quad\-memory\-atomic 
  \&\-mcompat\-align\-parm \-mno\-compat\-align\-parm 
*************** See S/390 and zSeries Options.
*** 1155,1161 ****
  \&\fB\-ftrapv  \-fwrapv  \-fbounds\-check 
  \&\-fvisibility=\fR[\fBdefault\fR|\fBinternal\fR|\fBhidden\fR|\fBprotected\fR] 
  \&\fB\-fstrict\-volatile\-bitfields \-fsync\-libcalls\fR
! .Sh "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
--- 1153,1159 ----
  \&\fB\-ftrapv  \-fwrapv  \-fbounds\-check 
  \&\-fvisibility=\fR[\fBdefault\fR|\fBinternal\fR|\fBhidden\fR|\fBprotected\fR] 
  \&\fB\-fstrict\-volatile\-bitfields \-fsync\-libcalls\fR
! .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
*************** option.
*** 1459,1465 ****
  .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.
  .IP "\fBcommon\fR" 4
  .IX Item "common"
  Display the options that are common to all languages.
--- 1457,1463 ----
  .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
  .IP "\fBcommon\fR" 4
  .IX Item "common"
  Display the options that are common to all languages.
*************** or \fB/./\fR, or make the path absolute
*** 1556,1562 ****
  prefix.
  .IP "\fB\-\-version\fR" 4
  .IX Item "--version"
! Display the version number and copyrights of the invoked \s-1GCC\s0.
  .IP "\fB\-wrapper\fR" 4
  .IX Item "-wrapper"
  Invoke all subcommands under a wrapper program.  The name of the
--- 1554,1560 ----
  prefix.
  .IP "\fB\-\-version\fR" 4
  .IX Item "--version"
! Display the version number and copyrights of the invoked \s-1GCC.\s0
  .IP "\fB\-wrapper\fR" 4
  .IX Item "-wrapper"
  Invoke all subcommands under a wrapper program.  The name of the
*************** the shared object file is used to identi
*** 1578,1584 ****
  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
--- 1576,1582 ----
  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
*************** option in either single or double quotes
*** 1610,1617 ****
  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.
! .Sh "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,
--- 1608,1615 ----
  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,
*************** When you compile \*(C+ programs, you may
*** 1634,1640 ****
  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.
! .Sh "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
--- 1632,1638 ----
  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:
*** 1644,1651 ****
  In C mode, this is equivalent to \fB\-std=c90\fR. In \*(C+ mode, it is
  equivalent to \fB\-std=c++98\fR.
  .Sp
! This turns off certain features of \s-1GCC\s0 that are incompatible with \s-1ISO\s0
! C90 (when compiling C code), or of standard \*(C+ (when compiling \*(C+ code),
  such as the \f(CW\*(C`asm\*(C'\fR and \f(CW\*(C`typeof\*(C'\fR keywords, and
  predefined macros such as \f(CW\*(C`unix\*(C'\fR and \f(CW\*(C`vax\*(C'\fR that identify the
  type of system you are using.  It also enables the undesirable and
--- 1642,1649 ----
  In C mode, this is equivalent to \fB\-std=c90\fR. In \*(C+ mode, it is
  equivalent to \fB\-std=c++98\fR.
  .Sp
! This turns off certain features of \s-1GCC\s0 that are incompatible with \s-1ISO
! C90\s0 (when compiling C code), or of standard \*(C+ (when compiling \*(C+ code),
  such as the \f(CW\*(C`asm\*(C'\fR and \f(CW\*(C`typeof\*(C'\fR keywords, and
  predefined macros such as \f(CW\*(C`unix\*(C'\fR and \f(CW\*(C`vax\*(C'\fR that identify the
  type of system you are using.  It also enables the undesirable and
*************** the \f(CW\*(C`inline\*(C'\fR keyword.
*** 1655,1661 ****
  .Sp
  The alternate keywords \f(CW\*(C`_\|_asm_\|_\*(C'\fR, \f(CW\*(C`_\|_extension_\|_\*(C'\fR,
  \&\f(CW\*(C`_\|_inline_\|_\*(C'\fR and \f(CW\*(C`_\|_typeof_\|_\*(C'\fR continue to work despite
! \&\fB\-ansi\fR.  You would not want to use them in an \s-1ISO\s0 C program, of
  course, but it is useful to put them in header files that might be included
  in compilations done with \fB\-ansi\fR.  Alternate predefined macros
  such as \f(CW\*(C`_\|_unix_\|_\*(C'\fR and \f(CW\*(C`_\|_vax_\|_\*(C'\fR are also available, with or
--- 1653,1659 ----
  .Sp
  The alternate keywords \f(CW\*(C`_\|_asm_\|_\*(C'\fR, \f(CW\*(C`_\|_extension_\|_\*(C'\fR,
  \&\f(CW\*(C`_\|_inline_\|_\*(C'\fR and \f(CW\*(C`_\|_typeof_\|_\*(C'\fR continue to work despite
! \&\fB\-ansi\fR.  You would not want to use them in an \s-1ISO C\s0 program, of
  course, but it is useful to put them in header files that might be included
  in compilations done with \fB\-ansi\fR.  Alternate predefined macros
  such as \f(CW\*(C`_\|_unix_\|_\*(C'\fR and \f(CW\*(C`_\|_vax_\|_\*(C'\fR are also available, with or
*************** from declaring certain functions or defi
*** 1672,1678 ****
  programs that might use these names for other things.
  .Sp
  Functions that are normally built in but do not have semantics
! defined by \s-1ISO\s0 C (such as \f(CW\*(C`alloca\*(C'\fR and \f(CW\*(C`ffs\*(C'\fR) are not built-in
  functions when \fB\-ansi\fR is used.
  .IP "\fB\-std=\fR" 4
  .IX Item "-std="
--- 1670,1676 ----
  programs that might use these names for other things.
  .Sp
  Functions that are normally built in but do not have semantics
! defined by \s-1ISO C\s0 (such as \f(CW\*(C`alloca\*(C'\fR and \f(CW\*(C`ffs\*(C'\fR) are not built-in
  functions when \fB\-ansi\fR is used.
  .IP "\fB\-std=\fR" 4
  .IX Item "-std="
*************** The compiler can accept several base sta
*** 1685,1693 ****
  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\s0 C90, 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\s0 C90, 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
--- 1683,1691 ----
  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
*************** A value for this option must be provided
*** 1707,1717 ****
  .IP "\fBiso9899:1990\fR" 4
  .IX Item "iso9899:1990"
  .PD
! Support all \s-1ISO\s0 C90 programs (certain \s-1GNU\s0 extensions that conflict
! with \s-1ISO\s0 C90 are disabled). Same as \fB\-ansi\fR for C code.
  .IP "\fBiso9899:199409\fR" 4
  .IX Item "iso9899:199409"
! \&\s-1ISO\s0 C90 as modified in amendment 1.
  .IP "\fBc99\fR" 4
  .IX Item "c99"
  .PD 0
--- 1705,1715 ----
  .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
*************** with \s-1ISO\s0 C90 are disabled). Same
*** 1722,1728 ****
  .IP "\fBiso9899:199x\fR" 4
  .IX Item "iso9899:199x"
  .PD
! \&\s-1ISO\s0 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
--- 1720,1726 ----
  .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
*************** names \fBc9x\fR and \fBiso9899:199x\fR a
*** 1736,1742 ****
  .IP "\fBiso9899:2011\fR" 4
  .IX Item "iso9899:2011"
  .PD
! \&\s-1ISO\s0 C11, the 2011 revision of the \s-1ISO\s0 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
--- 1734,1740 ----
  .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
*** 1747,1767 ****
  .IP "\fBgnu89\fR" 4
  .IX Item "gnu89"
  .PD
! \&\s-1GNU\s0 dialect of \s-1ISO\s0 C90 (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\s0 C99.  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\s0 C11.  This is the default for C code.
  The name \fBgnu1x\fR is deprecated.
  .IP "\fBc++98\fR" 4
  .IX Item "c++98"
--- 1745,1765 ----
  .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  This is the default for C code.
  The name \fBgnu1x\fR is deprecated.
  .IP "\fBc++98\fR" 4
  .IX Item "c++98"
*************** The name \fBgnu1x\fR is deprecated.
*** 1769,1775 ****
  .IP "\fBc++03\fR" 4
  .IX Item "c++03"
  .PD
! The 1998 \s-1ISO\s0 \*(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"
--- 1767,1773 ----
  .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"
*************** additional defect reports. Same as \fB\-
*** 1785,1791 ****
  .IP "\fBc++0x\fR" 4
  .IX Item "c++0x"
  .PD
! The 2011 \s-1ISO\s0 \*(C+ standard plus amendments.
  The name \fBc++0x\fR is deprecated.
  .IP "\fBgnu++11\fR" 4
  .IX Item "gnu++11"
--- 1783,1789 ----
  .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"
*************** The name \fBgnu++0x\fR is deprecated.
*** 1801,1807 ****
  .IP "\fBc++1y\fR" 4
  .IX Item "c++1y"
  .PD
! The 2014 \s-1ISO\s0 \*(C+ standard plus amendments.
  The name \fBc++1y\fR is deprecated.
  .IP "\fBgnu++14\fR" 4
  .IX Item "gnu++14"
--- 1799,1805 ----
  .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"
*************** The name \fBc++1y\fR is deprecated.
*** 1813,1819 ****
  The name \fBgnu++1y\fR is deprecated.
  .IP "\fBc++1z\fR" 4
  .IX Item "c++1z"
! The next revision of the \s-1ISO\s0 \*(C+ standard, tentatively planned for
  2017.  Support is highly experimental, and will almost certainly
  change in incompatible ways in future releases.
  .IP "\fBgnu++1z\fR" 4
--- 1811,1817 ----
  The name \fBgnu++1y\fR is deprecated.
  .IP "\fBc++1z\fR" 4
  .IX Item "c++1z"
! The next revision of the \s-1ISO \*(C+\s0 standard, tentatively planned for
  2017.  Support is highly experimental, and will almost certainly
  change in incompatible ways in future releases.
  .IP "\fBgnu++1z\fR" 4
*************** In \*(C+, this switch only affects the \
*** 1875,1881 ****
  use the \fB\-fno\-gnu\-keywords\fR flag instead, which has the same
  effect.  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\s0 C99.
  .IP "\fB\-fno\-builtin\fR" 4
  .IX Item "-fno-builtin"
  .PD 0
--- 1873,1879 ----
  use the \fB\-fno\-gnu\-keywords\fR flag instead, which has the same
  effect.  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
  .IP "\fB\-fno\-builtin\fR" 4
  .IX Item "-fno-builtin"
  .PD 0
*************** known not to modify global memory.
*** 1903,1909 ****
  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
--- 1901,1907 ----
  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
*************** implies \fB\-pthread\fR, and thus is onl
*** 1937,1943 ****
  have support for \fB\-pthread\fR.
  .Sp
  Note that this is an experimental feature, incomplete, and subject to
! change in future versions of \s-1GCC\s0.  See
  <\fBhttps://gcc.gnu.org/wiki/OpenACC\fR> for more information.
  .IP "\fB\-fopenmp\fR" 4
  .IX Item "-fopenmp"
--- 1935,1941 ----
  have support for \fB\-pthread\fR.
  .Sp
  Note that this is an experimental feature, incomplete, and subject to
! change in future versions of \s-1GCC.\s0  See
  <\fBhttps://gcc.gnu.org/wiki/OpenACC\fR> for more information.
  .IP "\fB\-fopenmp\fR" 4
  .IX Item "-fopenmp"
*************** When the option \fB\-fgnu\-tm\fR is spec
*** 1969,1975 ****
  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,
--- 1967,1973 ----
  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,
*************** fields declared using a typedef.    This
*** 2006,2013 ****
  supported for C, not \*(C+.
  .IP "\fB\-trigraphs\fR" 4
  .IX Item "-trigraphs"
! Support \s-1ISO\s0 C trigraphs.  The \fB\-ansi\fR option (and \fB\-std\fR
! options for strict \s-1ISO\s0 C conformance) implies \fB\-trigraphs\fR.
  .IP "\fB\-traditional\fR" 4
  .IX Item "-traditional"
  .PD 0
--- 2004,2011 ----
  supported for C, not \*(C+.
  .IP "\fB\-trigraphs\fR" 4
  .IX Item "-trigraphs"
! Support \s-1ISO C\s0 trigraphs.  The \fB\-ansi\fR option (and \fB\-std\fR
! options for strict \s-1ISO C\s0 conformance) implies \fB\-trigraphs\fR.
  .IP "\fB\-traditional\fR" 4
  .IX Item "-traditional"
  .PD 0
*************** options for strict \s-1ISO\s0 C conforma
*** 2016,2023 ****
  .PD
  Formerly, these options caused \s-1GCC\s0 to attempt to emulate a pre-standard
  C compiler.  They are now only supported with the \fB\-E\fR switch.
! The preprocessor continues to support a pre-standard mode.  See the \s-1GNU\s0
! \&\s-1CPP\s0 manual for details.
  .IP "\fB\-fcond\-mismatch\fR" 4
  .IX Item "-fcond-mismatch"
  Allow conditional expressions with mismatched types in the second and
--- 2014,2021 ----
  .PD
  Formerly, these options caused \s-1GCC\s0 to attempt to emulate a pre-standard
  C compiler.  They are now only supported with the \fB\-E\fR switch.
! The preprocessor continues to support a pre-standard mode.  See the \s-1GNU
! CPP\s0 manual for details.
  .IP "\fB\-fcond\-mismatch\fR" 4
  .IX Item "-fcond-mismatch"
  Allow conditional expressions with mismatched types in the second and
*************** These options control whether a bit-fiel
*** 2067,2074 ****
  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.
! .Sh "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
--- 2065,2072 ----
  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.
! .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
*** 2080,2091 ****
  .PP
  In this example, only \fB\-frepo\fR is an option meant
  only for \*(C+ programs; you can use the other options with any
! language supported by \s-1GCC\s0.
  .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
--- 2078,2089 ----
  .PP
  In this example, only \fB\-frepo\fR is an option meant
  only for \*(C+ programs; you can use the other options with any
! language supported by \s-1GCC.\s0
  .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
*************** Inject friend functions into the enclosi
*** 2182,2188 ****
  visible outside the scope of the class in which they are declared.
  Friend functions were documented to work this way in the old Annotated
  \&\*(C+ Reference Manual.  
! However, in \s-1ISO\s0 \*(C+ a friend function that is not declared
  in an enclosing scope can only be found using argument dependent
  lookup.  \s-1GCC\s0 defaults to the standard behavior.
  .Sp
--- 2180,2186 ----
  visible outside the scope of the class in which they are declared.
  Friend functions were documented to work this way in the old Annotated
  \&\*(C+ Reference Manual.  
! However, in \s-1ISO \*(C+\s0 a friend function that is not declared
  in an enclosing scope can only be found using argument dependent
  lookup.  \s-1GCC\s0 defaults to the standard behavior.
  .Sp
*************** controlled by \f(CW\*(C`#pragma implemen
*** 2265,2276 ****
  errors if these functions are not inlined everywhere they are called.
  .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\-fno\-nonansi\-builtins\fR" 4
  .IX Item "-fno-nonansi-builtins"
  Disable built-in declarations of functions that are not mandated by
! \&\s-1ANSI/ISO\s0 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"
--- 2263,2274 ----
  errors if these functions are not inlined everywhere they are called.
  .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\-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"
*************** warning or error to \fIn\fR.  The defaul
*** 2358,2364 ****
  .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\s0 \*(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.
--- 2356,2362 ----
  .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.
*************** are taken in different shared objects.
*** 2389,2395 ****
  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
--- 2387,2393 ----
  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
*************** is used when building the \*(C+ library.
*** 2509,2518 ****
  In addition, these optimization, warning, and code generation options
  have meanings only for \*(C+ programs:
  .IP "\fB\-Wabi\fR (C, Objective-C, \*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wabi (C, Objective-C,  and Objective- only)"
  When an explicit \fB\-fabi\-version=\fR\fIn\fR option is used, causes
  G++ to warn when it generates code that is probably not compatible with the
! vendor-neutral \*(C+ \s-1ABI\s0.  Since G++ now defaults to
  \&\fB\-fabi\-version=0\fR, \fB\-Wabi\fR has no effect unless either
  an older \s-1ABI\s0 version is selected (with \fB\-fabi\-version=\fR\fIn\fR)
  or an older compatibility version is selected (with
--- 2507,2516 ----
  In addition, these optimization, warning, and code generation options
  have meanings only for \*(C+ programs:
  .IP "\fB\-Wabi\fR (C, Objective-C, \*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wabi (C, Objective-C, and Objective- only)"
  When an explicit \fB\-fabi\-version=\fR\fIn\fR option is used, causes
  G++ to warn when it generates code that is probably not compatible with the
! vendor-neutral \*(C+ \s-1ABI.\s0  Since G++ now defaults to
  \&\fB\-fabi\-version=0\fR, \fB\-Wabi\fR has no effect unless either
  an older \s-1ABI\s0 version is selected (with \fB\-fabi\-version=\fR\fIn\fR)
  or an older compatibility version is selected (with
*************** level, e.g. \fB\-Wabi=2\fR to warn about
*** 2535,2541 ****
  \&\fB\-fabi\-compat\-version=\fR\fIn\fR.
  .Sp
  The known incompatibilities in \fB\-fabi\-version=2\fR (which was the
! default from \s-1GCC\s0 3.4 to 4.9) include:
  .RS 4
  .IP "*" 4
  A template with a non-type template parameter of reference type was
--- 2533,2539 ----
  \&\fB\-fabi\-compat\-version=\fR\fIn\fR.
  .Sp
  The 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
*************** These mangling issues were fixed in \fB\
*** 2563,2569 ****
  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
--- 2561,2567 ----
  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
*************** When mangling a function type with funct
*** 2580,2593 ****
  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\s0 5.1.
  .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\s0 5.2.
  .RE
  .RS 4
  .Sp
--- 2578,2591 ----
  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
  .RE
  .RS 4
  .Sp
*************** This is on by default for all pre\-\*(C+
*** 2703,2709 ****
  \&\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\s0 \*(C+11 onwards (\fB\-std=c++11\fR, ...).
  .PP
  The following \fB\-W...\fR options are not affected by \fB\-Wall\fR.
  .IP "\fB\-Weffc++\fR (\*(C+ and Objective\-\*(C+ only)" 4
--- 2701,2707 ----
  \&\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, ...).
  .PP
  The following \fB\-W...\fR options are not affected by \fB\-Wall\fR.
  .IP "\fB\-Weffc++\fR (\*(C+ and Objective\-\*(C+ only)" 4
*************** Warn when overload resolution chooses a
*** 2799,2805 ****
  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.
! .Sh "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.
--- 2797,2803 ----
  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.
! .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.
*************** For example, you might compile a file \f
*** 2815,2821 ****
  .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.,
--- 2813,2819 ----
  .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.,
*************** runtime.  This is the default for most t
*** 2840,2846 ****
  .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 and Mac \s-1OS\s0 X.  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
--- 2838,2844 ----
  .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 and Mac \s-1OS X.\s0  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
*************** This option is currently supported only
*** 2857,2863 ****
  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
--- 2855,2861 ----
  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
*************** by the runtime immediately after a new o
*** 2881,2887 ****
  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\s0 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
--- 2879,2885 ----
  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
*************** is required to use the Objective-C keywo
*** 2896,2902 ****
  \&\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\s0 X 10.2 and earlier).
  .IP "\fB\-fobjc\-gc\fR" 4
  .IX Item "-fobjc-gc"
  Enable garbage collection (\s-1GC\s0) in Objective-C and Objective\-\*(C+
--- 2894,2900 ----
  \&\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
*** 2905,2927 ****
  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\s0 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 \s-1GCC\s0 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 \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
--- 2903,2925 ----
  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
*************** run time instead.  This is used in conju
*** 2930,2936 ****
  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\s0 X 10.3
  and later.
  .IP "\fB\-fzero\-link\fR" 4
  .IX Item "-fzero-link"
--- 2928,2934 ----
  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"
*************** that methods and selectors must be decla
*** 3009,3015 ****
  .IX Item "-print-objc-runtime-info"
  Generate C header describing the largest structure that is passed by
  value, if any.
! .Sh "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
--- 3007,3013 ----
  .IX Item "-print-objc-runtime-info"
  Generate C header describing the largest structure that is passed by
  value, if any.
! .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
*************** information.  The source line is truncat
*** 3131,3144 ****
  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.
! .Sh "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.
--- 3129,3142 ----
  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.
! .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.
*************** warns that an unrecognized option is pre
*** 3213,3226 ****
  .IP "\fB\-pedantic\fR" 4
  .IX Item "-pedantic"
  .PD
! Issue all the warnings demanded by strict \s-1ISO\s0 C and \s-1ISO\s0 \*(C+;
  reject all programs that use forbidden extensions, and some other
! programs that do not follow \s-1ISO\s0 C and \s-1ISO\s0 \*(C+.  For \s-1ISO\s0 C, follows the
! version of the \s-1ISO\s0 C standard specified by any \fB\-std\fR option used.
  .Sp
! Valid \s-1ISO\s0 C and \s-1ISO\s0 \*(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 required version of \s-1ISO\s0 C).  However,
  without this option, certain \s-1GNU\s0 extensions and traditional C and \*(C+
  features are supported as well.  With this option, they are rejected.
  .Sp
--- 3211,3224 ----
  .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;
  reject all programs that use forbidden extensions, and some other
! programs that do not follow \s-1ISO C\s0 and \s-1ISO \*(C+.\s0  For \s-1ISO C,\s0 follows the
! version of the \s-1ISO C\s0 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 required version of \s-1ISO C\s0).  However,
  without this option, certain \s-1GNU\s0 extensions and traditional C and \*(C+
  features are supported as well.  With this option, they are rejected.
  .Sp
*************** warnings are also disabled in the expres
*** 3230,3253 ****
  \&\f(CW\*(C`_\|_extension_\|_\*(C'\fR.  However, only system header files should use
  these escape routes; application programs should avoid them.
  .Sp
! Some users try to use \fB\-Wpedantic\fR to check programs for strict \s-1ISO\s0
! C conformance.  They soon find that it does not do quite what they want:
  it finds some non-ISO practices, but not all\-\-\-only those for which
! \&\s-1ISO\s0 C \fIrequires\fR a diagnostic, and some others for which
  diagnostics have been added.
  .Sp
! A feature to report any failure to conform to \s-1ISO\s0 C might be useful in
  some instances, but would require considerable additional work and would
  be quite different from \fB\-Wpedantic\fR.  We don't have plans to
  support such a feature in the near future.
  .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\s0 C 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\s0
! C 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
--- 3228,3251 ----
  \&\f(CW\*(C`_\|_extension_\|_\*(C'\fR.  However, only system header files should use
  these escape routes; application programs should avoid them.
  .Sp
! Some users try to use \fB\-Wpedantic\fR to check programs for strict \s-1ISO
! C\s0 conformance.  They soon find that it does not do quite what they want:
  it finds some non-ISO practices, but not all\-\-\-only those for which
! \&\s-1ISO C\s0 \fIrequires\fR a diagnostic, and some others for which
  diagnostics have been added.
  .Sp
! A feature to report any failure to conform to \s-1ISO C\s0 might be useful in
  some instances, but would require considerable additional work and would
  be quite different from \fB\-Wpedantic\fR.  We don't have plans to
  support such a feature in the near future.
  .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
*************** This warning is enabled by \fB\-Wall\fR.
*** 3359,3364 ****
--- 3357,3366 ----
  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\-Wchkp\fR" 4
+ .IX Item "-Wchkp"
+ Warn about an invalid memory access that is found by Pointer Bounds Checker
+ (\fB\-fcheck\-pointer\-bounds\fR).
  .IP "\fB\-Wno\-coverage\-mismatch\fR" 4
  .IX Item "-Wno-coverage-mismatch"
  Warn if feedback profiles do not match when using the
*************** functions without the attribute specifie
*** 3419,3425 ****
  \&\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\s0 C90 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
--- 3421,3427 ----
  \&\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
*************** enabled by default and it is made into a
*** 3535,3546 ****
  Same as \fB\-Wimplicit\-int\fR and \fB\-Wimplicit\-function\-declaration\fR.
  This warning is enabled by \fB\-Wall\fR.
  .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\s0 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.
! \&\s-1ISO\s0 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
--- 3537,3548 ----
  Same as \fB\-Wimplicit\-int\fR and \fB\-Wimplicit\-function\-declaration\fR.
  This warning is enabled by \fB\-Wall\fR.
  .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
*************** expression to a type other than \f(CW\*(
*** 3727,3735 ****
  .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\s0 4.4.
  .IP "\fB\-Wtrigraphs\fR" 4
  .IX Item "-Wtrigraphs"
  Warn if any trigraphs are encountered that might change the meaning of
--- 3729,3737 ----
  .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\-Wtrigraphs\fR" 4
  .IX Item "-Wtrigraphs"
  Warn if any trigraphs are encountered that might change the meaning of
*************** This warning is enabled by \fB\-Wall\fR.
*** 3766,3772 ****
  .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
--- 3768,3774 ----
  .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
*************** This warning is enabled by \fB\-Wall\fR
*** 3873,3879 ****
  .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
--- 3875,3881 ----
  .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
*************** probably mistaken.
*** 4151,4163 ****
  .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\s0 C.  Also warn about \s-1ISO\s0 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 \s-1ISO\s0 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
--- 4153,4165 ----
  .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
*************** versa.  The absence of these prototypes
*** 4212,4220 ****
  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\s0 C style function definitions.  This warning intentionally is
  \&\fInot\fR issued for prototype declarations or variadic functions
! because these \s-1ISO\s0 C 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
--- 4214,4222 ----
  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
*************** except when the same as the default prom
*** 4232,4239 ****
  .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\s0 C99 and is by default
! allowed in \s-1GCC\s0.  It is not supported by \s-1ISO\s0 C90.
  .IP "\fB\-Wundef\fR" 4
  .IX Item "-Wundef"
  Warn if an undefined identifier is evaluated in an \f(CW\*(C`#if\*(C'\fR directive.
--- 4234,4241 ----
  .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
  .IP "\fB\-Wundef\fR" 4
  .IX Item "-Wundef"
  Warn if an undefined identifier is evaluated in an \f(CW\*(C`#if\*(C'\fR directive.
*************** which depend on the \s-1MS\s0 runtime.
*** 4315,4321 ****
  .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\s0 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.
--- 4317,4323 ----
  .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.
*************** For example, warn if a call to a functio
*** 4333,4346 ****
  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\s0 C90, but present in \s-1ISO\s0 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 \s-1ISO\s0 C99, but present in \s-1ISO\s0 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,
--- 4335,4348 ----
  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 o
*** 4348,4366 ****
  disabled in the expression that follows \f(CW\*(C`_\|_extension_\|_\*(C'\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\s0 C constructs that are outside of the common subset of
! \&\s-1ISO\s0 C and \s-1ISO\s0 \*(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 ( and Objective- only)"
! Warn about \*(C+ constructs whose meaning differs between \s-1ISO\s0 \*(C+ 1998
! and \s-1ISO\s0 \*(C+ 2011, e.g., identifiers in \s-1ISO\s0 \*(C+ 1998 that are keywords
! in \s-1ISO\s0 \*(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 ( and Objective- only)"
! Warn about \*(C+ constructs whose meaning differs between \s-1ISO\s0 \*(C+ 2011
! and \s-1ISO\s0 \*(C+ 2014.  This warning is enabled by \fB\-Wall\fR.
  .IP "\fB\-Wcast\-qual\fR" 4
  .IX Item "-Wcast-qual"
  Warn whenever a pointer is cast so as to remove a type qualifier from
--- 4350,4368 ----
  disabled in the expression that follows \f(CW\*(C`_\|_extension_\|_\*(C'\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\-Wcast\-qual\fR" 4
  .IX Item "-Wcast-qual"
  Warn whenever a pointer is cast so as to remove a type qualifier from
*************** Usually they indicate a typo in the user
*** 4663,4687 ****
  implementation-defined values, and should not be used in portable code.
  .IP "\fB\-Wnormalized\fR[\fB=\fR<\fBnone\fR|\fBid\fR|\fBnfc\fR|\fBnfkc\fR>]" 4
  .IX Item "-Wnormalized[=<none|id|nfc|nfkc>]"
! In \s-1ISO\s0 C and \s-1ISO\s0 \*(C+, 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\s0 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.  \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\s0 10646 \*(L"C\*(R" 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\s0 C and \s-1ISO\s0 \*(C+ 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\s0 C 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.
--- 4665,4689 ----
  implementation-defined values, and should not be used in portable code.
  .IP "\fB\-Wnormalized\fR[\fB=\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.
*************** only do this if you are using some other
*** 4692,4702 ****
  \&\*(L"D\*(R"), because otherwise you can easily create bugs that are
  literally impossible to see.
  .Sp
! Some characters in \s-1ISO\s0 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, \*(L"\s-1SUPERSCRIPT\s0 \s-1LATIN\s0 \s-1SMALL\s0
! \&\s-1LETTER\s0 N\*(R", displays just like a regular \f(CW\*(C`n\*(C'\fR that has been
! placed in a superscript.  \s-1ISO\s0 10646 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
--- 4694,4704 ----
  \&\*(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
*************** have the packed attribute:
*** 4754,4762 ****
  .IP "\fB\-Wpacked\-bitfield\-compat\fR" 4
  .IX Item "-Wpacked-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 has been fixed in \s-1GCC\s0 4.4 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\s0 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
--- 4756,4764 ----
  .IP "\fB\-Wpacked\-bitfield\-compat\fR" 4
  .IX Item "-Wpacked-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 has been 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
*************** warnings produced by \fB\-Winline\fR to
*** 4803,4809 ****
  .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\s0 \*(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
--- 4805,4811 ----
  .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
*************** the search path but can't be used.
*** 4828,4839 ****
  .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\s0 C90 and \*(C+98
  modes.  To inhibit the warning messages, use \fB\-Wno\-long\-long\fR.
  .IP "\fB\-Wvariadic\-macros\fR" 4
  .IX Item "-Wvariadic-macros"
! Warn if variadic macros are used in \s-1ISO\s0 C90 mode, or if the \s-1GNU\s0
! alternate syntax is used in \s-1ISO\s0 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\-Wvarargs\fR" 4
--- 4830,4841 ----
  .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.
  .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\-Wvarargs\fR" 4
*************** standard's minimum limit, but very porta
*** 4897,4903 ****
  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
--- 4899,4905 ----
  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
*************** from the decimal floating-point extensio
*** 4915,4928 ****
  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.
! .Sh "Options for Debugging Your Program or \s-1GCC\s0"
  .IX Subsection "Options for Debugging Your Program or GCC"
  \&\s-1GCC\s0 has various special options that are used for debugging
  either your program or \s-1GCC:\s0
  .IP "\fB\-g\fR" 4
  .IX Item "-g"
  Produce debugging information in the operating system's native format
! (stabs, \s-1COFF\s0, \s-1XCOFF\s0, or \s-1DWARF\s0 2).  \s-1GDB\s0 can work with this debugging
  information.
  .Sp
  On most systems that use stabs format, \fB\-g\fR enables use of extra
--- 4917,4930 ----
  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 for Debugging Your Program or \s-1GCC\s0"
  .IX Subsection "Options for Debugging Your Program or GCC"
  \&\s-1GCC\s0 has various special options that are used for debugging
  either your program or \s-1GCC:\s0
  .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 2\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
*************** be useful, this option requires a debugg
*** 4955,4962 ****
  files.
  .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 2, stabs, or the native format
  if neither of those are supported), including \s-1GDB\s0 extensions if at all
  possible.
  .IP "\fB\-gpubnames\fR" 4
--- 4957,4964 ----
  files.
  .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 2,\s0 stabs, or the native format
  if neither of those are supported), including \s-1GDB\s0 extensions if at all
  possible.
  .IP "\fB\-gpubnames\fR" 4
*************** with a linker that can produce \s-1GDB\s
*** 4971,4978 ****
  .IX Item "-gstabs"
  Produce debugging information in stabs format (if that is supported),
  without \s-1GDB\s0 extensions.  This is the format used by \s-1DBX\s0 on most \s-1BSD\s0
! systems.  On \s-1MIPS\s0, Alpha and System V Release 4 systems this option
! produces stabs debugging output that is not understood by \s-1DBX\s0 or \s-1SDB\s0.
  On System V Release 4 systems this option requires the \s-1GNU\s0 assembler.
  .IP "\fB\-feliminate\-unused\-debug\-symbols\fR" 4
  .IX Item "-feliminate-unused-debug-symbols"
--- 4973,4980 ----
  .IX Item "-gstabs"
  Produce debugging information in stabs format (if that is supported),
  without \s-1GDB\s0 extensions.  This is the format used by \s-1DBX\s0 on most \s-1BSD\s0
! systems.  On \s-1MIPS,\s0 Alpha and System V Release 4 systems this option
! produces stabs debugging output that is not understood by \s-1DBX\s0 or \s-1SDB.\s0
  On System V Release 4 systems this option requires the \s-1GNU\s0 assembler.
  .IP "\fB\-feliminate\-unused\-debug\-symbols\fR" 4
  .IX Item "-feliminate-unused-debug-symbols"
*************** System V Release 4.
*** 5009,5015 ****
  .IP "\fB\-gxcoff\fR" 4
  .IX Item "-gxcoff"
  Produce debugging information in \s-1XCOFF\s0 format (if that is supported).
! This is the format used by the \s-1DBX\s0 debugger on \s-1IBM\s0 \s-1RS/6000\s0 systems.
  .IP "\fB\-gxcoff+\fR" 4
  .IX Item "-gxcoff+"
  Produce debugging information in \s-1XCOFF\s0 format (if that is supported),
--- 5011,5017 ----
  .IP "\fB\-gxcoff\fR" 4
  .IX Item "-gxcoff"
  Produce debugging information in \s-1XCOFF\s0 format (if that is supported).
! This is the format used by the \s-1DBX\s0 debugger on \s-1IBM RS/6000\s0 systems.
  .IP "\fB\-gxcoff+\fR" 4
  .IX Item "-gxcoff+"
  Produce debugging information in \s-1XCOFF\s0 format (if that is supported),
*************** The value of \fIversion\fR may be either
*** 5024,5032 ****
  for most targets is 4.  \s-1DWARF\s0 Version 5 is only experimental.
  .Sp
  Note that with \s-1DWARF\s0 Version 2, some ports require and always
! use some non-conflicting \s-1DWARF\s0 3 extensions in the unwind tables.
  .Sp
! Version 4 may require \s-1GDB\s0 7.0 and \fB\-fvar\-tracking\-assignments\fR
  for maximum benefit.
  .IP "\fB\-grecord\-gcc\-switches\fR" 4
  .IX Item "-grecord-gcc-switches"
--- 5026,5034 ----
  for most targets is 4.  \s-1DWARF\s0 Version 5 is only experimental.
  .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.
  .IP "\fB\-grecord\-gcc\-switches\fR" 4
  .IX Item "-grecord-gcc-switches"
*************** debug information in version 1 of the \s
*** 5099,5105 ****
  different from version 2), and it would have been too confusing.  That
  debug format is long obsolete, but the option cannot be changed now.
  Instead use an additional \fB\-g\fR\fIlevel\fR option to change the
! debug level for \s-1DWARF\s0.
  .IP "\fB\-gtoggle\fR" 4
  .IX Item "-gtoggle"
  Turn off generation of debug info, if leaving out this option
--- 5101,5107 ----
  different from version 2), and it would have been too confusing.  That
  debug format is long obsolete, but the option cannot be changed now.
  Instead use an additional \fB\-g\fR\fIlevel\fR option to change the
! debug level for \s-1DWARF.\s0
  .IP "\fB\-gtoggle\fR" 4
  .IX Item "-gtoggle"
  Turn off generation of debug info, if leaving out this option
*************** at runtime.  Current suboptions are:
*** 5152,5158 ****
  .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\s0 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 as well as \f(CW\*(C`INT_MIN / \-1\*(C'\fR division.
--- 5154,5160 ----
  .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.
  .IP "\fB\-fsanitize=integer\-divide\-by\-zero\fR" 4
  .IX Item "-fsanitize=integer-divide-by-zero"
  Detect integer division by zero as well as \f(CW\*(C`INT_MIN / \-1\*(C'\fR division.
*************** When this option is passed to the compil
*** 5458,5466 ****
  other than debugging the compiler proper.
  .IP "\fB\-feliminate\-dwarf2\-dups\fR" 4
  .IX Item "-feliminate-dwarf2-dups"
! Compress \s-1DWARF\s0 2 debugging information by eliminating duplicated
  information about each symbol.  This option only makes sense when
! generating \s-1DWARF\s0 2 debugging information with \fB\-gdwarf\-2\fR.
  .IP "\fB\-femit\-struct\-debug\-baseonly\fR" 4
  .IX Item "-femit-struct-debug-baseonly"
  Emit debug information for struct-like types
--- 5460,5468 ----
  other than debugging the compiler proper.
  .IP "\fB\-feliminate\-dwarf2\-dups\fR" 4
  .IX Item "-feliminate-dwarf2-dups"
! Compress \s-1DWARF 2\s0 debugging information by eliminating duplicated
  information about each symbol.  This option only makes sense when
! generating \s-1DWARF 2\s0 debugging information with \fB\-gdwarf\-2\fR.
  .IP "\fB\-femit\-struct\-debug\-baseonly\fR" 4
  .IX Item "-femit-struct-debug-baseonly"
  Emit debug information for struct-like types
*************** but at significant potential loss in typ
*** 5472,5478 ****
  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 2.
  .IP "\fB\-femit\-struct\-debug\-reduced\fR" 4
  .IX Item "-femit-struct-debug-reduced"
  Emit debug information for struct-like types
--- 5474,5480 ----
  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 2.\s0
  .IP "\fB\-femit\-struct\-debug\-reduced\fR" 4
  .IX Item "-femit-struct-debug-reduced"
  Emit debug information for struct-like types
*************** with some potential loss in type informa
*** 5485,5491 ****
  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 2.
  .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
--- 5487,5493 ----
  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 2.\s0
  .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
*************** You may need to experiment to determine
*** 5531,5537 ****
  .Sp
  The default is \fB\-femit\-struct\-debug\-detailed=all\fR.
  .Sp
! This option works only with \s-1DWARF\s0 2.
  .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
--- 5533,5539 ----
  .Sp
  The default is \fB\-femit\-struct\-debug\-detailed=all\fR.
  .Sp
! This option works only with \s-1DWARF 2.\s0
  .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
*************** When compiling files in directory \fI\fI
*** 5545,5551 ****
  information describing them as in \fI\fInew\fI\fR instead.
  .IP "\fB\-fno\-dwarf2\-cfi\-asm\fR" 4
  .IX Item "-fno-dwarf2-cfi-asm"
! Emit \s-1DWARF\s0 2 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\-p\fR" 4
  .IX Item "-p"
--- 5547,5553 ----
  information describing them as in \fI\fInew\fI\fR instead.
  .IP "\fB\-fno\-dwarf2\-cfi\-asm\fR" 4
  .IX Item "-fno-dwarf2-cfi-asm"
! Emit \s-1DWARF 2\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\-p\fR" 4
  .IX Item "-p"
*************** For example, with \fB\-fdbg\-cnt=dce:10,
*** 5703,5709 ****
  .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
--- 5705,5711 ----
  .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
*************** by some other path.
*** 6176,6182 ****
  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"
--- 6178,6184 ----
  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"
*************** Dump aliasing information for each funct
*** 6289,6295 ****
  appending \fI.alias\fR to the source file name.
  .IP "\fBccp\fR" 4
  .IX Item "ccp"
! Dump each function after \s-1CCP\s0.  The file name is made by appending
  \&\fI.ccp\fR to the source file name.
  .IP "\fBstoreccp\fR" 4
  .IX Item "storeccp"
--- 6291,6297 ----
  appending \fI.alias\fR to the source file name.
  .IP "\fBccp\fR" 4
  .IX Item "ccp"
! Dump each function after \s-1CCP.\s0  The file name is made by appending
  \&\fI.ccp\fR to the source file name.
  .IP "\fBstoreccp\fR" 4
  .IX Item "storeccp"
*************** Print the compiler's built-in specs\-\-\
*** 6708,6714 ****
  is used when \s-1GCC\s0 itself is being built.)
  .IP "\fB\-fno\-eliminate\-unused\-debug\-types\fR" 4
  .IX Item "-fno-eliminate-unused-debug-types"
! Normally, when producing \s-1DWARF\s0 2 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
--- 6710,6716 ----
  is used when \s-1GCC\s0 itself is being built.)
  .IP "\fB\-fno\-eliminate\-unused\-debug\-types\fR" 4
  .IX Item "-fno-eliminate-unused-debug-types"
! Normally, when producing \s-1DWARF 2\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
*************** in that compilation unit, for example
*** 6717,6723 ****
  if, in the debugger, you want to cast a value to a type that is
  not actually used in your program (but is declared).  More often,
  however, this results in a significant amount of wasted space.
! .Sh "Options That Control Optimization"
  .IX Subsection "Options That Control Optimization"
  These options control various sorts of optimizations.
  .PP
--- 6719,6725 ----
  if, in the debugger, you want to cast a value to a type that is
  not actually used in your program (but is declared).  More often,
  however, this results in a significant amount of wasted space.
! .SS "Options That Control Optimization"
  .IX Subsection "Options That Control Optimization"
  These options control various sorts of optimizations.
  .PP
*************** function calls and pops them all at once
*** 6913,6919 ****
  Disabled at levels \fB\-O\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
  .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.
--- 6915,6921 ----
  Disabled at levels \fB\-O\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
  .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.
*************** restore frame pointers; it also makes an
*** 6939,6945 ****
  in many functions.  \fBIt also makes debugging impossible on
  some machines.\fR
  .Sp
! On some machines, such as the \s-1VAX\s0, this flag has no effect, because
  the standard calling sequence automatically handles the frame pointer
  and nothing is saved by pretending it doesn't exist.  The
  machine-description macro \f(CW\*(C`FRAME_POINTER_REQUIRED\*(C'\fR controls
--- 6941,6947 ----
  in many functions.  \fBIt also makes debugging impossible on
  some machines.\fR
  .Sp
! On some machines, such as the \s-1VAX,\s0 this flag has no effect, because
  the standard calling sequence automatically handles the frame pointer
  and nothing is saved by pretending it doesn't exist.  The
  machine-description macro \f(CW\*(C`FRAME_POINTER_REQUIRED\*(C'\fR controls
*************** attribute or declspec
*** 7064,7070 ****
  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\s0 C90.  In \*(C+, emit any and all
  inline functions into the object file.
  .IP "\fB\-fkeep\-static\-consts\fR" 4
  .IX Item "-fkeep-static-consts"
--- 7066,7072 ----
  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\-consts\fR" 4
  .IX Item "-fkeep-static-consts"
*************** The default is \fB\-ffunction\-cse\fR
*** 7131,7137 ****
  .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
--- 7133,7139 ----
  .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
*************** instructions to support this.  Enabled b
*** 7254,7264 ****
  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\-O\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\-O\fR and higher.
  .IP "\fB\-fif\-conversion\fR" 4
  .IX Item "-fif-conversion"
--- 7256,7266 ----
  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\-O\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\-O\fR and higher.
  .IP "\fB\-fif\-conversion\fR" 4
  .IX Item "-fif-conversion"
*************** The default value is 5.  If the value \f
*** 7418,7424 ****
  the dump output is sent to stderr using the same format as \fIn\fR minus 10.
  .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
--- 7420,7426 ----
  the dump output is sent to stderr using the same format as \fIn\fR minus 10.
  .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
*************** When pipelining loops during selective s
*** 7577,7585 ****
  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
--- 7579,7587 ----
  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
*************** at \fB\-O\fR and higher.
*** 7649,7655 ****
  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\-O\fR and higher.
  .IP "\fB\-ftree\-phiprop\fR" 4
  .IX Item "-ftree-phiprop"
--- 7651,7657 ----
  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\-O\fR and higher.
  .IP "\fB\-ftree\-phiprop\fR" 4
  .IX Item "-ftree-phiprop"
*************** The optimization reduces code size and m
*** 7720,7726 ****
  a function by equivalent one with a different name. The optimization works
  more effectively with link time optimization enabled.
  .Sp
! Nevertheless the behavior is similar to Gold Linker \s-1ICF\s0 optimization, \s-1GCC\s0 \s-1ICF\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
--- 7722,7728 ----
  a function by equivalent one with a different name. The optimization works
  more effectively with link time optimization enabled.
  .Sp
! Nevertheless the behavior is similar to Gold Linker \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
*************** pass only operates on local scalar varia
*** 7755,7761 ****
  at \fB\-O\fR and higher.
  .IP "\fB\-fssa\-phiopt\fR" 4
  .IX Item "-fssa-phiopt"
! Perform pattern matching on \s-1SSA\s0 \s-1PHI\s0 nodes to optimize conditional
  code.  This pass is enabled by default at \fB\-O\fR and higher.
  .IP "\fB\-ftree\-switch\-conversion\fR" 4
  .IX Item "-ftree-switch-conversion"
--- 7757,7763 ----
  at \fB\-O\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\-O\fR and higher.
  .IP "\fB\-ftree\-switch\-conversion\fR" 4
  .IX Item "-ftree-switch-conversion"
*************** Enable the identity transformation for g
*** 7912,7918 ****
  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 \s-1ISL\s0, like index splitting and
  dead code elimination in loops.
  .IP "\fB\-floop\-nest\-optimize\fR" 4
  .IX Item "-floop-nest-optimize"
--- 7914,7920 ----
  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 \s-1ISL,\s0 like index splitting and
  dead code elimination in loops.
  .IP "\fB\-floop\-nest\-optimize\fR" 4
  .IX Item "-floop-nest-optimize"
*************** targets.
*** 8417,8423 ****
  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
--- 8419,8425 ----
  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
*************** link time.
*** 8560,8566 ****
  .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\s0 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
--- 8562,8568 ----
  .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
*************** regular (non-LTO) compilation.
*** 8583,8589 ****
  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
--- 8585,8591 ----
  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
*************** The current implementation of \s-1LTO\s0
*** 8618,8624 ****
  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.  Combining \fB\-flto\fR with
--- 8620,8626 ----
  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.  Combining \fB\-flto\fR with
*************** and the object code. This makes them usa
*** 8701,8708 ****
  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
--- 8703,8710 ----
  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
*************** E.g.
*** 8811,8817 ****
  .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
--- 8813,8819 ----
  .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
*************** operations are carried out in the precis
*** 8849,8855 ****
  it is unpredictable when rounding to the types specified in the source
  code takes place.  When compiling C, if
  \&\fB\-fexcess\-precision=standard\fR is specified then excess
! precision follows the rules specified in \s-1ISO\s0 C99; 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 if a strict
--- 8851,8857 ----
  it is unpredictable when rounding to the types specified in the source
  code takes place.  When compiling C, if
  \&\fB\-fexcess\-precision=standard\fR is specified then excess
! precision follows the rules specified in \s-1ISO C99\s0; 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 if a strict
*************** The default is \fB\-fno\-unsafe\-math\-o
*** 8913,8919 ****
  .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\s0 C 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
--- 8915,8921 ----
  .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
*************** whether the result of a complex multipli
*** 9016,9022 ****
  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\s0 C99
  \&\f(CW\*(C`CX_LIMITED_RANGE\*(C'\fR pragma.  Nevertheless, the option applies to
  all languages.
  .IP "\fB\-fcx\-fortran\-rules\fR" 4
--- 9018,9024 ----
  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
*************** optimization is not done.
*** 9288,9294 ****
  .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\s0 \s-1PRE\s0 inserts or removes the expression and thus
  leaves partially redundant computations in the instruction stream.  The default value is 20.
  .IP "\fBmax-pending-list-length\fR" 4
  .IX Item "max-pending-list-length"
--- 9290,9296 ----
  .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.  The default value is 20.
  .IP "\fBmax-pending-list-length\fR" 4
  .IX Item "max-pending-list-length"
*************** when modulo scheduling a loop.  Larger v
*** 9303,9309 ****
  compilation time.
  .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
--- 9305,9311 ----
  compilation time.
  .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
*************** Tuning this may improve compilation spee
*** 9659,9665 ****
  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\s0\*(R" 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
--- 9661,9667 ----
  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
*************** by \fBggc-min-expand\fR% beyond \fBggc-m
*** 9674,9680 ****
  tuning this may improve compilation speed, and has no effect on code
  generation.
  .Sp
! The default is the smaller of \s-1RAM/8\s0, \s-1RLIMIT_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
--- 9676,9682 ----
  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
*************** This value is the best found from numero
*** 9899,9905 ****
  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 of the parameter is 40.  The 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"
--- 9901,9907 ----
  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 of the parameter is 40.  The 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"
*************** automaton.  The default is 50.
*** 10153,10159 ****
  .RE
  .RS 4
  .RE
! .Sh "Options Controlling the Preprocessor"
  .IX Subsection "Options Controlling the Preprocessor"
  These options control the C preprocessor, which is run on each C source
  file before actual compilation.
--- 10155,10161 ----
  .RE
  .RS 4
  .RE
! .SS "Options Controlling the Preprocessor"
  .IX Subsection "Options Controlling the Preprocessor"
  These options control the C preprocessor, which is run on each C source
  file before actual compilation.
*************** get trigraph conversion without warnings
*** 10277,10283 ****
  .IP "\fB\-Wtraditional\fR" 4
  .IX Item "-Wtraditional"
  Warn about certain constructs that behave differently in traditional and
! \&\s-1ISO\s0 C.  Also warn about \s-1ISO\s0 C constructs that have no traditional C
  equivalent, and problematic constructs which should be avoided.
  .IP "\fB\-Wundef\fR" 4
  .IX Item "-Wundef"
--- 10279,10285 ----
  .IP "\fB\-Wtraditional\fR" 4
  .IX Item "-Wtraditional"
  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 problematic constructs which should be avoided.
  .IP "\fB\-Wundef\fR" 4
  .IX Item "-Wundef"
*************** in finding bugs in your own code, theref
*** 10330,10336 ****
  responsible for the system library, you may want to see them.
  .IP "\fB\-w\fR" 4
  .IX Item "-w"
! Suppress all warnings, including those which \s-1GNU\s0 \s-1CPP\s0 issues by default.
  .IP "\fB\-pedantic\fR" 4
  .IX Item "-pedantic"
  Issue all the mandatory diagnostics listed in the C standard.  Some of
--- 10332,10338 ----
  responsible for the system library, you may want to see them.
  .IP "\fB\-w\fR" 4
  .IX Item "-w"
! Suppress all warnings, including those which \s-1GNU CPP\s0 issues by default.
  .IP "\fB\-pedantic\fR" 4
  .IX Item "-pedantic"
  Issue all the mandatory diagnostics listed in the C standard.  Some of
*************** This option allows use of a precompiled
*** 10470,10479 ****
  \&\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
--- 10472,10481 ----
  \&\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
*************** may be one of:
*** 10526,10532 ****
  .el .IP "\f(CWiso9899:1990\fR" 4
  .IX Item "iso9899:1990"
  .PD
! The \s-1ISO\s0 C standard from 1990.  \fBc90\fR is the customary shorthand for
  this version of the standard.
  .Sp
  The \fB\-ansi\fR option is equivalent to \fB\-std=c90\fR.
--- 10528,10534 ----
  .el .IP "\f(CWiso9899:1990\fR" 4
  .IX Item "iso9899:1990"
  .PD
! The \s-1ISO C\s0 standard from 1990.  \fBc90\fR is the customary shorthand for
  this version of the standard.
  .Sp
  The \fB\-ansi\fR option is equivalent to \fB\-std=c90\fR.
*************** The 1990 C standard, as amended in 1994.
*** 10548,10554 ****
  .el .IP "\f(CWc9x\fR" 4
  .IX Item "c9x"
  .PD
! The revised \s-1ISO\s0 C standard, published in December 1999.  Before
  publication, this was known as C9X.
  .ie n .IP """iso9899:2011""" 4
  .el .IP "\f(CWiso9899:2011\fR" 4
--- 10550,10556 ----
  .el .IP "\f(CWc9x\fR" 4
  .IX Item "c9x"
  .PD
! The revised \s-1ISO C\s0 standard, published in December 1999.  Before
  publication, this was known as C9X.
  .ie n .IP """iso9899:2011""" 4
  .el .IP "\f(CWiso9899:2011\fR" 4
*************** publication, this was known as C9X.
*** 10561,10567 ****
  .el .IP "\f(CWc1x\fR" 4
  .IX Item "c1x"
  .PD
! The revised \s-1ISO\s0 C standard, published in December 2011.  Before
  publication, this was known as C1X.
  .ie n .IP """gnu90""" 4
  .el .IP "\f(CWgnu90\fR" 4
--- 10563,10569 ----
  .el .IP "\f(CWc1x\fR" 4
  .IX Item "c1x"
  .PD
! The revised \s-1ISO C\s0 standard, published in December 2011.  Before
  publication, this was known as C1X.
  .ie n .IP """gnu90""" 4
  .el .IP "\f(CWgnu90\fR" 4
*************** The 2011 C standard plus \s-1GNU\s0 exte
*** 10593,10599 ****
  .ie n .IP """c++98""" 4
  .el .IP "\f(CWc++98\fR" 4
  .IX Item "c++98"
! The 1998 \s-1ISO\s0 \*(C+ standard plus amendments.
  .ie n .IP """gnu++98""" 4
  .el .IP "\f(CWgnu++98\fR" 4
  .IX Item "gnu++98"
--- 10595,10601 ----
  .ie n .IP """c++98""" 4
  .el .IP "\f(CWc++98\fR" 4
  .IX Item "c++98"
! The 1998 \s-1ISO \*(C+\s0 standard plus amendments.
  .ie n .IP """gnu++98""" 4
  .el .IP "\f(CWgnu++98\fR" 4
  .IX Item "gnu++98"
*************** line.  If the value is less than 1 or gr
*** 10745,10751 ****
  ignored.  The default is 8.
  .IP "\fB\-fdebug\-cpp\fR" 4
  .IX Item "-fdebug-cpp"
! This option is only useful for debugging \s-1GCC\s0.  When used with
  \&\fB\-E\fR, dumps debugging information about location maps.  Every
  token in the output is preceded by the dump of the map its location
  belongs to.  The dump of the map holding the location of a token would
--- 10747,10753 ----
  ignored.  The default is 8.
  .IP "\fB\-fdebug\-cpp\fR" 4
  .IX Item "-fdebug-cpp"
! This option is only useful for debugging \s-1GCC.\s0  When used with
  \&\fB\-E\fR, dumps debugging information about location maps.  Every
  token in the output is preceded by the dump of the map its location
  belongs to.  The dump of the map holding the location of a token would
*************** Note that \f(CW\*(C`\-ftrack\-macro\-exp
*** 10778,10789 ****
  .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 \s-1UTF\-32\s0 or \s-1UTF\-16\s0, whichever
  corresponds to the width of \f(CW\*(C`wchar_t\*(C'\fR.  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
--- 10780,10791 ----
  .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 \s-1UTF\-32\s0 or \s-1UTF\-16,\s0 whichever
  corresponds to the width of \f(CW\*(C`wchar_t\*(C'\fR.  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
*** 10791,10799 ****
  .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.
--- 10793,10801 ----
  .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.
*************** Cancel an assertion with the predicate \
*** 10830,10836 ****
  .IX Item "-dCHARS"
  \&\fI\s-1CHARS\s0\fR is a sequence of one or more of the following characters,
  and must not be preceded by a space.  Other characters are interpreted
! by the compiler proper, or reserved for future versions of \s-1GCC\s0, and so
  are silently ignored.  If you specify characters whose behavior
  conflicts, the result is undefined.
  .RS 4
--- 10832,10838 ----
  .IX Item "-dCHARS"
  \&\fI\s-1CHARS\s0\fR is a sequence of one or more of the following characters,
  and must not be preceded by a space.  Other characters are interpreted
! by the compiler proper, or reserved for future versions of \s-1GCC,\s0 and so
  are silently ignored.  If you specify characters whose behavior
  conflicts, the result is undefined.
  .RS 4
*************** The \fB\-CC\fR option is generally used
*** 10906,10917 ****
  .IP "\fB\-traditional\-cpp\fR" 4
  .IX Item "-traditional-cpp"
  Try to imitate the behavior of old-fashioned C preprocessors, as
! opposed to \s-1ISO\s0 C preprocessors.
  .IP "\fB\-trigraphs\fR" 4
  .IX Item "-trigraphs"
  Process trigraph sequences.
  These are three-character sequences, all starting with \fB??\fR, that
! are defined by \s-1ISO\s0 C 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.  By default, \s-1GCC\s0 ignores trigraphs, but in
  standard-conforming modes it converts them.  See the \fB\-std\fR and
--- 10908,10919 ----
  .IP "\fB\-traditional\-cpp\fR" 4
  .IX Item "-traditional-cpp"
  Try to imitate the behavior of old-fashioned C preprocessors, as
! opposed to \s-1ISO C\s0 preprocessors.
  .IP "\fB\-trigraphs\fR" 4
  .IX Item "-trigraphs"
  Process trigraph sequences.
  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.  By default, \s-1GCC\s0 ignores trigraphs, but in
  standard-conforming modes it converts them.  See the \fB\-std\fR and
*************** Print text describing all the command-li
*** 10937,10943 ****
  preprocessing anything.
  .IP "\fB\-v\fR" 4
  .IX Item "-v"
! Verbose mode.  Print out \s-1GNU\s0 \s-1CPP\s0's version number at the beginning of
  execution, and report the final form of the include path.
  .IP "\fB\-H\fR" 4
  .IX Item "-H"
--- 10939,10945 ----
  preprocessing anything.
  .IP "\fB\-v\fR" 4
  .IX Item "-v"
! Verbose mode.  Print out \s-1GNU CPP\s0's version number at the beginning of
  execution, and report the final form of the include path.
  .IP "\fB\-H\fR" 4
  .IX Item "-H"
*************** header file is printed with \fB...x\fR a
*** 10952,10960 ****
  .IP "\fB\-\-version\fR" 4
  .IX Item "--version"
  .PD
! Print out \s-1GNU\s0 \s-1CPP\s0's version number.  With one dash, proceed to
  preprocess as normal.  With two dashes, exit immediately.
! .Sh "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
--- 10954,10962 ----
  .IP "\fB\-\-version\fR" 4
  .IX Item "--version"
  .PD
! Print out \s-1GNU CPP\s0's version number.  With one dash, proceed to
  preprocess as normal.  With two dashes, exit immediately.
! .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
*************** recognize.
*** 10969,10975 ****
  .Sp
  If you want to pass an option that takes an argument, you must use
  \&\fB\-Xassembler\fR twice, once for the option and once for the argument.
! .Sh "Options for Linking"
  .IX Subsection "Options for Linking"
  These options come into play when the compiler links object files into
  an executable output file.  They are meaningless if the compiler is
--- 10971,10977 ----
  .Sp
  If you want to pass an option that takes an argument, you must use
  \&\fB\-Xassembler\fR twice, once for the option and once for the argument.
! .SS "Options for Linking"
  .IX Subsection "Options for Linking"
  These options come into play when the compiler links object files into
  an executable output file.  They are meaningless if the compiler is
*************** different symbols to force loading of ad
*** 11256,11262 ****
  \&\fB\-z\fR is passed directly on to the linker along with the keyword
  \&\fIkeyword\fR. See the section in the documentation of your linker for
  permitted values and their meanings.
! .Sh "Options for Directory Search"
  .IX Subsection "Options for Directory Search"
  These options specify directories to search for header files, for
  libraries and for parts of the compiler:
--- 11258,11264 ----
  \&\fB\-z\fR is passed directly on to the linker along with the keyword
  \&\fIkeyword\fR. See the section in the documentation of your linker for
  permitted values and their meanings.
! .SS "Options for Directory Search"
  .IX Subsection "Options for Directory Search"
  These options specify directories to search for header files, for
  libraries and for parts of the compiler:
*************** by default, but it is often satisfactory
*** 11392,11404 ****
  \&\fB\-I\-\fR does not inhibit the use of the standard system directories
  for header files.  Thus, \fB\-I\-\fR and \fB\-nostdinc\fR are
  independent.
! .Sh "Specifying Target Machine and Compiler Version"
  .IX Subsection "Specifying Target Machine and Compiler Version"
  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 version other than the
  one that was installed last.
! .Sh "Hardware Models and Configurations"
  .IX Subsection "Hardware Models and Configurations"
  Each target machine types can have its own
  special options, starting with \fB\-m\fR, to choose among various
--- 11394,11406 ----
  \&\fB\-I\-\fR does not inhibit the use of the standard system directories
  for header files.  Thus, \fB\-I\-\fR and \fB\-nostdinc\fR are
  independent.
! .SS "Specifying Target Machine and Compiler Version"
  .IX Subsection "Specifying Target Machine and Compiler Version"
  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 version other than the
  one that was installed last.
! .SS "Hardware Models and Configurations"
  .IX Subsection "Hardware Models and Configurations"
  Each target machine types can have its own
  special options, starting with \fB\-m\fR, to choose among various
*************** but long int and pointer are 64\-bit.
*** 11424,11430 ****
  .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.
  .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
--- 11426,11432 ----
  .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.
  .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
*************** This is the mode used for floating-point
*** 11660,11666 ****
  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
--- 11662,11668 ----
  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
*************** values for \fIcpu\fR are
*** 11722,11734 ****
  .RS 4
  .IP "\fB\s-1ARC600\s0\fR" 4
  .IX Item "ARC600"
! Compile for \s-1ARC600\s0.  Aliases: \fB\-mA6\fR, \fB\-mARC600\fR.
  .IP "\fB\s-1ARC601\s0\fR" 4
  .IX Item "ARC601"
! Compile for \s-1ARC601\s0.  Alias: \fB\-mARC601\fR.
  .IP "\fB\s-1ARC700\s0\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.
  .RE
  .RS 4
--- 11724,11736 ----
  .RS 4
  .IP "\fB\s-1ARC600\s0\fR" 4
  .IX Item "ARC600"
! Compile for \s-1ARC600.\s0  Aliases: \fB\-mA6\fR, \fB\-mARC600\fR.
  .IP "\fB\s-1ARC601\s0\fR" 4
  .IX Item "ARC601"
! Compile for \s-1ARC601.\s0  Alias: \fB\-mARC601\fR.
  .IP "\fB\s-1ARC700\s0\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.
  .RE
  .RS 4
*************** Generate Extended arithmetic instruction
*** 11755,11761 ****
  supported.  This is always enabled for \fB\-mcpu=ARC700\fR.
  .IP "\fB\-mno\-mpy\fR" 4
  .IX Item "-mno-mpy"
! Do not generate mpy instructions for \s-1ARC700\s0.
  .IP "\fB\-mmul32x16\fR" 4
  .IX Item "-mmul32x16"
  Generate 32x16 bit multiply and mac instructions.
--- 11757,11763 ----
  supported.  This is always enabled for \fB\-mcpu=ARC700\fR.
  .IP "\fB\-mno\-mpy\fR" 4
  .IX Item "-mno-mpy"
! Do not generate mpy instructions for \s-1ARC700.\s0
  .IP "\fB\-mmul32x16\fR" 4
  .IX Item "-mmul32x16"
  Generate 32x16 bit multiply and mac instructions.
*************** implementation.
*** 11780,11786 ****
  implementation.
  .IP "\fB\-msimd\fR" 4
  .IX Item "-msimd"
! Enable generation of \s-1ARC\s0 \s-1SIMD\s0 instructions via target-specific
  builtins.  Only valid for \fB\-mcpu=ARC700\fR.
  .IP "\fB\-msoft\-float\fR" 4
  .IX Item "-msoft-float"
--- 11782,11788 ----
  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"
*************** optimizers then assume that indexed stor
*** 11947,11953 ****
  the case.
  .IP "\fB\-mlra\fR" 4
  .IX Item "-mlra"
! Enable Local Register Allocation.  This is still experimental for \s-1ARC\s0,
  so by default the compiler uses standard reload
  (i.e. \fB\-mno\-lra\fR).
  .IP "\fB\-mlra\-priority\-none\fR" 4
--- 11949,11955 ----
  the case.
  .IP "\fB\-mlra\fR" 4
  .IX Item "-mlra"
! Enable Local Register Allocation.  This is still experimental for \s-1ARC,\s0
  so by default the compiler uses standard reload
  (i.e. \fB\-mno\-lra\fR).
  .IP "\fB\-mlra\-priority\-none\fR" 4
*************** The following options are maintained for
*** 12053,12059 ****
  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
--- 12055,12061 ----
  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
*************** Replaced by \fB\-mmultcost\fR.
*** 12116,12122 ****
  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"
--- 12118,12124 ----
  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"
*************** and uses FPU-specific calling convention
*** 12160,12166 ****
  .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\-mlittle\-endian\fR" 4
  .IX Item "-mlittle-endian"
--- 12162,12168 ----
  .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\-mlittle\-endian\fR" 4
  .IX Item "-mlittle-endian"
*************** If the selected floating-point hardware
*** 12290,12296 ****
  (e.g. \fB\-mfpu\fR=\fBneon\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\s0 754 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.
  .IP "\fB\-mfp16\-format=\fR\fIname\fR" 4
--- 12292,12298 ----
  (e.g. \fB\-mfpu\fR=\fBneon\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.
  .IP "\fB\-mfp16\-format=\fR\fIname\fR" 4
*************** otherwise the default is \fBR10\fR.
*** 12363,12369 ****
  .IX Item "-mpic-data-is-text-relative"
  Assume that each data segments are relative to text segment at load time.
  Therefore, it permits addressing data using PC-relative operations.
! This option is on by default for targets other than VxWorks \s-1RTP\s0.
  .IP "\fB\-mpoke\-function\-name\fR" 4
  .IX Item "-mpoke-function-name"
  Write the name of each function into the text section, directly
--- 12365,12371 ----
  .IX Item "-mpic-data-is-text-relative"
  Assume that each data segments are relative to text segment at load time.
  Therefore, it permits addressing data using PC-relative operations.
! This option is on by default for targets other than VxWorks \s-1RTP.\s0
  .IP "\fB\-mpoke\-function\-name\fR" 4
  .IX Item "-mpoke-function-name"
  Write the name of each function into the text section, directly
*************** off by default.
*** 12487,12493 ****
  Assume inline assembler is using unified asm syntax.  The default is
  currently off which implies divided syntax.  Currently this option is
  available only for Thumb1 and has no effect on \s-1ARM\s0 state and 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"
--- 12489,12495 ----
  Assume inline assembler is using unified asm syntax.  The default is
  currently off which implies divided syntax.  Currently this option is
  available only for Thumb1 and has no effect on \s-1ARM\s0 state and 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"
*************** The default for this option is@tie{}\fBa
*** 12556,12592 ****
  .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@tie{}KiB of program memory.
  \&\fImcu\fR\f(CW@tie\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\s0\*(R" devices with more than 8@tie{}KiB and up to 64@tie{}KiB of program memory.
  \&\fImcu\fR\f(CW@tie\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`atxmega8e5\*(C'\fR.
  .ie n .IP """avrxmega4""" 4
  .el .IP "\f(CWavrxmega4\fR" 4
  .IX Item "avrxmega4"
! \&\*(L"\s-1XMEGA\s0\*(R" devices with more than 64@tie{}KiB and up to 128@tie{}KiB of program memory.
  \&\fImcu\fR\f(CW@tie\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.
  .ie n .IP """avrxmega5""" 4
  .el .IP "\f(CWavrxmega5\fR" 4
  .IX Item "avrxmega5"
! \&\*(L"\s-1XMEGA\s0\*(R" devices with more than 64@tie{}KiB and up to 128@tie{}KiB of program memory and more than 64@tie{}KiB of \s-1RAM\s0.
  \&\fImcu\fR\f(CW@tie\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\s0\*(R" devices with more than 128@tie{}KiB of program memory.
  \&\fImcu\fR\f(CW@tie\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\s0\*(R" devices with more than 128@tie{}KiB of program memory and more than 64@tie{}KiB of \s-1RAM\s0.
  \&\fImcu\fR\f(CW@tie\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"\s-1TINY\s0\*(R" Tiny core devices with 512@tie{}B up to 4@tie{}KiB of program memory.
  \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`attiny10\*(C'\fR, \f(CW\*(C`attiny20\*(C'\fR, \f(CW\*(C`attiny4\*(C'\fR, \f(CW\*(C`attiny40\*(C'\fR, \f(CW\*(C`attiny5\*(C'\fR, \f(CW\*(C`attiny9\*(C'\fR.
  .ie n .IP """avr1""" 4
  .el .IP "\f(CWavr1\fR" 4
--- 12558,12594 ----
  .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@tie{}KiB of program memory.
  \&\fImcu\fR\f(CW@tie\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@tie{}KiB and up to 64@tie{}KiB of program memory.
  \&\fImcu\fR\f(CW@tie\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`atxmega8e5\*(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@tie{}KiB and up to 128@tie{}KiB of program memory.
  \&\fImcu\fR\f(CW@tie\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.
  .ie n .IP """avrxmega5""" 4
  .el .IP "\f(CWavrxmega5\fR" 4
  .IX Item "avrxmega5"
! \&\*(L"\s-1XMEGA\*(R"\s0 devices with more than 64@tie{}KiB and up to 128@tie{}KiB of program memory and more than 64@tie{}KiB of \s-1RAM.\s0
  \&\fImcu\fR\f(CW@tie\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@tie{}KiB of program memory.
  \&\fImcu\fR\f(CW@tie\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@tie{}KiB of program memory and more than 64@tie{}KiB of \s-1RAM.\s0
  \&\fImcu\fR\f(CW@tie\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"\s-1TINY\*(R"\s0 Tiny core devices with 512@tie{}B up to 4@tie{}KiB of program memory.
  \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`attiny10\*(C'\fR, \f(CW\*(C`attiny20\*(C'\fR, \f(CW\*(C`attiny4\*(C'\fR, \f(CW\*(C`attiny40\*(C'\fR, \f(CW\*(C`attiny5\*(C'\fR, \f(CW\*(C`attiny9\*(C'\fR.
  .ie n .IP """avr1""" 4
  .el .IP "\f(CWavr1\fR" 4
*************** performed as
*** 12691,12701 ****
  Only change the lower 8@tie{}bits of the stack pointer.
  .IP "\fB\-nodevicelib\fR" 4
  .IX Item "-nodevicelib"
! Don't link against AVR-LibC's device specific library \f(CW\*(C`libdev.a\*(C'\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.
  .PP
  \f(CW\*(C`EIND\*(C'\fR and Devices with More Than 128 Ki Bytes of Flash
  .IX Subsection "EIND and Devices with More Than 128 Ki Bytes of Flash"
--- 12693,12707 ----
  Only change the lower 8@tie{}bits of the stack pointer.
  .IP "\fB\-nodevicelib\fR" 4
  .IX Item "-nodevicelib"
! Don't link against AVR-LibC's device specific library \f(CW\*(C`lib<mcu>.a\*(C'\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 \f(CW\*(C`_\|_vector\*(C'\fR prefix.
+ Enabled by default.
  .PP
  \f(CW\*(C`EIND\*(C'\fR and Devices with More Than 128 Ki Bytes of Flash
  .IX Subsection "EIND and Devices with More Than 128 Ki Bytes of Flash"
*************** command-line option.
*** 12802,12808 ****
  .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
--- 12808,12814 ----
  .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
*************** for \fImcu\fR=\f(CW\*(C`avrtiny\*(C'\fR,
*** 12903,12909 ****
  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_\f(CIDevice\f(CW_\|_""" 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
--- 12909,12915 ----
  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
*************** This macro reflects the \fB\-mno\-interr
*** 13030,13036 ****
  .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
--- 13036,13042 ----
  .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.
*** 13038,13045 ****
  .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\s0, \s-1LAC\s0, \s-1LAS\s0 and \s-1LAT\s0).
! .ie n .IP """_\|_AVR_SFR_OFFSET_\|_=\f(CIoffset\f(CW""" 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
--- 13044,13051 ----
  .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
*************** should be used instead of \f(CW\*(C`main
*** 13222,13229 ****
  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
--- 13228,13235 ----
  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
*************** These options are defined specifically f
*** 13282,13288 ****
  .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 except for cris-axis-linux-gnu, where the default is
  \&\fBv10\fR.
  .IP "\fB\-mtune=\fR\fIarchitecture-type\fR" 4
--- 13288,13294 ----
  .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 except for cris-axis-linux-gnu, where the default is
  \&\fBv10\fR.
  .IP "\fB\-mtune=\fR\fIarchitecture-type\fR" 4
*************** or storage for local variables needs to
*** 13375,13381 ****
  With \fB\-fpic\fR and \fB\-fPIC\fR, don't generate (do generate)
  instruction sequences that load addresses for functions from the \s-1PLT\s0 part
  of the \s-1GOT\s0 rather than (traditional on other architectures) calls to the
! \&\s-1PLT\s0.  The default is \fB\-mgotplt\fR.
  .IP "\fB\-melf\fR" 4
  .IX Item "-melf"
  Legacy no-op option only recognized with the cris-axis-elf and
--- 13381,13387 ----
  With \fB\-fpic\fR and \fB\-fPIC\fR, don't generate (do generate)
  instruction sequences that load addresses for functions from the \s-1PLT\s0 part
  of the \s-1GOT\s0 rather than (traditional on other architectures) calls to the
! \&\s-1PLT.\s0  The default is \fB\-mgotplt\fR.
  .IP "\fB\-melf\fR" 4
  .IX Item "-melf"
  Legacy no-op option only recognized with the cris-axis-elf and
*************** However, \fBfar\fR is not valid with \fB
*** 13431,13437 ****
  These options are defined for all architectures running the Darwin operating
  system.
  .PP
! \&\s-1FSF\s0 \s-1GCC\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
--- 13437,13443 ----
  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
*************** warn about constructs contained within h
*** 13491,13497 ****
  .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.
--- 13497,13503 ----
  .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.
*************** an executable when linking, using the Da
*** 13567,13573 ****
  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\-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"
--- 13573,13579 ----
  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\-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"
*************** before it can find the variables and con
*** 13867,13874 ****
  .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\s0,
! \&\s-1CIX\s0, \s-1FIX\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\-mfloat\-vax\fR" 4
--- 13873,13880 ----
  .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\-mfloat\-vax\fR" 4
*************** of the \s-1CPU\s0 on which \s-1GCC\s0 wa
*** 13877,13883 ****
  .IP "\fB\-mfloat\-ieee\fR" 4
  .IX Item "-mfloat-ieee"
  .PD
! Generate code that uses (does not use) \s-1VAX\s0 F and G floating-point
  arithmetic instead of \s-1IEEE\s0 single and double precision.
  .IP "\fB\-mexplicit\-relocs\fR" 4
  .IX Item "-mexplicit-relocs"
--- 13883,13889 ----
  .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"
*************** The default is \fB\-mlarge\-text\fR.
*** 13932,13938 ****
  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\s0, \s-1EV5\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.
--- 13938,13944 ----
  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.
*************** Schedules as an \s-1EV5\s0 and supports
*** 13977,13990 ****
  .IP "\fB21264\fR" 4
  .IX Item "21264"
  .PD
! Schedules as an \s-1EV6\s0 and supports the \s-1BWX\s0, \s-1FIX\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\s0, \s-1CIX\s0, \s-1FIX\s0, and \s-1MAX\s0 extensions.
  .RE
  .RS 4
  .Sp
--- 13983,13996 ----
  .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
*************** A decimal number representing clock cycl
*** 14025,14033 ****
  .IX Item "main"
  .PD
  The compiler contains estimates of the number of clock cycles for
! \&\*(L"typical\*(R" \s-1EV4\s0 & \s-1EV5\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
--- 14031,14039 ----
  .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
*************** Use multiply and add/subtract instructio
*** 14100,14106 ****
  Do not use multiply and add/subtract instructions.
  .IP "\fB\-mfdpic\fR" 4
  .IX Item "-mfdpic"
! Select the \s-1FDPIC\s0 \s-1ABI\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
--- 14106,14112 ----
  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
*************** Assume a large \s-1TLS\s0 segment when g
*** 14123,14129 ****
  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\s0 \s-1ABI\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.
--- 14129,14135 ----
  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.
*************** Select the processor type for which to g
*** 14267,14273 ****
  These \fB\-m\fR options are defined for GNU/Linux targets:
  .IP "\fB\-mglibc\fR" 4
  .IX Item "-mglibc"
! Use the \s-1GNU\s0 C library.  This is the default except
  on \fB*\-*\-linux\-*uclibc*\fR and \fB*\-*\-linux\-*android*\fR targets.
  .IP "\fB\-muclibc\fR" 4
  .IX Item "-muclibc"
--- 14273,14279 ----
  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 and \fB*\-*\-linux\-*android*\fR targets.
  .IP "\fB\-muclibc\fR" 4
  .IX Item "-muclibc"
*************** These \fB\-m\fR options are defined for
*** 14346,14353 ****
  .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\s0 1.0, \fB1.1\fR for \s-1PA\s0
! 1.1, and \fB2.0\fR for \s-1PA\s0 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
--- 14352,14359 ----
  .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
*************** floating-point operations, the compiler
*** 14373,14379 ****
  .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\-mno\-space\-regs\fR" 4
  .IX Item "-mno-space-regs"
  Generate code that assumes the target has no space registers.  This allows
--- 14379,14385 ----
  .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\-mno\-space\-regs\fR" 4
  .IX Item "-mno-space-regs"
  Generate code that assumes the target has no space registers.  This allows
*************** cross-compilation.
*** 14430,14442 ****
  \&\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\-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\-mgnu\-ld\fR" 4
  .IX Item "-mgnu-ld"
--- 14436,14448 ----
  \&\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\-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\-mgnu\-ld\fR" 4
  .IX Item "-mgnu-ld"
*************** The \fBld\fR that is called is determine
*** 14450,14456 ****
  \&\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.
--- 14456,14462 ----
  \&\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.
*************** The \fBld\fR that is called is determine
*** 14464,14470 ****
  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\-mlong\-calls\fR" 4
  .IX Item "-mlong-calls"
  Generate code that uses long call sequences.  This ensures that a call
--- 14470,14476 ----
  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\-mlong\-calls\fR" 4
  .IX Item "-mlong-calls"
  Generate code that uses long call sequences.  This ensures that a call
*************** long calls only when the distance from t
*** 14473,14479 ****
  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\s0 2.0 and \s-1PA\s0 1.X architectures.  Sibcalls are always limited at
  240,000 bytes.
  .Sp
  Distances are measured from the beginning of functions when using the
--- 14479,14485 ----
  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
*************** is available on HP-UX 10.10 and later.
*** 14501,14507 ****
  \&\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\s0 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,
--- 14507,14513 ----
  \&\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,
*************** Generate (or don't) code for the \s-1GNU
*** 14567,14573 ****
  .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\s0 \s-1ABI\s0.
  .IP "\fB\-mvolatile\-asm\-stop\fR" 4
  .IX Item "-mvolatile-asm-stop"
  .PD 0
--- 14573,14579 ----
  .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
*************** instructions.  The default is to use the
*** 14647,14653 ****
  .IP "\fB\-mdwarf2\-asm\fR" 4
  .IX Item "-mdwarf2-asm"
  .PD
! Don't (or do) generate assembler code for the \s-1DWARF\s0 2 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"
--- 14653,14659 ----
  .IP "\fB\-mdwarf2\-asm\fR" 4
  .IX Item "-mdwarf2-asm"
  .PD
! Don't (or do) generate assembler code for the \s-1DWARF 2\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"
*************** Specify bit size of immediate \s-1TLS\s0
*** 14671,14677 ****
  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
--- 14677,14683 ----
  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
*************** have to be emulated by software on the 6
*** 15120,15126 ****
  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
--- 15126,15132 ----
  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 wit
*** 15129,15144 ****
  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\s0, \s-1MCF5203\s0, \s-1MCF5204\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"
--- 15135,15150 ----
  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"
*************** The option is now deprecated in favor of
*** 15147,15157 ****
  \&\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"
--- 15153,15163 ----
  \&\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"
*************** The option is equivalent to \fB\-march=6
*** 15182,15195 ****
  .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
--- 15188,15201 ----
  .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
*************** Generate (do not generate) ColdFire hard
*** 15200,15206 ****
  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
--- 15206,15212 ----
  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
*************** that works if the \s-1GOT\s0 has more th
*** 15319,15325 ****
  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:
--- 15325,15331 ----
  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:
*************** useful unless you also provide \fB\-mmin
*** 15461,15467 ****
  Selects one of the built-in core configurations.  Each MeP chip has
  one or more modules in it; each module has a core \s-1CPU\s0 and a variety of
  coprocessors, optional instructions, and peripherals.  The
! \&\f(CW\*(C`MeP\-Integrator\*(C'\fR tool, not part of \s-1GCC\s0, provides these
  configurations through this option; using this option is the same as
  using all the corresponding command-line options.  The default
  configuration is \fBdefault\fR.
--- 15467,15473 ----
  Selects one of the built-in core configurations.  Each MeP chip has
  one or more modules in it; each module has a core \s-1CPU\s0 and a variety of
  coprocessors, optional instructions, and peripherals.  The
! \&\f(CW\*(C`MeP\-Integrator\*(C'\fR tool, not part of \s-1GCC,\s0 provides these
  configurations through this option; using this option is the same as
  using all the corresponding command-line options.  The default
  configuration is \fBdefault\fR.
*************** Do not optimize block moves, use \f(CW\*
*** 15564,15570 ****
  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,
--- 15570,15576 ----
  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,
*************** configurations.
*** 15650,15656 ****
  .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\s0 \s-1ISA\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,
--- 15656,15662 ----
  .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,
*************** Equivalent to \fB\-march=mips64r6\fR.
*** 15778,15784 ****
  .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.
--- 15784,15790 ----
  .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.
*************** not intended for ordinary use in compili
*** 15793,15799 ****
  .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\s0 \s-1ISA\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
--- 15799,15805 ----
  .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
*************** and are retained for backwards compatibi
*** 15821,15840 ****
  .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
  <\fBhttp://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\s0, \s-1MIPS32R3\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
--- 15827,15846 ----
  .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
  <\fBhttp://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
*************** a transition from 32\-bit to 64\-bit reg
*** 15849,15855 ****
  (\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
--- 15855,15861 ----
  (\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
*************** executables both smaller and quicker.
*** 15896,15902 ****
  .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
--- 15902,15908 ----
  .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
*************** You can make \fB\-mplt\fR the default by
*** 15911,15917 ****
  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:
--- 15917,15923 ----
  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:
*************** operations.  This is the default.
*** 15979,15986 ****
  .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\s0 \s-1ABI\s0, \fB\-mno\-odd\-spreg\fR
  is set by default.
  .IP "\fB\-mabs=2008\fR" 4
  .IX Item "-mabs=2008"
--- 15985,15992 ----
  .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"
*************** is set by default.
*** 15989,15995 ****
  .IX Item "-mabs=legacy"
  .PD
  These options control the treatment of the special not-a-number (NaN)
! \&\s-1IEEE\s0 754 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
--- 15995,16001 ----
  .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
*************** manipulate the sign bit of floating-poin
*** 16000,16006 ****
  instead unless the \fB\-ffinite\-math\-only\fR option has also been
  specified.
  .Sp
! The \fB\-mabs=2008\fR option selects the \s-1IEEE\s0 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
--- 16006,16012 ----
  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.
*** 16012,16025 ****
  .IX Item "-mnan=legacy"
  .PD
  These options control the encoding of the special not-a-number (NaN)
! \&\s-1IEEE\s0 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 signalling 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\s0 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.
--- 16018,16031 ----
  .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 signalling 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.
*************** configurations; see the installation doc
*** 16049,16055 ****
  .IP "\fB\-mno\-dsp\fR" 4
  .IX Item "-mno-dsp"
  .PD
! Use (do not use) revision 1 of the \s-1MIPS\s0 \s-1DSP\s0 \s-1ASE\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.
--- 16055,16061 ----
  .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.
*************** preprocessor macro \f(CW\*(C`_\|_mips_ds
*** 16059,16065 ****
  .IP "\fB\-mno\-dspr2\fR" 4
  .IX Item "-mno-dspr2"
  .PD
! Use (do not use) revision 2 of the \s-1MIPS\s0 \s-1DSP\s0 \s-1ASE\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.
--- 16065,16071 ----
  .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.
*************** It also defines \f(CW\*(C`_\|_mips_dsp_r
*** 16069,16075 ****
  .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
--- 16075,16081 ----
  .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
*************** hardware floating-point support to be en
*** 16094,16100 ****
  .IP "\fB\-mno\-mips3d\fR" 4
  .IX Item "-mno-mips3d"
  .PD
! Use (do not use) the \s-1MIPS\-3D\s0 \s-1ASE\s0.  
  The option \fB\-mips3d\fR implies \fB\-mpaired\-single\fR.
  .IP "\fB\-mmicromips\fR" 4
  .IX Item "-mmicromips"
--- 16100,16106 ----
  .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"
*************** Use (do not use) \s-1MT\s0 Multithreadin
*** 16119,16125 ****
  .IP "\fB\-mno\-mcu\fR" 4
  .IX Item "-mno-mcu"
  .PD
! Use (do not use) the \s-1MIPS\s0 \s-1MCU\s0 \s-1ASE\s0 instructions.
  .IP "\fB\-meva\fR" 4
  .IX Item "-meva"
  .PD 0
--- 16125,16131 ----
  .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
*************** determined.
*** 16151,16157 ****
  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.
--- 16157,16163 ----
  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.
*************** or the same size as integer registers, w
*** 16162,16168 ****
  .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
--- 16168,16174 ----
  .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
*************** but other instructions must not do so.
*** 16267,16279 ****
  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
--- 16273,16285 ----
  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
*************** The default is \fB\-mcheck\-zero\-divisi
*** 16315,16321 ****
  .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\s0 \s-1II\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
--- 16321,16327 ----
  .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
*************** This option has no effect on abicalls co
*** 16353,16359 ****
  .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
--- 16359,16365 ----
  .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
*************** assembler files (with a \fB.s\fR suffix)
*** 16391,16397 ****
  .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
--- 16397,16403 ----
  .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
*************** otherwise.
*** 16452,16458 ****
  .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
--- 16458,16464 ----
  .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
*************** instructions.  These errata are handled
*** 16479,16485 ****
  .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.
--- 16485,16491 ----
  .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.
*************** instructions are available instead.
*** 16489,16495 ****
  .IP "\fB\-mno\-fix\-sb1\fR" 4
  .IX Item "-mno-fix-sb1"
  .PD
! Work around certain \s-1SB\-1\s0 \s-1CPU\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
--- 16495,16501 ----
  .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
*************** Specifies whether \s-1FP\s0 exceptions a
*** 16603,16609 ****
  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
--- 16609,16615 ----
  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
*************** instructions together if the first one i
*** 16617,16623 ****
  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
--- 16623,16629 ----
  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
*************** to the \f(CW\*(C`rE\*(C'\fR epsilon regi
*** 16706,16712 ****
  .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\s0 \s-1ABI\s0 which uses global registers \f(CW$231\fR and up.
  .IP "\fB\-mzero\-extend\fR" 4
  .IX Item "-mzero-extend"
  .PD 0
--- 16712,16718 ----
  .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
*************** Do not generate code using features spec
*** 16790,16796 ****
  is the default.
  .IP "\fB\-mam33\-2\fR" 4
  .IX Item "-mam33-2"
! Generate code using features specific to the \s-1AM33/2\s0.0 processor.
  .IP "\fB\-mam34\fR" 4
  .IX Item "-mam34"
  Generate code using features specific to the \s-1AM34\s0 processor.
--- 16796,16802 ----
  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.
*************** header file.
*** 16875,16882 ****
  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
--- 16881,16888 ----
  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
*************** This option is also passed on to the ass
*** 16889,16895 ****
  .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
--- 16895,16901 ----
  .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
*************** global pointer.
*** 17066,17072 ****
  .Sp
  The default is \fB\-mgpopt\fR except when \fB\-fpic\fR or
  \&\fB\-fPIC\fR is specified to generate position-independent code.
! Note that the Nios \s-1II\s0 \s-1ABI\s0 does not permit GP-relative accesses from
  shared libraries.
  .Sp
  You may need to specify \fB\-mno\-gpopt\fR explicitly when building
--- 17072,17078 ----
  .Sp
  The default is \fB\-mgpopt\fR except when \fB\-fpic\fR or
  \&\fB\-fPIC\fR is specified to generate position-independent code.
! Note that the Nios \s-1II ABI\s0 does not permit GP-relative accesses from
  shared libraries.
  .Sp
  You may need to specify \fB\-mno\-gpopt\fR explicitly when building
*************** of the default behavior of using a libra
*** 17139,17145 ****
  .Sp
  The following values of \fIinsn\fR are supported.  Except as otherwise
  noted, floating-point operations are expected to be implemented with
! normal \s-1IEEE\s0 754 semantics and correspond directly to the C operators or the
  equivalent \s-1GCC\s0 built-in functions.
  .Sp
  Single-precision floating point:
--- 17145,17151 ----
  .Sp
  The following values of \fIinsn\fR are supported.  Except as otherwise
  noted, floating-point operations are expected to be implemented with
! normal \s-1IEEE 754\s0 semantics and correspond directly to the C operators or the
  equivalent \s-1GCC\s0 built-in functions.
  .Sp
  Single-precision floating point:
*************** configuration by using the \f(CW\*(C`tar
*** 17298,17311 ****
  function attribute
  or pragma.
  .PP
! These additional \fB\-m\fR options are available for the Altera Nios \s-1II\s0
! \&\s-1ELF\s0 (bare-metal) target:
  .IP "\fB\-mhal\fR" 4
  .IX Item "-mhal"
! Link with \s-1HAL\s0 \s-1BSP\s0.  This suppresses linking with the GCC-provided C runtime
  startup and termination code, and is typically used in conjunction with
  \&\fB\-msys\-crt0=\fR to specify the location of the alternate startup code
! provided by the \s-1HAL\s0 \s-1BSP\s0.
  .IP "\fB\-msmallc\fR" 4
  .IX Item "-msmallc"
  Link with a limited version of the C library, \fB\-lsmallc\fR, rather than
--- 17304,17317 ----
  function attribute
  or pragma.
  .PP
! These additional \fB\-m\fR options are available for the Altera Nios \s-1II
! ELF\s0 (bare-metal) target:
  .IP "\fB\-mhal\fR" 4
  .IX Item "-mhal"
! Link with \s-1HAL BSP.\s0  This suppresses linking with the GCC-provided C runtime
  startup and termination code, and is typically used in conjunction with
  \&\fB\-msys\-crt0=\fR to specify the location of the alternate startup code
! provided by the \s-1HAL BSP.\s0
  .IP "\fB\-msmallc\fR" 4
  .IX Item "-msmallc"
  Link with a limited version of the C library, \fB\-lsmallc\fR, rather than
*************** when linking.  This option is only usefu
*** 17319,17325 ****
  \&\fIsystemlib\fR is the library name of the library that provides
  low-level system calls required by the C library,
  e.g. \f(CW\*(C`read\*(C'\fR and \f(CW\*(C`write\*(C'\fR.
! This option is typically used to link with a library provided by a \s-1HAL\s0 \s-1BSP\s0.
  .PP
  \fINvidia \s-1PTX\s0 Options\fR
  .IX Subsection "Nvidia PTX Options"
--- 17325,17331 ----
  \&\fIsystemlib\fR is the library name of the library that provides
  low-level system calls required by the C library,
  e.g. \f(CW\*(C`read\*(C'\fR and \f(CW\*(C`write\*(C'\fR.
! This option is typically used to link with a library provided by a \s-1HAL BSP.\s0
  .PP
  \fINvidia \s-1PTX\s0 Options\fR
  .IX Subsection "Nvidia PTX Options"
*************** These options are defined for Nvidia \s-
*** 17331,17337 ****
  .IP "\fB\-m64\fR" 4
  .IX Item "-m64"
  .PD
! Generate code for 32\-bit or 64\-bit \s-1ABI\s0.
  .IP "\fB\-mmainkernel\fR" 4
  .IX Item "-mmainkernel"
  Link in code for a _\|_main kernel.  This is for stand-alone instead of
--- 17337,17343 ----
  .IP "\fB\-m64\fR" 4
  .IX Item "-m64"
  .PD
! Generate code for 32\-bit or 64\-bit \s-1ABI.\s0
  .IP "\fB\-mmainkernel\fR" 4
  .IX Item "-mmainkernel"
  Link in code for a _\|_main kernel.  This is for stand-alone instead of
*************** Return floating-point results in ac0 (fr
*** 17356,17368 ****
  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.
  .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.
  .IP "\fB\-mbcopy\-builtin\fR" 4
  .IX Item "-mbcopy-builtin"
  Use inline \f(CW\*(C`movmemhi\*(C'\fR patterns for copying memory.  This is the
--- 17362,17374 ----
  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
  .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
  .IP "\fB\-mbcopy\-builtin\fR" 4
  .IX Item "-mbcopy-builtin"
  Use inline \f(CW\*(C`movmemhi\*(C'\fR patterns for copying memory.  This is the
*************** for \fIae_type\fR are \fB\s-1ANY\s0\fR,
*** 17434,17447 ****
  generated with this option runs on any of the other \s-1AE\s0 types.  The
  code is not as efficient as it would be if compiled for a specific
  \&\s-1AE\s0 type, and some types of operation (e.g., multiplication) do not
! work properly on all types of \s-1AE\s0.
  .Sp
! \&\fB\-mae=MUL\fR selects a \s-1MUL\s0 \s-1AE\s0 type.  This is the most useful \s-1AE\s0 type
  for compiled code, and is the default.
  .Sp
! \&\fB\-mae=MAC\fR selects a DSP-style \s-1MAC\s0 \s-1AE\s0.  Code compiled with this
  option may suffer from poor performance of byte (char) manipulation,
! since the \s-1DSP\s0 \s-1AE\s0 does not provide hardware support for byte load/stores.
  .IP "\fB\-msymbol\-as\-address\fR" 4
  .IX Item "-msymbol-as-address"
  Enable the compiler to directly use a symbol name as an address in a
--- 17440,17453 ----
  generated with this option runs on any of the other \s-1AE\s0 types.  The
  code is not as efficient as it would be if compiled for a specific
  \&\s-1AE\s0 type, and some types of operation (e.g., multiplication) do not
! work properly on all types of \s-1AE.\s0
  .Sp
! \&\fB\-mae=MUL\fR selects a \s-1MUL AE\s0 type.  This is the most useful \s-1AE\s0 type
  for compiled code, and is the default.
  .Sp
! \&\fB\-mae=MAC\fR selects a DSP-style \s-1MAC AE.\s0  Code compiled with this
  option may suffer from poor performance of byte (char) manipulation,
! since the \s-1DSP AE\s0 does not provide hardware support for byte load/stores.
  .IP "\fB\-msymbol\-as\-address\fR" 4
  .IX Item "-msymbol-as-address"
  Enable the compiler to directly use a symbol name as an address in a
*************** rather than being permanently enabled.
*** 17454,17460 ****
  .IX Item "-mno-inefficient-warnings"
  Disables warnings about the generation of inefficient code.  These
  warnings can be generated, for example, when compiling code that
! performs byte-level memory operations on the \s-1MAC\s0 \s-1AE\s0 type.  The \s-1MAC\s0 \s-1AE\s0 has
  no hardware support for byte-level memory operations, so all byte
  load/stores must be synthesized from word load/store operations.  This is
  inefficient and a warning is generated to indicate
--- 17460,17466 ----
  .IX Item "-mno-inefficient-warnings"
  Disables warnings about the generation of inefficient code.  These
  warnings can be generated, for example, when compiling code that
! performs byte-level memory operations on the \s-1MAC AE\s0 type.  The \s-1MAC AE\s0 has
  no hardware support for byte-level memory operations, so all byte
  load/stores must be synthesized from word load/store operations.  This is
  inefficient and a warning is generated to indicate
*************** Make the \f(CW\*(C`double\*(C'\fR data t
*** 17496,17505 ****
  or 32 bits (\fB\-m32bit\-doubles\fR) in size.  The default is
  \&\fB\-m32bit\-doubles\fR.
  .PP
! \fI\s-1IBM\s0 \s-1RS/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\s0 \s-1RS/6000\s0 and PowerPC:
  .IP "\fB\-mpowerpc\-gpopt\fR" 4
  .IX Item "-mpowerpc-gpopt"
  .PD 0
--- 17502,17511 ----
  or 32 bits (\fB\-m32bit\-doubles\fR) in size.  The default is
  \&\fB\-m32bit\-doubles\fR.
  .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
*************** These \fB\-m\fR options are defined for
*** 17544,17550 ****
  .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.
--- 17550,17556 ----
  .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.
*************** following options:
*** 17617,17623 ****
  \&\-mpopcntb \-mpopcntd  \-mpowerpc64 
  \&\-mpowerpc\-gpopt  \-mpowerpc\-gfxopt  \-msingle\-float \-mdouble\-float 
  \&\-msimple\-fpu \-mstring  \-mmulhw  \-mdlmzb  \-mmfpgpr \-mvsx 
! \&\-mcrypto \-mdirect\-move \-mpower8\-fusion \-mpower8\-vector 
  \&\-mquad\-memory \-mquad\-memory\-atomic\fR
  .Sp
  The particular options set for any particular \s-1CPU\s0 varies between
--- 17623,17629 ----
  \&\-mpopcntb \-mpopcntd  \-mpowerpc64 
  \&\-mpowerpc\-gpopt  \-mpowerpc\-gfxopt  \-msingle\-float \-mdouble\-float 
  \&\-msimple\-fpu \-mstring  \-mmulhw  \-mdlmzb  \-mmfpgpr \-mvsx 
! \&\-mcrypto \-mdirect\-move \-mhtm \-mpower8\-fusion \-mpower8\-vector 
  \&\-mquad\-memory \-mquad\-memory\-atomic\fR
  .Sp
  The particular options set for any particular \s-1CPU\s0 varies between
*************** capabilities.  If you wish to set an ind
*** 17627,17633 ****
  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
--- 17633,17639 ----
  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
*************** Generate code that allows \fBld\fR and \
*** 17715,17728 ****
  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\s0 \s-1ABI\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\s0 \s-1ABI\s0 option.
  .IP "\fB\-misel\fR" 4
  .IX Item "-misel"
  .PD 0
--- 17721,17734 ----
  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\-misel\fR" 4
  .IX Item "-misel"
  .PD 0
*************** more direct access to the \s-1VSX\s0 ins
*** 17771,17777 ****
  .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\-mdirect\-move\fR" 4
  .IX Item "-mdirect-move"
  .PD 0
--- 17777,17783 ----
  .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\-mdirect\-move\fR" 4
  .IX Item "-mdirect-move"
  .PD 0
*************** access to the cryptographic instructions
*** 17780,17786 ****
  .PD
  Generate code that uses (does not use) the instructions to move data
  between the general purpose registers and the vector/scalar (\s-1VSX\s0)
! registers 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
--- 17786,17801 ----
  .PD
  Generate code that uses (does not use) the instructions to move data
  between the general purpose registers and the vector/scalar (\s-1VSX\s0)
! registers 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
*************** later processors.
*** 17797,17803 ****
  .IX Item "-mno-power8-vector"
  .PD
  Generate code that uses (does not use) the vector and scalar
! instructions that were added in version 2.07 of the PowerPC \s-1ISA\s0.  Also
  enable the use of built-in functions that allow more direct access to
  the vector instructions.
  .IP "\fB\-mquad\-memory\fR" 4
--- 17812,17818 ----
  .IX Item "-mno-power8-vector"
  .PD
  Generate code that uses (does not use) the vector and scalar
! instructions that were added in version 2.07 of the PowerPC \s-1ISA.\s0  Also
  enable the use of built-in functions that allow more direct access to
  the vector instructions.
  .IP "\fB\-mquad\-memory\fR" 4
*************** instructions.  The \fB\-mquad\-memory\-a
*** 17827,17833 ****
  Generate code that uses (does not use) the scalar double precision
  instructions that target all 64 registers in the vector/scalar
  floating point register set that were added in version 2.06 of the
! PowerPC \s-1ISA\s0.  \fB\-mupper\-regs\-df\fR is turned on by default if you
  use any of the \fB\-mcpu=power7\fR, \fB\-mcpu=power8\fR, or
  \&\fB\-mvsx\fR options.
  .IP "\fB\-mupper\-regs\-sf\fR" 4
--- 17842,17848 ----
  Generate code that uses (does not use) the scalar double precision
  instructions that target all 64 registers in the vector/scalar
  floating point register set that were added in version 2.06 of the
! PowerPC \s-1ISA.\s0  \fB\-mupper\-regs\-df\fR is turned on by default if you
  use any of the \fB\-mcpu=power7\fR, \fB\-mcpu=power8\fR, or
  \&\fB\-mvsx\fR options.
  .IP "\fB\-mupper\-regs\-sf\fR" 4
*************** use any of the \fB\-mcpu=power7\fR, \fB\
*** 17839,17845 ****
  Generate code that uses (does not use) the scalar single precision
  instructions that target all 64 registers in the vector/scalar
  floating point register set that were added in version 2.07 of the
! PowerPC \s-1ISA\s0.  \fB\-mupper\-regs\-sf\fR is turned on by default if you
  use either of the \fB\-mcpu=power8\fR or \fB\-mpower8\-vector\fR
  options.
  .IP "\fB\-mupper\-regs\fR" 4
--- 17854,17860 ----
  Generate code that uses (does not use) the scalar single precision
  instructions that target all 64 registers in the vector/scalar
  floating point register set that were added in version 2.07 of the
! PowerPC \s-1ISA.\s0  \fB\-mupper\-regs\-sf\fR is turned on by default if you
  use either of the \fB\-mcpu=power8\fR or \fB\-mpower8\-vector\fR
  options.
  .IP "\fB\-mupper\-regs\fR" 4
*************** Modify generation of the \s-1TOC\s0 (Tab
*** 17900,17907 ****
  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
--- 17915,17922 ----
  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 \f
*** 17909,17915 ****
  \&\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
--- 17924,17930 ----
  \&\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
*************** only on files that contain less frequent
*** 17925,17931 ****
  .IP "\fB\-maix32\fR" 4
  .IX Item "-maix32"
  .PD
! Enable 64\-bit \s-1AIX\s0 \s-1ABI\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
--- 17940,17946 ----
  .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
*** 17936,17943 ****
  .IP "\fB\-mno\-xl\-compat\fR" 4
  .IX Item "-mno-xl-compat"
  .PD
! Produce code that conforms more closely to \s-1IBM\s0 \s-1XL\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
--- 17951,17958 ----
  .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
*************** support routines.
*** 17946,17961 ****
  .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\s0 \s-1XL\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\s0
! \&\s-1XL\s0 compilers without optimization.
  .IP "\fB\-mpe\fR" 4
  .IX Item "-mpe"
! Support \fI\s-1IBM\s0 \s-1RS/6000\s0 \s-1SP\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
--- 17961,17976 ----
  .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
*************** option are incompatible.
*** 17969,17979 ****
  .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.
--- 17984,17994 ----
  .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.
*************** Specify type of floating-point unit.  Va
*** 18007,18013 ****
  and \fBdp_full\fR (equivalent to \fB\-mdouble\-float\fR).
  .IP "\fB\-mxilinx\-fpu\fR" 4
  .IX Item "-mxilinx-fpu"
! Perform optimizations for the floating-point unit on Xilinx \s-1PPC\s0 405/440.
  .IP "\fB\-mmultiple\fR" 4
  .IX Item "-mmultiple"
  .PD 0
--- 18022,18028 ----
  and \fBdp_full\fR (equivalent to \fB\-mdouble\-float\fR).
  .IP "\fB\-mxilinx\-fpu\fR" 4
  .IX Item "-mxilinx-fpu"
! Perform optimizations for the floating-point unit on Xilinx \s-1PPC 405/440.\s0
  .IP "\fB\-mmultiple\fR" 4
  .IX Item "-mmultiple"
  .PD 0
*************** mapped to \fB\-ffp\-contract=off\fR.
*** 18078,18084 ****
  .IX Item "-mno-mulhw"
  .PD
  Generate code that uses (does not use) the half-word multiply and
! multiply-accumulate instructions on the \s-1IBM\s0 405, 440, 464 and 476 processors.
  These instructions are generated by default when targeting those
  processors.
  .IP "\fB\-mdlmzb\fR" 4
--- 18093,18099 ----
  .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
*************** processors.
*** 18088,18094 ****
  .IX Item "-mno-dlmzb"
  .PD
  Generate code that uses (does not use) the string-search \fBdlmzb\fR
! instruction on the \s-1IBM\s0 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"
--- 18103,18109 ----
  .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"
*************** processor in big-endian mode.  The \fB\-
*** 18168,18174 ****
  the same as \fB\-mbig\fR.
  .IP "\fB\-mdynamic\-no\-pic\fR" 4
  .IX Item "-mdynamic-no-pic"
! On Darwin and Mac \s-1OS\s0 X 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.
--- 18183,18189 ----
  the same as \fB\-mbig\fR.
  .IP "\fB\-mdynamic\-no\-pic\fR" 4
  .IX Item "-mdynamic-no-pic"
! On Darwin and Mac \s-1OS X\s0 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.
*************** On System V.4 and embedded PowerPC syste
*** 18274,18284 ****
  OpenBSD operating system.
  .IP "\fB\-maix\-struct\-return\fR" 4
  .IX Item "-maix-struct-return"
! Return all structures in memory (as specified by the \s-1AIX\s0 \s-1ABI\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\s0 \s-1ABI\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.
--- 18289,18299 ----
  OpenBSD operating system.
  .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-al
*** 18287,18315 ****
  \&\fBelfv1\fR, \fBelfv2\fR.
  .IP "\fB\-mabi=spe\fR" 4
  .IX Item "-mabi=spe"
! Extend the current \s-1ABI\s0 with \s-1SPE\s0 \s-1ABI\s0 extensions.  This does not change
! the default \s-1ABI\s0, instead it adds the \s-1SPE\s0 \s-1ABI\s0 extensions to the current
! \&\s-1ABI\s0.
  .IP "\fB\-mabi=no\-spe\fR" 4
  .IX Item "-mabi=no-spe"
! Disable Book-E \s-1SPE\s0 \s-1ABI\s0 extensions for the current \s-1ABI\s0.
  .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 a PowerPC 32\-bit \s-1SYSV\s0 \s-1ABI\s0 option.
  .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 a PowerPC 32\-bit Linux \s-1ABI\s0 option.
  .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.
--- 18302,18330 ----
  \&\fBelfv1\fR, \fBelfv2\fR.
  .IP "\fB\-mabi=spe\fR" 4
  .IX Item "-mabi=spe"
! Extend the current \s-1ABI\s0 with \s-1SPE ABI\s0 extensions.  This does not change
! the default \s-1ABI,\s0 instead it adds the \s-1SPE ABI\s0 extensions to the current
! \&\s-1ABI.\s0
  .IP "\fB\-mabi=no\-spe\fR" 4
  .IX Item "-mabi=no-spe"
! Disable Book-E \s-1SPE ABI\s0 extensions for the current \s-1ABI.\s0
  .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 a PowerPC 32\-bit \s-1SYSV ABI\s0 option.
  .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 a PowerPC 32\-bit Linux \s-1ABI\s0 option.
  .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.
*************** which handle the double-precision recipr
*** 18559,18565 ****
  .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
--- 18574,18580 ----
  .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
*************** pointer.  The \fB\-mno\-save\-toc\-indir
*** 18632,18645 ****
  .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.
  .PP
--- 18647,18660 ----
  .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.
  .PP
*************** values, however, so the \s-1FPU\s0 hardw
*** 18674,18685 ****
  .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\s0 \s-1FPU\s0 instructions are themselves unsafe.
  .IP "\fB\-mcpu=\fR\fIname\fR" 4
  .IX Item "-mcpu=name"
! Selects the type of \s-1RX\s0 \s-1CPU\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.
--- 18689,18700 ----
  .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.
*************** type. This is the default.
*** 18865,18871 ****
  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 2 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
--- 18880,18886 ----
  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 2\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
*************** register is always saved two words below
*** 18897,18903 ****
  .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\s0 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
--- 18912,18918 ----
  .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
*************** which does not have this limitation.
*** 18924,18931 ****
  .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.
--- 18939,18946 ----
  .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.
*************** targets default to \fB\-m64\fR.
*** 18938,18948 ****
  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\-mmvcle\fR" 4
  .IX Item "-mmvcle"
  .PD 0
--- 18953,18963 ----
  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\-mmvcle\fR" 4
  .IX Item "-mmvcle"
  .PD 0
*************** The default is the value used for \fB\-m
*** 18983,18991 ****
  .IP "\fB\-mno\-tpf\-trace\fR" 4
  .IX Item "-mno-tpf-trace"
  .PD
! Generate code that adds (does not add) in \s-1TPF\s0 \s-1OS\s0 specific branches to trace
  routines in the operating system.  This option is off by default, even
! when compiling for the \s-1TPF\s0 \s-1OS\s0.
  .IP "\fB\-mfused\-madd\fR" 4
  .IX Item "-mfused-madd"
  .PD 0
--- 18998,19006 ----
  .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\-mfused\-madd\fR" 4
  .IX Item "-mfused-madd"
  .PD 0
*************** Specify the \s-1SCORE7D\s0 as the target
*** 19078,19093 ****
  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"
--- 19093,19108 ----
  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 assuming
*** 19103,19109 ****
  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.
--- 19118,19124 ----
  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.
*************** Generate code for the \s-1SH4\s0 assumin
*** 19120,19129 ****
  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
--- 19135,19144 ----
  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
*************** Generate code for \s-1SH4\-100\s0 in suc
*** 19138,19144 ****
  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
--- 19153,19159 ----
  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
*************** Generate code for \s-1SH4\-200\s0 in suc
*** 19153,19159 ****
  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
--- 19168,19174 ----
  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
*************** Generate code for \s-1SH4\-300\s0 in suc
*** 19168,19174 ****
  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
--- 19183,19189 ----
  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
*************** Use 32\-bit offsets in \f(CW\*(C`switch\
*** 19235,19241 ****
  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
--- 19250,19256 ----
  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
*************** Dump instruction size and location in th
*** 19282,19288 ****
  .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\s0 \s-1ABI\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
--- 19297,19303 ----
  .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
*************** Generate GNU/Linux compatible gUSA softw
*** 19299,19305 ****
  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.
--- 19314,19320 ----
  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.
*************** For targets other than SHmedia \fIstrate
*** 19442,19461 ****
  .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\s0,
! \&\s-1SH2A\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
--- 19457,19476 ----
  .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
*************** specified separated by a comma.
*** 19489,19498 ****
  Enable the use of the indexed addressing mode for SHmedia32/SHcompact.
  This is only safe if the hardware and/or \s-1OS\s0 implement 32\-bit wrap-around
  semantics for the indexed addressing mode.  The architecture allows the
! implementation of processors with 64\-bit \s-1MMU\s0, which the \s-1OS\s0 could use to
  get 32\-bit addressing, but since no current hardware implementation supports
  this or any other way to make the indexed addressing mode safe to use in
! the 32\-bit \s-1ABI\s0, the default is \fB\-mno\-indexed\-addressing\fR.
  .IP "\fB\-mgettrcost=\fR\fInumber\fR" 4
  .IX Item "-mgettrcost=number"
  Set the cost assumed for the \f(CW\*(C`gettr\*(C'\fR instruction to \fInumber\fR.
--- 19504,19513 ----
  Enable the use of the indexed addressing mode for SHmedia32/SHcompact.
  This is only safe if the hardware and/or \s-1OS\s0 implement 32\-bit wrap-around
  semantics for the indexed addressing mode.  The architecture allows the
! implementation of processors with 64\-bit \s-1MMU,\s0 which the \s-1OS\s0 could use to
  get 32\-bit addressing, but since no current hardware implementation supports
  this or any other way to make the indexed addressing mode safe to use in
! the 32\-bit \s-1ABI,\s0 the default is \fB\-mno\-indexed\-addressing\fR.
  .IP "\fB\-mgettrcost=\fR\fInumber\fR" 4
  .IX Item "-mgettrcost=number"
  Set the cost assumed for the \f(CW\*(C`gettr\*(C'\fR instruction to \fInumber\fR.
*************** the compiler are always valid to load wi
*** 19529,19535 ****
  but with assembler and/or linker tricks it is possible
  to generate symbols that cause \f(CW\*(C`ptabs\*(C'\fR or \f(CW\*(C`ptrel\*(C'\fR to trap.
  This option is only meaningful when \fB\-mno\-pt\-fixed\fR is in effect.
! It prevents cross-basic-block \s-1CSE\s0, hoisting and most scheduling
  of symbol loads.  The default is \fB\-mno\-invalid\-symbols\fR.
  .IP "\fB\-mbranch\-cost=\fR\fInum\fR" 4
  .IX Item "-mbranch-cost=num"
--- 19544,19550 ----
  but with assembler and/or linker tricks it is possible
  to generate symbols that cause \f(CW\*(C`ptabs\*(C'\fR or \f(CW\*(C`ptrel\*(C'\fR to trap.
  This option is only meaningful when \fB\-mno\-pt\-fixed\fR is in effect.
! It prevents cross-basic-block \s-1CSE,\s0 hoisting and most scheduling
  of symbol loads.  The default is \fB\-mno\-invalid\-symbols\fR.
  .IP "\fB\-mbranch\-cost=\fR\fInum\fR" 4
  .IX Item "-mbranch-cost=num"
*************** is being compiled for.
*** 19546,19559 ****
  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 can't 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
--- 19561,19574 ----
  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 can't 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
*************** mapped to \fB\-ffp\-contract=off\fR.
*** 19575,19581 ****
  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"
--- 19590,19596 ----
  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"
*************** Allow or disallow the compiler to emit t
*** 19587,19593 ****
  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
--- 19602,19608 ----
  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
*************** These \fB\-m\fR options are supported on
*** 19641,19647 ****
  .IX Item "-mapp-regs"
  .PD
  Specify \fB\-mapp\-regs\fR to generate output using the global registers
! 2 through 4, which the \s-1SPARC\s0 \s-1SVR4\s0 \s-1ABI\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
--- 19656,19662 ----
  .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
*************** cross-compilation.  The embedded targets
*** 19687,19693 ****
  \&\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"
--- 19702,19708 ----
  \&\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"
*************** instructions.
*** 19697,19703 ****
  .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\s0 \s-1ABI\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
--- 19712,19718 ----
  .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
*************** With \fB\-mfaster\-structs\fR, the compi
*** 19738,19747 ****
  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\s0
! \&\s-1ABI\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\-mcpu=\fR\fIcpu_type\fR" 4
  .IX Item "-mcpu=cpu_type"
  Set the instruction set, register set, and instruction scheduling parameters
--- 19753,19762 ----
  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\-mcpu=\fR\fIcpu_type\fR" 4
  .IX Item "-mcpu=cpu_type"
  Set the instruction set, register set, and instruction scheduling parameters
*************** SPARCStation 1, 2, \s-1IPX\s0 etc.
*** 19791,19812 ****
  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
--- 19806,19827 ----
  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
*************** toolchains, \fBnative\fR can also be use
*** 19843,19849 ****
  .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+\s0 \s-1ABI\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.
--- 19858,19864 ----
  .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.
*************** This option suppresses generation of the
*** 20298,20306 ****
  v850e, v850e1, v850e2, v850e2v3 and v850e3v5 flavors of the v850
  architecture.
  .Sp
! This option is enabled by default when the \s-1RH850\s0 \s-1ABI\s0 is
  in use (see \fB\-mrh850\-abi\fR), and disabled by default when the
! \&\s-1GCC\s0 \s-1ABI\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"
--- 20313,20321 ----
  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"
*************** selected because its use is still experi
*** 20340,20346 ****
  .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
--- 20355,20361 ----
  .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
*************** When this version of the \s-1ABI\s0 is e
*** 20365,20371 ****
  .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
--- 20380,20386 ----
  .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
*************** Generate code containing library calls f
*** 20460,20466 ****
  \&\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"
--- 20475,20481 ----
  \&\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"
*************** the access to general registers.  This i
*** 20488,20495 ****
  .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"
--- 20503,20510 ----
  .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"
*************** produces code optimized for the local ma
*** 20572,20581 ****
  of the selected instruction set.
  .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
--- 20587,20596 ----
  of the selected instruction set.
  .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
*************** Intel i486 \s-1CPU\s0.  (No scheduling i
*** 20585,20594 ****
  Intel Pentium \s-1CPU\s0 with no \s-1MMX\s0 support.
  .IP "\fBpentium-mmx\fR" 4
  .IX Item "pentium-mmx"
! Intel Pentium \s-1MMX\s0 \s-1CPU\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.
  .IP "\fBi686\fR" 4
  .IX Item "i686"
  When used with \fB\-march\fR, the Pentium Pro
--- 20600,20609 ----
  Intel Pentium \s-1CPU\s0 with no \s-1MMX\s0 support.
  .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
  .IP "\fBi686\fR" 4
  .IX Item "i686"
  When used with \fB\-march\fR, the Pentium Pro
*************** instruction set is used, so the code run
*** 20596,20602 ****
  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\s0 \s-1CPU\s0, based on Pentium Pro core with \s-1MMX\s0 instruction set
  support.
  .IP "\fBpentium3\fR" 4
  .IX Item "pentium3"
--- 20611,20617 ----
  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 instruction set
  support.
  .IP "\fBpentium3\fR" 4
  .IX Item "pentium3"
*************** support.
*** 20604,20692 ****
  .IP "\fBpentium3m\fR" 4
  .IX Item "pentium3m"
  .PD
! Intel Pentium \s-1III\s0 \s-1CPU\s0, based on Pentium Pro core with \s-1MMX\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\s0 \s-1CPU\s0
! with \s-1MMX\s0, \s-1SSE\s0 and \s-1SSE2\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\s0, \s-1SSE\s0 and \s-1SSE2\s0 instruction set support.
  .IP "\fBprescott\fR" 4
  .IX Item "prescott"
! Improved version of Intel Pentium 4 \s-1CPU\s0 with \s-1MMX\s0, \s-1SSE\s0, \s-1SSE2\s0 and \s-1SSE3\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\s0, \s-1SSE\s0,
! \&\s-1SSE2\s0 and \s-1SSE3\s0 instruction set support.
  .IP "\fBcore2\fR" 4
  .IX Item "core2"
! Intel Core 2 \s-1CPU\s0 with 64\-bit extensions, \s-1MMX\s0, \s-1SSE\s0, \s-1SSE2\s0, \s-1SSE3\s0 and \s-1SSSE3\s0
  instruction set support.
  .IP "\fBnehalem\fR" 4
  .IX Item "nehalem"
! Intel Nehalem \s-1CPU\s0 with 64\-bit extensions, \s-1MMX\s0, \s-1SSE\s0, \s-1SSE2\s0, \s-1SSE3\s0, \s-1SSSE3\s0,
! \&\s-1SSE4\s0.1, \s-1SSE4\s0.2 and \s-1POPCNT\s0 instruction set support.
  .IP "\fBwestmere\fR" 4
  .IX Item "westmere"
! Intel Westmere \s-1CPU\s0 with 64\-bit extensions, \s-1MMX\s0, \s-1SSE\s0, \s-1SSE2\s0, \s-1SSE3\s0, \s-1SSSE3\s0,
! \&\s-1SSE4\s0.1, \s-1SSE4\s0.2, \s-1POPCNT\s0, \s-1AES\s0 and \s-1PCLMUL\s0 instruction set support.
  .IP "\fBsandybridge\fR" 4
  .IX Item "sandybridge"
! Intel Sandy Bridge \s-1CPU\s0 with 64\-bit extensions, \s-1MMX\s0, \s-1SSE\s0, \s-1SSE2\s0, \s-1SSE3\s0, \s-1SSSE3\s0,
! \&\s-1SSE4\s0.1, \s-1SSE4\s0.2, \s-1POPCNT\s0, \s-1AVX\s0, \s-1AES\s0 and \s-1PCLMUL\s0 instruction set support.
  .IP "\fBivybridge\fR" 4
  .IX Item "ivybridge"
! Intel Ivy Bridge \s-1CPU\s0 with 64\-bit extensions, \s-1MMX\s0, \s-1SSE\s0, \s-1SSE2\s0, \s-1SSE3\s0, \s-1SSSE3\s0,
! \&\s-1SSE4\s0.1, \s-1SSE4\s0.2, \s-1POPCNT\s0, \s-1AVX\s0, \s-1AES\s0, \s-1PCLMUL\s0, \s-1FSGSBASE\s0, \s-1RDRND\s0 and F16C
  instruction set support.
  .IP "\fBhaswell\fR" 4
  .IX Item "haswell"
! Intel Haswell \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE\s0, \s-1MMX\s0, \s-1SSE\s0, \s-1SSE2\s0, \s-1SSE3\s0, \s-1SSSE3\s0,
! \&\s-1SSE4\s0.1, \s-1SSE4\s0.2, \s-1POPCNT\s0, \s-1AVX\s0, \s-1AVX2\s0, \s-1AES\s0, \s-1PCLMUL\s0, \s-1FSGSBASE\s0, \s-1RDRND\s0, \s-1FMA\s0,
! \&\s-1BMI\s0, \s-1BMI2\s0 and F16C instruction set support.
  .IP "\fBbroadwell\fR" 4
  .IX Item "broadwell"
! Intel Broadwell \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE\s0, \s-1MMX\s0, \s-1SSE\s0, \s-1SSE2\s0, \s-1SSE3\s0, \s-1SSSE3\s0,
! \&\s-1SSE4\s0.1, \s-1SSE4\s0.2, \s-1POPCNT\s0, \s-1AVX\s0, \s-1AVX2\s0, \s-1AES\s0, \s-1PCLMUL\s0, \s-1FSGSBASE\s0, \s-1RDRND\s0, \s-1FMA\s0,
! \&\s-1BMI\s0, \s-1BMI2\s0, F16C, \s-1RDSEED\s0, \s-1ADCX\s0 and \s-1PREFETCHW\s0 instruction set support.
  .IP "\fBbonnell\fR" 4
  .IX Item "bonnell"
! Intel Bonnell \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE\s0, \s-1MMX\s0, \s-1SSE\s0, \s-1SSE2\s0, \s-1SSE3\s0 and \s-1SSSE3\s0
  instruction set support.
  .IP "\fBsilvermont\fR" 4
  .IX Item "silvermont"
! Intel Silvermont \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE\s0, \s-1MMX\s0, \s-1SSE\s0, \s-1SSE2\s0, \s-1SSE3\s0, \s-1SSSE3\s0,
! \&\s-1SSE4\s0.1, \s-1SSE4\s0.2, \s-1POPCNT\s0, \s-1AES\s0, \s-1PCLMUL\s0 and \s-1RDRND\s0 instruction set support.
  .IP "\fBknl\fR" 4
  .IX Item "knl"
! Intel Knight's Landing \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE\s0, \s-1MMX\s0, \s-1SSE\s0, \s-1SSE2\s0, \s-1SSE3\s0,
! \&\s-1SSSE3\s0, \s-1SSE4\s0.1, \s-1SSE4\s0.2, \s-1POPCNT\s0, \s-1AVX\s0, \s-1AVX2\s0, \s-1AES\s0, \s-1PCLMUL\s0, \s-1FSGSBASE\s0, \s-1RDRND\s0, \s-1FMA\s0,
! \&\s-1BMI\s0, \s-1BMI2\s0, F16C, \s-1RDSEED\s0, \s-1ADCX\s0, \s-1PREFETCHW\s0, \s-1AVX512F\s0, \s-1AVX512PF\s0, \s-1AVX512ER\s0 and
  \&\s-1AVX512CD\s0 instruction set support.
  .IP "\fBk6\fR" 4
  .IX Item "k6"
! \&\s-1AMD\s0 K6 \s-1CPU\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\s0 K6 \s-1CPU\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"
--- 20619,20707 ----
  .IP "\fBpentium3m\fR" 4
  .IX Item "pentium3m"
  .PD
! Intel Pentium \s-1III CPU,\s0 based on Pentium Pro core with \s-1MMX\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\s0 and \s-1SSE2\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\s0 and \s-1SSE2\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\s0 and \s-1SSE3\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\s0 and \s-1SSE3\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\s0 and \s-1SSSE3\s0
  instruction set support.
  .IP "\fBnehalem\fR" 4
  .IX Item "nehalem"
! Intel Nehalem \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3, SSSE3,
! SSE4.1, SSE4.2\s0 and \s-1POPCNT\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, AES\s0 and \s-1PCLMUL\s0 instruction set support.
  .IP "\fBsandybridge\fR" 4
  .IX Item "sandybridge"
! Intel Sandy Bridge \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3, SSSE3,
! SSE4.1, SSE4.2, POPCNT, AVX, AES\s0 and \s-1PCLMUL\s0 instruction set support.
  .IP "\fBivybridge\fR" 4
  .IX Item "ivybridge"
! Intel Ivy Bridge \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3, SSSE3,
! SSE4.1, SSE4.2, POPCNT, AVX, AES, PCLMUL, FSGSBASE, RDRND\s0 and F16C
  instruction set support.
  .IP "\fBhaswell\fR" 4
  .IX Item "haswell"
! Intel Haswell \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE, MMX, SSE, SSE2, SSE3, SSSE3,
! SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA,
! BMI, BMI2\s0 and F16C instruction set support.
  .IP "\fBbroadwell\fR" 4
  .IX Item "broadwell"
! Intel Broadwell \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE, MMX, SSE, SSE2, SSE3, SSSE3,
! SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA,
! BMI, BMI2, F16C, RDSEED, ADCX\s0 and \s-1PREFETCHW\s0 instruction set support.
  .IP "\fBbonnell\fR" 4
  .IX Item "bonnell"
! 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"
! Intel Silvermont \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE, MMX, SSE, SSE2, SSE3, SSSE3,
! SSE4.1, SSE4.2, POPCNT, AES, PCLMUL\s0 and \s-1RDRND\s0 instruction set support.
  .IP "\fBknl\fR" 4
  .IX Item "knl"
! Intel Knight's Landing \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE, MMX, SSE, SSE2, SSE3,
! SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA,
! BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, AVX512F, AVX512PF, AVX512ER\s0 and
  \&\s-1AVX512CD\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"
*************** support.
*** 20696,20702 ****
  .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"
--- 20711,20717 ----
  .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"
*************** instruction set support.
*** 20708,20716 ****
  .IP "\fBathlon-fx\fR" 4
  .IX Item "athlon-fx"
  .PD
! Processors based on the \s-1AMD\s0 K8 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\s0, \s-1SSE\s0, \s-1SSE2\s0, 3DNow!, enhanced 3DNow! and 64\-bit
  instruction set extensions.)
  .IP "\fBk8\-sse3\fR" 4
  .IX Item "k8-sse3"
--- 20723,20731 ----
  .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"
*************** instruction set extensions.)
*** 20720,20726 ****
  .IP "\fBathlon64\-sse3\fR" 4
  .IX Item "athlon64-sse3"
  .PD
! Improved versions of \s-1AMD\s0 K8 cores with \s-1SSE3\s0 instruction set support.
  .IP "\fBamdfam10\fR" 4
  .IX Item "amdfam10"
  .PD 0
--- 20735,20741 ----
  .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
*************** Improved versions of \s-1AMD\s0 K8 cores
*** 20728,20783 ****
  .IX Item "barcelona"
  .PD
  CPUs based on \s-1AMD\s0 Family 10h cores with x86\-64 instruction set support.  (This
! supersets \s-1MMX\s0, \s-1SSE\s0, \s-1SSE2\s0, \s-1SSE3\s0, \s-1SSE4A\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\s0, \s-1AVX\s0, \s-1XOP\s0, \s-1LWP\s0, \s-1AES\s0, \s-1PCL_MUL\s0, \s-1CX16\s0, \s-1MMX\s0, \s-1SSE\s0, \s-1SSE2\s0, \s-1SSE3\s0, \s-1SSE4A\s0,
! \&\s-1SSSE3\s0, \s-1SSE4\s0.1, \s-1SSE4\s0.2, \s-1ABM\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\s0, \s-1TBM\s0, F16C, \s-1FMA\s0, \s-1FMA4\s0, \s-1AVX\s0, \s-1XOP\s0, \s-1LWP\s0, \s-1AES\s0, \s-1PCL_MUL\s0, \s-1CX16\s0, \s-1MMX\s0,
! \&\s-1SSE\s0, \s-1SSE2\s0, \s-1SSE3\s0, \s-1SSE4A\s0, \s-1SSSE3\s0, \s-1SSE4\s0.1, \s-1SSE4\s0.2, \s-1ABM\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\s0, \s-1TBM\s0, F16C, \s-1FMA\s0, \s-1FMA4\s0, \s-1FSGSBASE\s0, \s-1AVX\s0, \s-1XOP\s0, \s-1LWP\s0, \s-1AES\s0, 
! \&\s-1PCL_MUL\s0, \s-1CX16\s0, \s-1MMX\s0, \s-1SSE\s0, \s-1SSE2\s0, \s-1SSE3\s0, \s-1SSE4A\s0, \s-1SSSE3\s0, \s-1SSE4\s0.1, \s-1SSE4\s0.2, \s-1ABM\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\s0, \s-1BMI2\s0, \s-1TBM\s0, F16C, \s-1FMA\s0, \s-1FMA4\s0, \s-1FSGSBASE\s0, \s-1AVX\s0, \s-1AVX2\s0, \s-1XOP\s0, \s-1LWP\s0, 
! \&\s-1AES\s0, \s-1PCL_MUL\s0, \s-1CX16\s0, \s-1MOVBE\s0, \s-1MMX\s0, \s-1SSE\s0, \s-1SSE2\s0, \s-1SSE3\s0, \s-1SSE4A\s0, \s-1SSSE3\s0, \s-1SSE4\s0.1, 
! \&\s-1SSE4\s0.2, \s-1ABM\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\s0, \s-1SSE\s0, \s-1SSE2\s0, \s-1SSE3\s0, \s-1SSSE3\s0, \s-1SSE4A\s0, \s-1CX16\s0, \s-1ABM\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\s0, F16C, \s-1BMI\s0, \s-1AVX\s0, \s-1PCL_MUL\s0, \s-1AES\s0, \s-1SSE4\s0.2, \s-1SSE4\s0.1, \s-1CX16\s0, \s-1ABM\s0,
! \&\s-1SSE4A\s0, \s-1SSSE3\s0, \s-1SSE3\s0, \s-1SSE2\s0, \s-1SSE\s0, \s-1MMX\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\s0 C3 \s-1CPU\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\s0 C3\-2 (Nehemiah/C5XL) \s-1CPU\s0 with \s-1MMX\s0 and \s-1SSE\s0 instruction set support.
  (No scheduling is
  implemented for this chip.)
  .IP "\fBgeode\fR" 4
--- 20743,20798 ----
  .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, PCL_MUL, 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, PCL_MUL, 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,\s0 
! \&\s-1PCL_MUL, 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,\s0 
! \&\s-1AES, PCL_MUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1,\s0 
! \&\s-1SSE4.2, ABM\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, PCL_MUL, 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 "\fBgeode\fR" 4
*************** of your application will have, then you
*** 20811,20817 ****
  .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
--- 20826,20832 ----
  .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
*************** processors) for which the code is optimi
*** 20823,20829 ****
  .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
--- 20838,20844 ----
  .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
*************** Silvermont, then you should use this opt
*** 20831,20837 ****
  .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
--- 20846,20852 ----
  .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
*************** comparison is unordered.
*** 20916,20922 ****
  .IX Item "-msoft-float"
  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 can't be done directly in cross-compilation.  You must make your
  own arrangements to provide suitable library functions for
--- 20931,20937 ----
  .IX Item "-msoft-float"
  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 can't be done directly in cross-compilation.  You must make your
  own arrangements to provide suitable library functions for
*************** Do not use the \s-1FPU\s0 registers for
*** 20931,20938 ****
  .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.
--- 20946,20953 ----
  .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.
*************** so \fB\-m96bit\-long\-double\fR is the d
*** 20977,20983 ****
  .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.
--- 20992,20998 ----
  .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.
*************** its \s-1ABI\s0 specifies that \f(CW\*(C`
*** 20988,20994 ****
  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
--- 21003,21009 ----
  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
*************** type. This is the default for 32\-bit Bi
*** 21008,21014 ****
  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
--- 21023,21029 ----
  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
*************** with code compiled without that switch.
*** 21017,21023 ****
  .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\s0 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.
--- 21032,21038 ----
  .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.
*************** Studio compilers until version 12.  Late
*** 21079,21085 ****
  with Studio 12 Update@tie{}1) follow the \s-1ABI\s0 used by other x86 targets, which
  is the default on Solaris@tie{}10 and later.  \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
--- 21094,21100 ----
  with Studio 12 Update@tie{}1) follow the \s-1ABI\s0 used by other x86 targets, which
  is the default on Solaris@tie{}10 and later.  \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
*************** the one specified by \fB\-mpreferred\-st
*** 21140,21146 ****
  .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
--- 21155,21161 ----
  .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
*************** preferred alignment to \fB\-mpreferred\-
*** 21244,21253 ****
  .IP "\fB\-mmwaitx\fR" 4
  .IX Item "-mmwaitx"
  .PD
! These switches enable the use of instructions in the \s-1MMX\s0, \s-1SSE\s0,
! \&\s-1SSE2\s0, \s-1SSE3\s0, \s-1SSSE3\s0, \s-1SSE4\s0.1, \s-1AVX\s0, \s-1AVX2\s0, \s-1AVX512F\s0, \s-1AVX512PF\s0, \s-1AVX512ER\s0, \s-1AVX512CD\s0,
! \&\s-1SHA\s0, \s-1AES\s0, \s-1PCLMUL\s0, \s-1FSGSBASE\s0, \s-1RDRND\s0, F16C, \s-1FMA\s0, \s-1SSE4A\s0, \s-1FMA4\s0, \s-1XOP\s0, \s-1LWP\s0, \s-1ABM\s0,
! \&\s-1BMI\s0, \s-1BMI2\s0, \s-1FXSR\s0, \s-1XSAVE\s0, \s-1XSAVEOPT\s0, \s-1LZCNT\s0, \s-1RTM\s0, \s-1MPX\s0, \s-1MWAITX\s0 or 3DNow!
  extended instruction sets.  Each has a corresponding \fB\-mno\-\fR option
  to disable use of these instructions.
  .Sp
--- 21259,21268 ----
  .IP "\fB\-mmwaitx\fR" 4
  .IX Item "-mmwaitx"
  .PD
! These switches enable the use of instructions in the \s-1MMX, SSE,
! SSE2, SSE3, SSSE3, SSE4.1, AVX, AVX2, AVX512F, AVX512PF, AVX512ER, AVX512CD,
! SHA, AES, PCLMUL, FSGSBASE, RDRND, F16C, FMA, SSE4A, FMA4, XOP, LWP, ABM,
! BMI, BMI2, FXSR, XSAVE, XSAVEOPT, LZCNT, RTM, MPX, MWAITX\s0 or 3DNow!
  extended instruction sets.  Each has a corresponding \fB\-mno\-\fR option
  to disable use of these instructions.
  .Sp
*************** This option enables generation of \f(CW\
*** 21324,21330 ****
  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;
--- 21339,21345 ----
  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;
*************** when \fB\-mveclibabi=acml\fR is used.
*** 21423,21429 ****
  .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.
--- 21438,21444 ----
  .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.
*************** or whether the thread base pointer must
*** 21538,21544 ****
  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\s0 C Library, the default is on.
  .IP "\fB\-msse2avx\fR" 4
  .IX Item "-msse2avx"
  .PD 0
--- 21553,21559 ----
  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
*************** register when there are no variable argu
*** 21589,21595 ****
  \&\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\s0 4.4 or newer don't have
  those issues, regardless the \s-1RAX\s0 register value.
  .IP "\fB\-m8bit\-idiv\fR" 4
  .IX Item "-m8bit-idiv"
--- 21604,21610 ----
  \&\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"
*************** appropriately.
*** 21733,21739 ****
  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"
--- 21748,21754 ----
  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"
*************** kernel code.
*** 21818,21824 ****
  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
--- 21833,21839 ----
  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
*************** every cross-file call, not just those th
*** 21864,21870 ****
  .IX Subsection "zSeries Options"
  .PP
  These are listed under
! .Sh "Options for Code Generation Conventions"
  .IX Subsection "Options for Code Generation Conventions"
  These machine-independent options control the interface conventions
  used in code generation.
--- 21879,21885 ----
  .IX Subsection "zSeries Options"
  .PP
  These are listed under
! .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.
*************** You normally do not need to enable this
*** 22003,22009 ****
  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 2 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
--- 22018,22024 ----
  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 2\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
*************** Use it to conform to a non-default appli
*** 22074,22080 ****
  .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.
--- 22089,22095 ----
  .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.
*************** such variables in different compilation
*** 22087,22093 ****
  in a common block.
  This is the behavior specified by \fB\-fcommon\fR, and is the default
  for \s-1GCC\s0 on most targets.
! On the other hand, this behavior is not required by \s-1ISO\s0 C, and on some
  targets may carry a speed or code size penalty on variable references.
  The \fB\-fno\-common\fR option specifies that the compiler should place
  uninitialized global variables in the data section of the object file,
--- 22102,22108 ----
  in a common block.
  This is the behavior specified by \fB\-fcommon\fR, and is the default
  for \s-1GCC\s0 on most targets.
! On the other hand, this behavior is not required by \s-1ISO C,\s0 and on some
  targets may carry a speed or code size penalty on variable references.
  The \fB\-fno\-common\fR option specifies that the compiler should place
  uninitialized global variables in the data section of the object file,
*************** the \s-1GOT\s0 size for the linked execu
*** 22143,22153 ****
  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 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\s0 \s-1RS/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
--- 22158,22168 ----
  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 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.
*** 22157,22163 ****
  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 the m68k,
! PowerPC and \s-1SPARC\s0.
  .Sp
  Position-independent code requires special support, and therefore works
  only on certain machines.
--- 22172,22178 ----
  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 the m68k,
! PowerPC and \s-1SPARC.\s0
  .Sp
  Position-independent code requires special support, and therefore works
  only on certain machines.
*************** name, such as \f(CW\*(C`vector<int> blah
*** 22307,22313 ****
  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\-fstack\-check\fR" 4
  .IX Item "-fstack-check"
--- 22322,22328 ----
  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\-fstack\-check\fR" 4
  .IX Item "-fstack-check"
*************** always specify visibility when it is not
*** 22446,22452 ****
  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\s0 \*(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
--- 22461,22467 ----
  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
*************** before including any such headers.
*** 22458,22464 ****
  \&\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.
--- 22473,22479 ----
  \&\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.
*************** aspects of the compilation environment.
*** 22520,22526 ****
  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
--- 22535,22541 ----
  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
*************** national conventions.  \s-1GCC\s0 inspec
*** 22537,22543 ****
  \&\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
--- 22552,22558 ----
  \&\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
*************** and the Info entries for \fIgcc\fR, \fIc
*** 22717,22723 ****
  .IX Header "AUTHOR"
  See the Info entry for \fBgcc\fR, or
  <\fBhttp://gcc.gnu.org/onlinedocs/gcc/Contributors.html\fR>,
! for contributors to \s-1GCC\s0.
  .SH "COPYRIGHT"
  .IX Header "COPYRIGHT"
  Copyright (c) 1988\-2015 Free Software Foundation, Inc.
--- 22732,22738 ----
  .IX Header "AUTHOR"
  See the Info entry for \fBgcc\fR, or
  <\fBhttp://gcc.gnu.org/onlinedocs/gcc/Contributors.html\fR>,
! for contributors to \s-1GCC.\s0
  .SH "COPYRIGHT"
  .IX Header "COPYRIGHT"
  Copyright (c) 1988\-2015 Free Software Foundation, Inc.
diff -Nrcpad gcc-5.4.0/gcc/doc/gc-analyze.1 gcc-5.5.0/gcc/doc/gc-analyze.1
*** gcc-5.4.0/gcc/doc/gc-analyze.1	Fri Jun  3 10:15:09 2016
--- gcc-5.5.0/gcc/doc/gc-analyze.1	Tue Oct 10 09:24:12 2017
***************
*** 1,15 ****
! .\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
- .de Sh \" Subsection heading
- .br
- .if t .Sp
- .ne 5
- .PP
- \fB\\$1\fR
- .PP
- ..
  .de Sp \" Vertical space (when we can't use .PP)
  .if t .sp .5v
  .if n .sp
--- 1,7 ----
! .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
  .de Sp \" Vertical space (when we can't use .PP)
  .if t .sp .5v
  .if n .sp
***************
*** 46,71 ****
  .    ds PI \(*p
  .    ds L" ``
  .    ds R" ''
  'br\}
  .\"
  .\" Escape single quotes in literal strings from groff's Unicode transform.
  .ie \n(.g .ds Aq \(aq
  .el       .ds Aq '
  .\"
! .\" If the F register is turned on, we'll generate index entries on stderr for
! .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
  .\" entries marked with X<> in POD.  Of course, you'll have to process the
  .\" output yourself in some meaningful fashion.
! .ie \nF \{\
! .    de IX
! .    tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .    nr % 0
! .    rr F
! .\}
! .el \{\
  .    de IX
  ..
  .\}
  .\"
  .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
--- 38,68 ----
  .    ds PI \(*p
  .    ds L" ``
  .    ds R" ''
+ .    ds C`
+ .    ds C'
  'br\}
  .\"
  .\" Escape single quotes in literal strings from groff's Unicode transform.
  .ie \n(.g .ds Aq \(aq
  .el       .ds Aq '
  .\"
! .\" If the F register is >0, we'll generate index entries on stderr for
! .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
  .\" entries marked with X<> in POD.  Of course, you'll have to process the
  .\" output yourself in some meaningful fashion.
! .\"
! .\" 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).
***************
*** 132,138 ****
  .\" ========================================================================
  .\"
  .IX Title "GC-ANALYZE 1"
! .TH GC-ANALYZE 1 "2016-06-03" "gcc-5.4.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
--- 129,135 ----
  .\" ========================================================================
  .\"
  .IX Title "GC-ANALYZE 1"
! .TH GC-ANALYZE 1 "2017-10-10" "gcc-5.5.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
diff -Nrcpad gcc-5.4.0/gcc/doc/gcc.1 gcc-5.5.0/gcc/doc/gcc.1
*** gcc-5.4.0/gcc/doc/gcc.1	Fri Jun  3 10:32:24 2016
--- gcc-5.5.0/gcc/doc/gcc.1	Tue Oct 10 09:40:26 2017
***************
*** 1,15 ****
! .\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
- .de Sh \" Subsection heading
- .br
- .if t .Sp
- .ne 5
- .PP
- \fB\\$1\fR
- .PP
- ..
  .de Sp \" Vertical space (when we can't use .PP)
  .if t .sp .5v
  .if n .sp
--- 1,7 ----
! .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
  .de Sp \" Vertical space (when we can't use .PP)
  .if t .sp .5v
  .if n .sp
***************
*** 46,71 ****
  .    ds PI \(*p
  .    ds L" ``
  .    ds R" ''
  'br\}
  .\"
  .\" Escape single quotes in literal strings from groff's Unicode transform.
  .ie \n(.g .ds Aq \(aq
  .el       .ds Aq '
  .\"
! .\" If the F register is turned on, we'll generate index entries on stderr for
! .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
  .\" entries marked with X<> in POD.  Of course, you'll have to process the
  .\" output yourself in some meaningful fashion.
! .ie \nF \{\
! .    de IX
! .    tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .    nr % 0
! .    rr F
! .\}
! .el \{\
  .    de IX
  ..
  .\}
  .\"
  .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
--- 38,68 ----
  .    ds PI \(*p
  .    ds L" ``
  .    ds R" ''
+ .    ds C`
+ .    ds C'
  'br\}
  .\"
  .\" Escape single quotes in literal strings from groff's Unicode transform.
  .ie \n(.g .ds Aq \(aq
  .el       .ds Aq '
  .\"
! .\" If the F register is >0, we'll generate index entries on stderr for
! .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
  .\" entries marked with X<> in POD.  Of course, you'll have to process the
  .\" output yourself in some meaningful fashion.
! .\"
! .\" 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).
***************
*** 132,138 ****
  .\" ========================================================================
  .\"
  .IX Title "GCC 1"
! .TH GCC 1 "2016-06-03" "gcc-5.4.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
--- 129,135 ----
  .\" ========================================================================
  .\"
  .IX Title "GCC 1"
! .TH GCC 1 "2017-10-10" "gcc-5.5.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
*************** Only the most useful options are listed
*** 153,159 ****
  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
--- 150,156 ----
  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
*************** these have both positive and negative fo
*** 188,194 ****
  only one of these two forms, whichever one is not the default.
  .SH "OPTIONS"
  .IX Header "OPTIONS"
! .Sh "Option Summary"
  .IX Subsection "Option Summary"
  Here is a summary of all the options, grouped by type.  Explanations are
  in the following sections.
--- 185,191 ----
  only one of these two forms, whichever one is not the default.
  .SH "OPTIONS"
  .IX Header "OPTIONS"
! .SS "Option Summary"
  .IX Subsection "Option Summary"
  Here is a summary of all the options, grouped by type.  Explanations are
  in the following sections.
*************** in the following sections.
*** 276,282 ****
  \&\-Wno\-attributes \-Wno\-builtin\-macro\-redefined 
  \&\-Wc90\-c99\-compat \-Wc99\-c11\-compat 
  \&\-Wc++\-compat \-Wc++11\-compat \-Wc++14\-compat \-Wcast\-align  \-Wcast\-qual  
! \&\-Wchar\-subscripts \-Wclobbered  \-Wcomment \-Wconditionally\-supported  
  \&\-Wconversion \-Wcoverage\-mismatch \-Wdate\-time \-Wdelete\-incomplete \-Wno\-cpp  
  \&\-Wno\-deprecated \-Wno\-deprecated\-declarations \-Wno\-designated\-init 
  \&\-Wdisabled\-optimization 
--- 273,279 ----
  \&\-Wno\-attributes \-Wno\-builtin\-macro\-redefined 
  \&\-Wc90\-c99\-compat \-Wc99\-c11\-compat 
  \&\-Wc++\-compat \-Wc++11\-compat \-Wc++14\-compat \-Wcast\-align  \-Wcast\-qual  
! \&\-Wchar\-subscripts \-Wchkp \-Wclobbered  \-Wcomment \-Wconditionally\-supported  
  \&\-Wconversion \-Wcoverage\-mismatch \-Wdate\-time \-Wdelete\-incomplete \-Wno\-cpp  
  \&\-Wno\-deprecated \-Wno\-deprecated\-declarations \-Wno\-designated\-init 
  \&\-Wdisabled\-optimization 
*************** in the following sections.
*** 594,600 ****
  \&\fI\s-1AVR\s0 Options\fR
  \&\fB\-mmcu=\fR\fImcu\fR \fB\-maccumulate\-args \-mbranch\-cost=\fR\fIcost\fR 
  \&\fB\-mcall\-prologues \-mint8 \-mn_flash=\fR\fIsize\fR \fB\-mno\-interrupts 
! \&\-mrelax \-mrmw \-mstrict\-X \-mtiny\-stack \-nodevicelib \-Waddr\-space\-convert\fR
  .Sp
  \&\fIBlackfin Options\fR
  \&\fB\-mcpu=\fR\fIcpu\fR[\fB\-\fR\fIsirevision\fR] 
--- 591,598 ----
  \&\fI\s-1AVR\s0 Options\fR
  \&\fB\-mmcu=\fR\fImcu\fR \fB\-maccumulate\-args \-mbranch\-cost=\fR\fIcost\fR 
  \&\fB\-mcall\-prologues \-mint8 \-mn_flash=\fR\fIsize\fR \fB\-mno\-interrupts 
! \&\-mrelax \-mrmw \-mstrict\-X \-mtiny\-stack \-nodevicelib \-Waddr\-space\-convert 
! \&\-Wmisspelled\-isr\fR
  .Sp
  \&\fIBlackfin Options\fR
  \&\fB\-mcpu=\fR\fIcpu\fR[\fB\-\fR\fIsirevision\fR] 
*************** See \s-1RS/6000\s0 and PowerPC Options.
*** 943,949 ****
  \&\-mpointers\-to\-nested\-functions \-mno\-pointers\-to\-nested\-functions 
  \&\-msave\-toc\-indirect \-mno\-save\-toc\-indirect 
  \&\-mpower8\-fusion \-mno\-mpower8\-fusion \-mpower8\-vector \-mno\-power8\-vector 
! \&\-mcrypto \-mno\-crypto \-mdirect\-move \-mno\-direct\-move 
  \&\-mquad\-memory \-mno\-quad\-memory 
  \&\-mquad\-memory\-atomic \-mno\-quad\-memory\-atomic 
  \&\-mcompat\-align\-parm \-mno\-compat\-align\-parm 
--- 941,947 ----
  \&\-mpointers\-to\-nested\-functions \-mno\-pointers\-to\-nested\-functions 
  \&\-msave\-toc\-indirect \-mno\-save\-toc\-indirect 
  \&\-mpower8\-fusion \-mno\-mpower8\-fusion \-mpower8\-vector \-mno\-power8\-vector 
! \&\-mcrypto \-mno\-crypto \-mhtm \-mno\-htm \-mdirect\-move \-mno\-direct\-move 
  \&\-mquad\-memory \-mno\-quad\-memory 
  \&\-mquad\-memory\-atomic \-mno\-quad\-memory\-atomic 
  \&\-mcompat\-align\-parm \-mno\-compat\-align\-parm 
*************** See S/390 and zSeries Options.
*** 1155,1161 ****
  \&\fB\-ftrapv  \-fwrapv  \-fbounds\-check 
  \&\-fvisibility=\fR[\fBdefault\fR|\fBinternal\fR|\fBhidden\fR|\fBprotected\fR] 
  \&\fB\-fstrict\-volatile\-bitfields \-fsync\-libcalls\fR
! .Sh "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
--- 1153,1159 ----
  \&\fB\-ftrapv  \-fwrapv  \-fbounds\-check 
  \&\-fvisibility=\fR[\fBdefault\fR|\fBinternal\fR|\fBhidden\fR|\fBprotected\fR] 
  \&\fB\-fstrict\-volatile\-bitfields \-fsync\-libcalls\fR
! .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
*************** option.
*** 1459,1465 ****
  .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.
  .IP "\fBcommon\fR" 4
  .IX Item "common"
  Display the options that are common to all languages.
--- 1457,1463 ----
  .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
  .IP "\fBcommon\fR" 4
  .IX Item "common"
  Display the options that are common to all languages.
*************** or \fB/./\fR, or make the path absolute
*** 1556,1562 ****
  prefix.
  .IP "\fB\-\-version\fR" 4
  .IX Item "--version"
! Display the version number and copyrights of the invoked \s-1GCC\s0.
  .IP "\fB\-wrapper\fR" 4
  .IX Item "-wrapper"
  Invoke all subcommands under a wrapper program.  The name of the
--- 1554,1560 ----
  prefix.
  .IP "\fB\-\-version\fR" 4
  .IX Item "--version"
! Display the version number and copyrights of the invoked \s-1GCC.\s0
  .IP "\fB\-wrapper\fR" 4
  .IX Item "-wrapper"
  Invoke all subcommands under a wrapper program.  The name of the
*************** the shared object file is used to identi
*** 1578,1584 ****
  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
--- 1576,1582 ----
  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
*************** option in either single or double quotes
*** 1610,1617 ****
  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.
! .Sh "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,
--- 1608,1615 ----
  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,
*************** When you compile \*(C+ programs, you may
*** 1634,1640 ****
  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.
! .Sh "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
--- 1632,1638 ----
  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:
*** 1644,1651 ****
  In C mode, this is equivalent to \fB\-std=c90\fR. In \*(C+ mode, it is
  equivalent to \fB\-std=c++98\fR.
  .Sp
! This turns off certain features of \s-1GCC\s0 that are incompatible with \s-1ISO\s0
! C90 (when compiling C code), or of standard \*(C+ (when compiling \*(C+ code),
  such as the \f(CW\*(C`asm\*(C'\fR and \f(CW\*(C`typeof\*(C'\fR keywords, and
  predefined macros such as \f(CW\*(C`unix\*(C'\fR and \f(CW\*(C`vax\*(C'\fR that identify the
  type of system you are using.  It also enables the undesirable and
--- 1642,1649 ----
  In C mode, this is equivalent to \fB\-std=c90\fR. In \*(C+ mode, it is
  equivalent to \fB\-std=c++98\fR.
  .Sp
! This turns off certain features of \s-1GCC\s0 that are incompatible with \s-1ISO
! C90\s0 (when compiling C code), or of standard \*(C+ (when compiling \*(C+ code),
  such as the \f(CW\*(C`asm\*(C'\fR and \f(CW\*(C`typeof\*(C'\fR keywords, and
  predefined macros such as \f(CW\*(C`unix\*(C'\fR and \f(CW\*(C`vax\*(C'\fR that identify the
  type of system you are using.  It also enables the undesirable and
*************** the \f(CW\*(C`inline\*(C'\fR keyword.
*** 1655,1661 ****
  .Sp
  The alternate keywords \f(CW\*(C`_\|_asm_\|_\*(C'\fR, \f(CW\*(C`_\|_extension_\|_\*(C'\fR,
  \&\f(CW\*(C`_\|_inline_\|_\*(C'\fR and \f(CW\*(C`_\|_typeof_\|_\*(C'\fR continue to work despite
! \&\fB\-ansi\fR.  You would not want to use them in an \s-1ISO\s0 C program, of
  course, but it is useful to put them in header files that might be included
  in compilations done with \fB\-ansi\fR.  Alternate predefined macros
  such as \f(CW\*(C`_\|_unix_\|_\*(C'\fR and \f(CW\*(C`_\|_vax_\|_\*(C'\fR are also available, with or
--- 1653,1659 ----
  .Sp
  The alternate keywords \f(CW\*(C`_\|_asm_\|_\*(C'\fR, \f(CW\*(C`_\|_extension_\|_\*(C'\fR,
  \&\f(CW\*(C`_\|_inline_\|_\*(C'\fR and \f(CW\*(C`_\|_typeof_\|_\*(C'\fR continue to work despite
! \&\fB\-ansi\fR.  You would not want to use them in an \s-1ISO C\s0 program, of
  course, but it is useful to put them in header files that might be included
  in compilations done with \fB\-ansi\fR.  Alternate predefined macros
  such as \f(CW\*(C`_\|_unix_\|_\*(C'\fR and \f(CW\*(C`_\|_vax_\|_\*(C'\fR are also available, with or
*************** from declaring certain functions or defi
*** 1672,1678 ****
  programs that might use these names for other things.
  .Sp
  Functions that are normally built in but do not have semantics
! defined by \s-1ISO\s0 C (such as \f(CW\*(C`alloca\*(C'\fR and \f(CW\*(C`ffs\*(C'\fR) are not built-in
  functions when \fB\-ansi\fR is used.
  .IP "\fB\-std=\fR" 4
  .IX Item "-std="
--- 1670,1676 ----
  programs that might use these names for other things.
  .Sp
  Functions that are normally built in but do not have semantics
! defined by \s-1ISO C\s0 (such as \f(CW\*(C`alloca\*(C'\fR and \f(CW\*(C`ffs\*(C'\fR) are not built-in
  functions when \fB\-ansi\fR is used.
  .IP "\fB\-std=\fR" 4
  .IX Item "-std="
*************** The compiler can accept several base sta
*** 1685,1693 ****
  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\s0 C90, 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\s0 C90, 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
--- 1683,1691 ----
  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
*************** A value for this option must be provided
*** 1707,1717 ****
  .IP "\fBiso9899:1990\fR" 4
  .IX Item "iso9899:1990"
  .PD
! Support all \s-1ISO\s0 C90 programs (certain \s-1GNU\s0 extensions that conflict
! with \s-1ISO\s0 C90 are disabled). Same as \fB\-ansi\fR for C code.
  .IP "\fBiso9899:199409\fR" 4
  .IX Item "iso9899:199409"
! \&\s-1ISO\s0 C90 as modified in amendment 1.
  .IP "\fBc99\fR" 4
  .IX Item "c99"
  .PD 0
--- 1705,1715 ----
  .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
*************** with \s-1ISO\s0 C90 are disabled). Same
*** 1722,1728 ****
  .IP "\fBiso9899:199x\fR" 4
  .IX Item "iso9899:199x"
  .PD
! \&\s-1ISO\s0 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
--- 1720,1726 ----
  .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
*************** names \fBc9x\fR and \fBiso9899:199x\fR a
*** 1736,1742 ****
  .IP "\fBiso9899:2011\fR" 4
  .IX Item "iso9899:2011"
  .PD
! \&\s-1ISO\s0 C11, the 2011 revision of the \s-1ISO\s0 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
--- 1734,1740 ----
  .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
*** 1747,1767 ****
  .IP "\fBgnu89\fR" 4
  .IX Item "gnu89"
  .PD
! \&\s-1GNU\s0 dialect of \s-1ISO\s0 C90 (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\s0 C99.  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\s0 C11.  This is the default for C code.
  The name \fBgnu1x\fR is deprecated.
  .IP "\fBc++98\fR" 4
  .IX Item "c++98"
--- 1745,1765 ----
  .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  This is the default for C code.
  The name \fBgnu1x\fR is deprecated.
  .IP "\fBc++98\fR" 4
  .IX Item "c++98"
*************** The name \fBgnu1x\fR is deprecated.
*** 1769,1775 ****
  .IP "\fBc++03\fR" 4
  .IX Item "c++03"
  .PD
! The 1998 \s-1ISO\s0 \*(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"
--- 1767,1773 ----
  .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"
*************** additional defect reports. Same as \fB\-
*** 1785,1791 ****
  .IP "\fBc++0x\fR" 4
  .IX Item "c++0x"
  .PD
! The 2011 \s-1ISO\s0 \*(C+ standard plus amendments.
  The name \fBc++0x\fR is deprecated.
  .IP "\fBgnu++11\fR" 4
  .IX Item "gnu++11"
--- 1783,1789 ----
  .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"
*************** The name \fBgnu++0x\fR is deprecated.
*** 1801,1807 ****
  .IP "\fBc++1y\fR" 4
  .IX Item "c++1y"
  .PD
! The 2014 \s-1ISO\s0 \*(C+ standard plus amendments.
  The name \fBc++1y\fR is deprecated.
  .IP "\fBgnu++14\fR" 4
  .IX Item "gnu++14"
--- 1799,1805 ----
  .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"
*************** The name \fBc++1y\fR is deprecated.
*** 1813,1819 ****
  The name \fBgnu++1y\fR is deprecated.
  .IP "\fBc++1z\fR" 4
  .IX Item "c++1z"
! The next revision of the \s-1ISO\s0 \*(C+ standard, tentatively planned for
  2017.  Support is highly experimental, and will almost certainly
  change in incompatible ways in future releases.
  .IP "\fBgnu++1z\fR" 4
--- 1811,1817 ----
  The name \fBgnu++1y\fR is deprecated.
  .IP "\fBc++1z\fR" 4
  .IX Item "c++1z"
! The next revision of the \s-1ISO \*(C+\s0 standard, tentatively planned for
  2017.  Support is highly experimental, and will almost certainly
  change in incompatible ways in future releases.
  .IP "\fBgnu++1z\fR" 4
*************** In \*(C+, this switch only affects the \
*** 1875,1881 ****
  use the \fB\-fno\-gnu\-keywords\fR flag instead, which has the same
  effect.  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\s0 C99.
  .IP "\fB\-fno\-builtin\fR" 4
  .IX Item "-fno-builtin"
  .PD 0
--- 1873,1879 ----
  use the \fB\-fno\-gnu\-keywords\fR flag instead, which has the same
  effect.  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
  .IP "\fB\-fno\-builtin\fR" 4
  .IX Item "-fno-builtin"
  .PD 0
*************** known not to modify global memory.
*** 1903,1909 ****
  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
--- 1901,1907 ----
  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
*************** implies \fB\-pthread\fR, and thus is onl
*** 1937,1943 ****
  have support for \fB\-pthread\fR.
  .Sp
  Note that this is an experimental feature, incomplete, and subject to
! change in future versions of \s-1GCC\s0.  See
  <\fBhttps://gcc.gnu.org/wiki/OpenACC\fR> for more information.
  .IP "\fB\-fopenmp\fR" 4
  .IX Item "-fopenmp"
--- 1935,1941 ----
  have support for \fB\-pthread\fR.
  .Sp
  Note that this is an experimental feature, incomplete, and subject to
! change in future versions of \s-1GCC.\s0  See
  <\fBhttps://gcc.gnu.org/wiki/OpenACC\fR> for more information.
  .IP "\fB\-fopenmp\fR" 4
  .IX Item "-fopenmp"
*************** When the option \fB\-fgnu\-tm\fR is spec
*** 1969,1975 ****
  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,
--- 1967,1973 ----
  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,
*************** fields declared using a typedef.    This
*** 2006,2013 ****
  supported for C, not \*(C+.
  .IP "\fB\-trigraphs\fR" 4
  .IX Item "-trigraphs"
! Support \s-1ISO\s0 C trigraphs.  The \fB\-ansi\fR option (and \fB\-std\fR
! options for strict \s-1ISO\s0 C conformance) implies \fB\-trigraphs\fR.
  .IP "\fB\-traditional\fR" 4
  .IX Item "-traditional"
  .PD 0
--- 2004,2011 ----
  supported for C, not \*(C+.
  .IP "\fB\-trigraphs\fR" 4
  .IX Item "-trigraphs"
! Support \s-1ISO C\s0 trigraphs.  The \fB\-ansi\fR option (and \fB\-std\fR
! options for strict \s-1ISO C\s0 conformance) implies \fB\-trigraphs\fR.
  .IP "\fB\-traditional\fR" 4
  .IX Item "-traditional"
  .PD 0
*************** options for strict \s-1ISO\s0 C conforma
*** 2016,2023 ****
  .PD
  Formerly, these options caused \s-1GCC\s0 to attempt to emulate a pre-standard
  C compiler.  They are now only supported with the \fB\-E\fR switch.
! The preprocessor continues to support a pre-standard mode.  See the \s-1GNU\s0
! \&\s-1CPP\s0 manual for details.
  .IP "\fB\-fcond\-mismatch\fR" 4
  .IX Item "-fcond-mismatch"
  Allow conditional expressions with mismatched types in the second and
--- 2014,2021 ----
  .PD
  Formerly, these options caused \s-1GCC\s0 to attempt to emulate a pre-standard
  C compiler.  They are now only supported with the \fB\-E\fR switch.
! The preprocessor continues to support a pre-standard mode.  See the \s-1GNU
! CPP\s0 manual for details.
  .IP "\fB\-fcond\-mismatch\fR" 4
  .IX Item "-fcond-mismatch"
  Allow conditional expressions with mismatched types in the second and
*************** These options control whether a bit-fiel
*** 2067,2074 ****
  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.
! .Sh "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
--- 2065,2072 ----
  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.
! .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
*** 2080,2091 ****
  .PP
  In this example, only \fB\-frepo\fR is an option meant
  only for \*(C+ programs; you can use the other options with any
! language supported by \s-1GCC\s0.
  .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
--- 2078,2089 ----
  .PP
  In this example, only \fB\-frepo\fR is an option meant
  only for \*(C+ programs; you can use the other options with any
! language supported by \s-1GCC.\s0
  .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
*************** Inject friend functions into the enclosi
*** 2182,2188 ****
  visible outside the scope of the class in which they are declared.
  Friend functions were documented to work this way in the old Annotated
  \&\*(C+ Reference Manual.  
! However, in \s-1ISO\s0 \*(C+ a friend function that is not declared
  in an enclosing scope can only be found using argument dependent
  lookup.  \s-1GCC\s0 defaults to the standard behavior.
  .Sp
--- 2180,2186 ----
  visible outside the scope of the class in which they are declared.
  Friend functions were documented to work this way in the old Annotated
  \&\*(C+ Reference Manual.  
! However, in \s-1ISO \*(C+\s0 a friend function that is not declared
  in an enclosing scope can only be found using argument dependent
  lookup.  \s-1GCC\s0 defaults to the standard behavior.
  .Sp
*************** controlled by \f(CW\*(C`#pragma implemen
*** 2265,2276 ****
  errors if these functions are not inlined everywhere they are called.
  .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\-fno\-nonansi\-builtins\fR" 4
  .IX Item "-fno-nonansi-builtins"
  Disable built-in declarations of functions that are not mandated by
! \&\s-1ANSI/ISO\s0 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"
--- 2263,2274 ----
  errors if these functions are not inlined everywhere they are called.
  .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\-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"
*************** warning or error to \fIn\fR.  The defaul
*** 2358,2364 ****
  .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\s0 \*(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.
--- 2356,2362 ----
  .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.
*************** are taken in different shared objects.
*** 2389,2395 ****
  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
--- 2387,2393 ----
  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
*************** is used when building the \*(C+ library.
*** 2509,2518 ****
  In addition, these optimization, warning, and code generation options
  have meanings only for \*(C+ programs:
  .IP "\fB\-Wabi\fR (C, Objective-C, \*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wabi (C, Objective-C,  and Objective- only)"
  When an explicit \fB\-fabi\-version=\fR\fIn\fR option is used, causes
  G++ to warn when it generates code that is probably not compatible with the
! vendor-neutral \*(C+ \s-1ABI\s0.  Since G++ now defaults to
  \&\fB\-fabi\-version=0\fR, \fB\-Wabi\fR has no effect unless either
  an older \s-1ABI\s0 version is selected (with \fB\-fabi\-version=\fR\fIn\fR)
  or an older compatibility version is selected (with
--- 2507,2516 ----
  In addition, these optimization, warning, and code generation options
  have meanings only for \*(C+ programs:
  .IP "\fB\-Wabi\fR (C, Objective-C, \*(C+ and Objective\-\*(C+ only)" 4
! .IX Item "-Wabi (C, Objective-C, and Objective- only)"
  When an explicit \fB\-fabi\-version=\fR\fIn\fR option is used, causes
  G++ to warn when it generates code that is probably not compatible with the
! vendor-neutral \*(C+ \s-1ABI.\s0  Since G++ now defaults to
  \&\fB\-fabi\-version=0\fR, \fB\-Wabi\fR has no effect unless either
  an older \s-1ABI\s0 version is selected (with \fB\-fabi\-version=\fR\fIn\fR)
  or an older compatibility version is selected (with
*************** level, e.g. \fB\-Wabi=2\fR to warn about
*** 2535,2541 ****
  \&\fB\-fabi\-compat\-version=\fR\fIn\fR.
  .Sp
  The known incompatibilities in \fB\-fabi\-version=2\fR (which was the
! default from \s-1GCC\s0 3.4 to 4.9) include:
  .RS 4
  .IP "*" 4
  A template with a non-type template parameter of reference type was
--- 2533,2539 ----
  \&\fB\-fabi\-compat\-version=\fR\fIn\fR.
  .Sp
  The 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
*************** These mangling issues were fixed in \fB\
*** 2563,2569 ****
  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
--- 2561,2567 ----
  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
*************** When mangling a function type with funct
*** 2580,2593 ****
  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\s0 5.1.
  .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\s0 5.2.
  .RE
  .RS 4
  .Sp
--- 2578,2591 ----
  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
  .RE
  .RS 4
  .Sp
*************** This is on by default for all pre\-\*(C+
*** 2703,2709 ****
  \&\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\s0 \*(C+11 onwards (\fB\-std=c++11\fR, ...).
  .PP
  The following \fB\-W...\fR options are not affected by \fB\-Wall\fR.
  .IP "\fB\-Weffc++\fR (\*(C+ and Objective\-\*(C+ only)" 4
--- 2701,2707 ----
  \&\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, ...).
  .PP
  The following \fB\-W...\fR options are not affected by \fB\-Wall\fR.
  .IP "\fB\-Weffc++\fR (\*(C+ and Objective\-\*(C+ only)" 4
*************** Warn when overload resolution chooses a
*** 2799,2805 ****
  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.
! .Sh "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.
--- 2797,2803 ----
  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.
! .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.
*************** For example, you might compile a file \f
*** 2815,2821 ****
  .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.,
--- 2813,2819 ----
  .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.,
*************** runtime.  This is the default for most t
*** 2840,2846 ****
  .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 and Mac \s-1OS\s0 X.  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
--- 2838,2844 ----
  .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 and Mac \s-1OS X.\s0  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
*************** This option is currently supported only
*** 2857,2863 ****
  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
--- 2855,2861 ----
  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
*************** by the runtime immediately after a new o
*** 2881,2887 ****
  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\s0 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
--- 2879,2885 ----
  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
*************** is required to use the Objective-C keywo
*** 2896,2902 ****
  \&\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\s0 X 10.2 and earlier).
  .IP "\fB\-fobjc\-gc\fR" 4
  .IX Item "-fobjc-gc"
  Enable garbage collection (\s-1GC\s0) in Objective-C and Objective\-\*(C+
--- 2894,2900 ----
  \&\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
*** 2905,2927 ****
  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\s0 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 \s-1GCC\s0 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 \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
--- 2903,2925 ----
  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
*************** run time instead.  This is used in conju
*** 2930,2936 ****
  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\s0 X 10.3
  and later.
  .IP "\fB\-fzero\-link\fR" 4
  .IX Item "-fzero-link"
--- 2928,2934 ----
  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"
*************** that methods and selectors must be decla
*** 3009,3015 ****
  .IX Item "-print-objc-runtime-info"
  Generate C header describing the largest structure that is passed by
  value, if any.
! .Sh "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
--- 3007,3013 ----
  .IX Item "-print-objc-runtime-info"
  Generate C header describing the largest structure that is passed by
  value, if any.
! .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
*************** information.  The source line is truncat
*** 3131,3144 ****
  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.
! .Sh "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.
--- 3129,3142 ----
  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.
! .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.
*************** warns that an unrecognized option is pre
*** 3213,3226 ****
  .IP "\fB\-pedantic\fR" 4
  .IX Item "-pedantic"
  .PD
! Issue all the warnings demanded by strict \s-1ISO\s0 C and \s-1ISO\s0 \*(C+;
  reject all programs that use forbidden extensions, and some other
! programs that do not follow \s-1ISO\s0 C and \s-1ISO\s0 \*(C+.  For \s-1ISO\s0 C, follows the
! version of the \s-1ISO\s0 C standard specified by any \fB\-std\fR option used.
  .Sp
! Valid \s-1ISO\s0 C and \s-1ISO\s0 \*(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 required version of \s-1ISO\s0 C).  However,
  without this option, certain \s-1GNU\s0 extensions and traditional C and \*(C+
  features are supported as well.  With this option, they are rejected.
  .Sp
--- 3211,3224 ----
  .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;
  reject all programs that use forbidden extensions, and some other
! programs that do not follow \s-1ISO C\s0 and \s-1ISO \*(C+.\s0  For \s-1ISO C,\s0 follows the
! version of the \s-1ISO C\s0 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 required version of \s-1ISO C\s0).  However,
  without this option, certain \s-1GNU\s0 extensions and traditional C and \*(C+
  features are supported as well.  With this option, they are rejected.
  .Sp
*************** warnings are also disabled in the expres
*** 3230,3253 ****
  \&\f(CW\*(C`_\|_extension_\|_\*(C'\fR.  However, only system header files should use
  these escape routes; application programs should avoid them.
  .Sp
! Some users try to use \fB\-Wpedantic\fR to check programs for strict \s-1ISO\s0
! C conformance.  They soon find that it does not do quite what they want:
  it finds some non-ISO practices, but not all\-\-\-only those for which
! \&\s-1ISO\s0 C \fIrequires\fR a diagnostic, and some others for which
  diagnostics have been added.
  .Sp
! A feature to report any failure to conform to \s-1ISO\s0 C might be useful in
  some instances, but would require considerable additional work and would
  be quite different from \fB\-Wpedantic\fR.  We don't have plans to
  support such a feature in the near future.
  .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\s0 C 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\s0
! C 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
--- 3228,3251 ----
  \&\f(CW\*(C`_\|_extension_\|_\*(C'\fR.  However, only system header files should use
  these escape routes; application programs should avoid them.
  .Sp
! Some users try to use \fB\-Wpedantic\fR to check programs for strict \s-1ISO
! C\s0 conformance.  They soon find that it does not do quite what they want:
  it finds some non-ISO practices, but not all\-\-\-only those for which
! \&\s-1ISO C\s0 \fIrequires\fR a diagnostic, and some others for which
  diagnostics have been added.
  .Sp
! A feature to report any failure to conform to \s-1ISO C\s0 might be useful in
  some instances, but would require considerable additional work and would
  be quite different from \fB\-Wpedantic\fR.  We don't have plans to
  support such a feature in the near future.
  .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
*************** This warning is enabled by \fB\-Wall\fR.
*** 3359,3364 ****
--- 3357,3366 ----
  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\-Wchkp\fR" 4
+ .IX Item "-Wchkp"
+ Warn about an invalid memory access that is found by Pointer Bounds Checker
+ (\fB\-fcheck\-pointer\-bounds\fR).
  .IP "\fB\-Wno\-coverage\-mismatch\fR" 4
  .IX Item "-Wno-coverage-mismatch"
  Warn if feedback profiles do not match when using the
*************** functions without the attribute specifie
*** 3419,3425 ****
  \&\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\s0 C90 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
--- 3421,3427 ----
  \&\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
*************** enabled by default and it is made into a
*** 3535,3546 ****
  Same as \fB\-Wimplicit\-int\fR and \fB\-Wimplicit\-function\-declaration\fR.
  This warning is enabled by \fB\-Wall\fR.
  .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\s0 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.
! \&\s-1ISO\s0 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
--- 3537,3548 ----
  Same as \fB\-Wimplicit\-int\fR and \fB\-Wimplicit\-function\-declaration\fR.
  This warning is enabled by \fB\-Wall\fR.
  .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
*************** expression to a type other than \f(CW\*(
*** 3727,3735 ****
  .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\s0 4.4.
  .IP "\fB\-Wtrigraphs\fR" 4
  .IX Item "-Wtrigraphs"
  Warn if any trigraphs are encountered that might change the meaning of
--- 3729,3737 ----
  .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\-Wtrigraphs\fR" 4
  .IX Item "-Wtrigraphs"
  Warn if any trigraphs are encountered that might change the meaning of
*************** This warning is enabled by \fB\-Wall\fR.
*** 3766,3772 ****
  .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
--- 3768,3774 ----
  .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
*************** This warning is enabled by \fB\-Wall\fR
*** 3873,3879 ****
  .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
--- 3875,3881 ----
  .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
*************** probably mistaken.
*** 4151,4163 ****
  .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\s0 C.  Also warn about \s-1ISO\s0 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 \s-1ISO\s0 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
--- 4153,4165 ----
  .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
*************** versa.  The absence of these prototypes
*** 4212,4220 ****
  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\s0 C style function definitions.  This warning intentionally is
  \&\fInot\fR issued for prototype declarations or variadic functions
! because these \s-1ISO\s0 C 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
--- 4214,4222 ----
  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
*************** except when the same as the default prom
*** 4232,4239 ****
  .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\s0 C99 and is by default
! allowed in \s-1GCC\s0.  It is not supported by \s-1ISO\s0 C90.
  .IP "\fB\-Wundef\fR" 4
  .IX Item "-Wundef"
  Warn if an undefined identifier is evaluated in an \f(CW\*(C`#if\*(C'\fR directive.
--- 4234,4241 ----
  .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
  .IP "\fB\-Wundef\fR" 4
  .IX Item "-Wundef"
  Warn if an undefined identifier is evaluated in an \f(CW\*(C`#if\*(C'\fR directive.
*************** which depend on the \s-1MS\s0 runtime.
*** 4315,4321 ****
  .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\s0 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.
--- 4317,4323 ----
  .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.
*************** For example, warn if a call to a functio
*** 4333,4346 ****
  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\s0 C90, but present in \s-1ISO\s0 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 \s-1ISO\s0 C99, but present in \s-1ISO\s0 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,
--- 4335,4348 ----
  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 o
*** 4348,4366 ****
  disabled in the expression that follows \f(CW\*(C`_\|_extension_\|_\*(C'\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\s0 C constructs that are outside of the common subset of
! \&\s-1ISO\s0 C and \s-1ISO\s0 \*(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 ( and Objective- only)"
! Warn about \*(C+ constructs whose meaning differs between \s-1ISO\s0 \*(C+ 1998
! and \s-1ISO\s0 \*(C+ 2011, e.g., identifiers in \s-1ISO\s0 \*(C+ 1998 that are keywords
! in \s-1ISO\s0 \*(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 ( and Objective- only)"
! Warn about \*(C+ constructs whose meaning differs between \s-1ISO\s0 \*(C+ 2011
! and \s-1ISO\s0 \*(C+ 2014.  This warning is enabled by \fB\-Wall\fR.
  .IP "\fB\-Wcast\-qual\fR" 4
  .IX Item "-Wcast-qual"
  Warn whenever a pointer is cast so as to remove a type qualifier from
--- 4350,4368 ----
  disabled in the expression that follows \f(CW\*(C`_\|_extension_\|_\*(C'\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\-Wcast\-qual\fR" 4
  .IX Item "-Wcast-qual"
  Warn whenever a pointer is cast so as to remove a type qualifier from
*************** Usually they indicate a typo in the user
*** 4663,4687 ****
  implementation-defined values, and should not be used in portable code.
  .IP "\fB\-Wnormalized\fR[\fB=\fR<\fBnone\fR|\fBid\fR|\fBnfc\fR|\fBnfkc\fR>]" 4
  .IX Item "-Wnormalized[=<none|id|nfc|nfkc>]"
! In \s-1ISO\s0 C and \s-1ISO\s0 \*(C+, 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\s0 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.  \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\s0 10646 \*(L"C\*(R" 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\s0 C and \s-1ISO\s0 \*(C+ 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\s0 C 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.
--- 4665,4689 ----
  implementation-defined values, and should not be used in portable code.
  .IP "\fB\-Wnormalized\fR[\fB=\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.
*************** only do this if you are using some other
*** 4692,4702 ****
  \&\*(L"D\*(R"), because otherwise you can easily create bugs that are
  literally impossible to see.
  .Sp
! Some characters in \s-1ISO\s0 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, \*(L"\s-1SUPERSCRIPT\s0 \s-1LATIN\s0 \s-1SMALL\s0
! \&\s-1LETTER\s0 N\*(R", displays just like a regular \f(CW\*(C`n\*(C'\fR that has been
! placed in a superscript.  \s-1ISO\s0 10646 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
--- 4694,4704 ----
  \&\*(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
*************** have the packed attribute:
*** 4754,4762 ****
  .IP "\fB\-Wpacked\-bitfield\-compat\fR" 4
  .IX Item "-Wpacked-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 has been fixed in \s-1GCC\s0 4.4 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\s0 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
--- 4756,4764 ----
  .IP "\fB\-Wpacked\-bitfield\-compat\fR" 4
  .IX Item "-Wpacked-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 has been 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
*************** warnings produced by \fB\-Winline\fR to
*** 4803,4809 ****
  .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\s0 \*(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
--- 4805,4811 ----
  .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
*************** the search path but can't be used.
*** 4828,4839 ****
  .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\s0 C90 and \*(C+98
  modes.  To inhibit the warning messages, use \fB\-Wno\-long\-long\fR.
  .IP "\fB\-Wvariadic\-macros\fR" 4
  .IX Item "-Wvariadic-macros"
! Warn if variadic macros are used in \s-1ISO\s0 C90 mode, or if the \s-1GNU\s0
! alternate syntax is used in \s-1ISO\s0 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\-Wvarargs\fR" 4
--- 4830,4841 ----
  .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.
  .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\-Wvarargs\fR" 4
*************** standard's minimum limit, but very porta
*** 4897,4903 ****
  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
--- 4899,4905 ----
  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
*************** from the decimal floating-point extensio
*** 4915,4928 ****
  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.
! .Sh "Options for Debugging Your Program or \s-1GCC\s0"
  .IX Subsection "Options for Debugging Your Program or GCC"
  \&\s-1GCC\s0 has various special options that are used for debugging
  either your program or \s-1GCC:\s0
  .IP "\fB\-g\fR" 4
  .IX Item "-g"
  Produce debugging information in the operating system's native format
! (stabs, \s-1COFF\s0, \s-1XCOFF\s0, or \s-1DWARF\s0 2).  \s-1GDB\s0 can work with this debugging
  information.
  .Sp
  On most systems that use stabs format, \fB\-g\fR enables use of extra
--- 4917,4930 ----
  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 for Debugging Your Program or \s-1GCC\s0"
  .IX Subsection "Options for Debugging Your Program or GCC"
  \&\s-1GCC\s0 has various special options that are used for debugging
  either your program or \s-1GCC:\s0
  .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 2\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
*************** be useful, this option requires a debugg
*** 4955,4962 ****
  files.
  .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 2, stabs, or the native format
  if neither of those are supported), including \s-1GDB\s0 extensions if at all
  possible.
  .IP "\fB\-gpubnames\fR" 4
--- 4957,4964 ----
  files.
  .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 2,\s0 stabs, or the native format
  if neither of those are supported), including \s-1GDB\s0 extensions if at all
  possible.
  .IP "\fB\-gpubnames\fR" 4
*************** with a linker that can produce \s-1GDB\s
*** 4971,4978 ****
  .IX Item "-gstabs"
  Produce debugging information in stabs format (if that is supported),
  without \s-1GDB\s0 extensions.  This is the format used by \s-1DBX\s0 on most \s-1BSD\s0
! systems.  On \s-1MIPS\s0, Alpha and System V Release 4 systems this option
! produces stabs debugging output that is not understood by \s-1DBX\s0 or \s-1SDB\s0.
  On System V Release 4 systems this option requires the \s-1GNU\s0 assembler.
  .IP "\fB\-feliminate\-unused\-debug\-symbols\fR" 4
  .IX Item "-feliminate-unused-debug-symbols"
--- 4973,4980 ----
  .IX Item "-gstabs"
  Produce debugging information in stabs format (if that is supported),
  without \s-1GDB\s0 extensions.  This is the format used by \s-1DBX\s0 on most \s-1BSD\s0
! systems.  On \s-1MIPS,\s0 Alpha and System V Release 4 systems this option
! produces stabs debugging output that is not understood by \s-1DBX\s0 or \s-1SDB.\s0
  On System V Release 4 systems this option requires the \s-1GNU\s0 assembler.
  .IP "\fB\-feliminate\-unused\-debug\-symbols\fR" 4
  .IX Item "-feliminate-unused-debug-symbols"
*************** System V Release 4.
*** 5009,5015 ****
  .IP "\fB\-gxcoff\fR" 4
  .IX Item "-gxcoff"
  Produce debugging information in \s-1XCOFF\s0 format (if that is supported).
! This is the format used by the \s-1DBX\s0 debugger on \s-1IBM\s0 \s-1RS/6000\s0 systems.
  .IP "\fB\-gxcoff+\fR" 4
  .IX Item "-gxcoff+"
  Produce debugging information in \s-1XCOFF\s0 format (if that is supported),
--- 5011,5017 ----
  .IP "\fB\-gxcoff\fR" 4
  .IX Item "-gxcoff"
  Produce debugging information in \s-1XCOFF\s0 format (if that is supported).
! This is the format used by the \s-1DBX\s0 debugger on \s-1IBM RS/6000\s0 systems.
  .IP "\fB\-gxcoff+\fR" 4
  .IX Item "-gxcoff+"
  Produce debugging information in \s-1XCOFF\s0 format (if that is supported),
*************** The value of \fIversion\fR may be either
*** 5024,5032 ****
  for most targets is 4.  \s-1DWARF\s0 Version 5 is only experimental.
  .Sp
  Note that with \s-1DWARF\s0 Version 2, some ports require and always
! use some non-conflicting \s-1DWARF\s0 3 extensions in the unwind tables.
  .Sp
! Version 4 may require \s-1GDB\s0 7.0 and \fB\-fvar\-tracking\-assignments\fR
  for maximum benefit.
  .IP "\fB\-grecord\-gcc\-switches\fR" 4
  .IX Item "-grecord-gcc-switches"
--- 5026,5034 ----
  for most targets is 4.  \s-1DWARF\s0 Version 5 is only experimental.
  .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.
  .IP "\fB\-grecord\-gcc\-switches\fR" 4
  .IX Item "-grecord-gcc-switches"
*************** debug information in version 1 of the \s
*** 5099,5105 ****
  different from version 2), and it would have been too confusing.  That
  debug format is long obsolete, but the option cannot be changed now.
  Instead use an additional \fB\-g\fR\fIlevel\fR option to change the
! debug level for \s-1DWARF\s0.
  .IP "\fB\-gtoggle\fR" 4
  .IX Item "-gtoggle"
  Turn off generation of debug info, if leaving out this option
--- 5101,5107 ----
  different from version 2), and it would have been too confusing.  That
  debug format is long obsolete, but the option cannot be changed now.
  Instead use an additional \fB\-g\fR\fIlevel\fR option to change the
! debug level for \s-1DWARF.\s0
  .IP "\fB\-gtoggle\fR" 4
  .IX Item "-gtoggle"
  Turn off generation of debug info, if leaving out this option
*************** at runtime.  Current suboptions are:
*** 5152,5158 ****
  .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\s0 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 as well as \f(CW\*(C`INT_MIN / \-1\*(C'\fR division.
--- 5154,5160 ----
  .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.
  .IP "\fB\-fsanitize=integer\-divide\-by\-zero\fR" 4
  .IX Item "-fsanitize=integer-divide-by-zero"
  Detect integer division by zero as well as \f(CW\*(C`INT_MIN / \-1\*(C'\fR division.
*************** When this option is passed to the compil
*** 5458,5466 ****
  other than debugging the compiler proper.
  .IP "\fB\-feliminate\-dwarf2\-dups\fR" 4
  .IX Item "-feliminate-dwarf2-dups"
! Compress \s-1DWARF\s0 2 debugging information by eliminating duplicated
  information about each symbol.  This option only makes sense when
! generating \s-1DWARF\s0 2 debugging information with \fB\-gdwarf\-2\fR.
  .IP "\fB\-femit\-struct\-debug\-baseonly\fR" 4
  .IX Item "-femit-struct-debug-baseonly"
  Emit debug information for struct-like types
--- 5460,5468 ----
  other than debugging the compiler proper.
  .IP "\fB\-feliminate\-dwarf2\-dups\fR" 4
  .IX Item "-feliminate-dwarf2-dups"
! Compress \s-1DWARF 2\s0 debugging information by eliminating duplicated
  information about each symbol.  This option only makes sense when
! generating \s-1DWARF 2\s0 debugging information with \fB\-gdwarf\-2\fR.
  .IP "\fB\-femit\-struct\-debug\-baseonly\fR" 4
  .IX Item "-femit-struct-debug-baseonly"
  Emit debug information for struct-like types
*************** but at significant potential loss in typ
*** 5472,5478 ****
  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 2.
  .IP "\fB\-femit\-struct\-debug\-reduced\fR" 4
  .IX Item "-femit-struct-debug-reduced"
  Emit debug information for struct-like types
--- 5474,5480 ----
  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 2.\s0
  .IP "\fB\-femit\-struct\-debug\-reduced\fR" 4
  .IX Item "-femit-struct-debug-reduced"
  Emit debug information for struct-like types
*************** with some potential loss in type informa
*** 5485,5491 ****
  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 2.
  .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
--- 5487,5493 ----
  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 2.\s0
  .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
*************** You may need to experiment to determine
*** 5531,5537 ****
  .Sp
  The default is \fB\-femit\-struct\-debug\-detailed=all\fR.
  .Sp
! This option works only with \s-1DWARF\s0 2.
  .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
--- 5533,5539 ----
  .Sp
  The default is \fB\-femit\-struct\-debug\-detailed=all\fR.
  .Sp
! This option works only with \s-1DWARF 2.\s0
  .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
*************** When compiling files in directory \fI\fI
*** 5545,5551 ****
  information describing them as in \fI\fInew\fI\fR instead.
  .IP "\fB\-fno\-dwarf2\-cfi\-asm\fR" 4
  .IX Item "-fno-dwarf2-cfi-asm"
! Emit \s-1DWARF\s0 2 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\-p\fR" 4
  .IX Item "-p"
--- 5547,5553 ----
  information describing them as in \fI\fInew\fI\fR instead.
  .IP "\fB\-fno\-dwarf2\-cfi\-asm\fR" 4
  .IX Item "-fno-dwarf2-cfi-asm"
! Emit \s-1DWARF 2\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\-p\fR" 4
  .IX Item "-p"
*************** For example, with \fB\-fdbg\-cnt=dce:10,
*** 5703,5709 ****
  .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
--- 5705,5711 ----
  .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
*************** by some other path.
*** 6176,6182 ****
  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"
--- 6178,6184 ----
  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"
*************** Dump aliasing information for each funct
*** 6289,6295 ****
  appending \fI.alias\fR to the source file name.
  .IP "\fBccp\fR" 4
  .IX Item "ccp"
! Dump each function after \s-1CCP\s0.  The file name is made by appending
  \&\fI.ccp\fR to the source file name.
  .IP "\fBstoreccp\fR" 4
  .IX Item "storeccp"
--- 6291,6297 ----
  appending \fI.alias\fR to the source file name.
  .IP "\fBccp\fR" 4
  .IX Item "ccp"
! Dump each function after \s-1CCP.\s0  The file name is made by appending
  \&\fI.ccp\fR to the source file name.
  .IP "\fBstoreccp\fR" 4
  .IX Item "storeccp"
*************** Print the compiler's built-in specs\-\-\
*** 6708,6714 ****
  is used when \s-1GCC\s0 itself is being built.)
  .IP "\fB\-fno\-eliminate\-unused\-debug\-types\fR" 4
  .IX Item "-fno-eliminate-unused-debug-types"
! Normally, when producing \s-1DWARF\s0 2 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
--- 6710,6716 ----
  is used when \s-1GCC\s0 itself is being built.)
  .IP "\fB\-fno\-eliminate\-unused\-debug\-types\fR" 4
  .IX Item "-fno-eliminate-unused-debug-types"
! Normally, when producing \s-1DWARF 2\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
*************** in that compilation unit, for example
*** 6717,6723 ****
  if, in the debugger, you want to cast a value to a type that is
  not actually used in your program (but is declared).  More often,
  however, this results in a significant amount of wasted space.
! .Sh "Options That Control Optimization"
  .IX Subsection "Options That Control Optimization"
  These options control various sorts of optimizations.
  .PP
--- 6719,6725 ----
  if, in the debugger, you want to cast a value to a type that is
  not actually used in your program (but is declared).  More often,
  however, this results in a significant amount of wasted space.
! .SS "Options That Control Optimization"
  .IX Subsection "Options That Control Optimization"
  These options control various sorts of optimizations.
  .PP
*************** function calls and pops them all at once
*** 6913,6919 ****
  Disabled at levels \fB\-O\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
  .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.
--- 6915,6921 ----
  Disabled at levels \fB\-O\fR, \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR.
  .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.
*************** restore frame pointers; it also makes an
*** 6939,6945 ****
  in many functions.  \fBIt also makes debugging impossible on
  some machines.\fR
  .Sp
! On some machines, such as the \s-1VAX\s0, this flag has no effect, because
  the standard calling sequence automatically handles the frame pointer
  and nothing is saved by pretending it doesn't exist.  The
  machine-description macro \f(CW\*(C`FRAME_POINTER_REQUIRED\*(C'\fR controls
--- 6941,6947 ----
  in many functions.  \fBIt also makes debugging impossible on
  some machines.\fR
  .Sp
! On some machines, such as the \s-1VAX,\s0 this flag has no effect, because
  the standard calling sequence automatically handles the frame pointer
  and nothing is saved by pretending it doesn't exist.  The
  machine-description macro \f(CW\*(C`FRAME_POINTER_REQUIRED\*(C'\fR controls
*************** attribute or declspec
*** 7064,7070 ****
  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\s0 C90.  In \*(C+, emit any and all
  inline functions into the object file.
  .IP "\fB\-fkeep\-static\-consts\fR" 4
  .IX Item "-fkeep-static-consts"
--- 7066,7072 ----
  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\-consts\fR" 4
  .IX Item "-fkeep-static-consts"
*************** The default is \fB\-ffunction\-cse\fR
*** 7131,7137 ****
  .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
--- 7133,7139 ----
  .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
*************** instructions to support this.  Enabled b
*** 7254,7264 ****
  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\-O\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\-O\fR and higher.
  .IP "\fB\-fif\-conversion\fR" 4
  .IX Item "-fif-conversion"
--- 7256,7266 ----
  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\-O\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\-O\fR and higher.
  .IP "\fB\-fif\-conversion\fR" 4
  .IX Item "-fif-conversion"
*************** The default value is 5.  If the value \f
*** 7418,7424 ****
  the dump output is sent to stderr using the same format as \fIn\fR minus 10.
  .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
--- 7420,7426 ----
  the dump output is sent to stderr using the same format as \fIn\fR minus 10.
  .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
*************** When pipelining loops during selective s
*** 7577,7585 ****
  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
--- 7579,7587 ----
  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
*************** at \fB\-O\fR and higher.
*** 7649,7655 ****
  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\-O\fR and higher.
  .IP "\fB\-ftree\-phiprop\fR" 4
  .IX Item "-ftree-phiprop"
--- 7651,7657 ----
  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\-O\fR and higher.
  .IP "\fB\-ftree\-phiprop\fR" 4
  .IX Item "-ftree-phiprop"
*************** The optimization reduces code size and m
*** 7720,7726 ****
  a function by equivalent one with a different name. The optimization works
  more effectively with link time optimization enabled.
  .Sp
! Nevertheless the behavior is similar to Gold Linker \s-1ICF\s0 optimization, \s-1GCC\s0 \s-1ICF\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
--- 7722,7728 ----
  a function by equivalent one with a different name. The optimization works
  more effectively with link time optimization enabled.
  .Sp
! Nevertheless the behavior is similar to Gold Linker \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
*************** pass only operates on local scalar varia
*** 7755,7761 ****
  at \fB\-O\fR and higher.
  .IP "\fB\-fssa\-phiopt\fR" 4
  .IX Item "-fssa-phiopt"
! Perform pattern matching on \s-1SSA\s0 \s-1PHI\s0 nodes to optimize conditional
  code.  This pass is enabled by default at \fB\-O\fR and higher.
  .IP "\fB\-ftree\-switch\-conversion\fR" 4
  .IX Item "-ftree-switch-conversion"
--- 7757,7763 ----
  at \fB\-O\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\-O\fR and higher.
  .IP "\fB\-ftree\-switch\-conversion\fR" 4
  .IX Item "-ftree-switch-conversion"
*************** Enable the identity transformation for g
*** 7912,7918 ****
  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 \s-1ISL\s0, like index splitting and
  dead code elimination in loops.
  .IP "\fB\-floop\-nest\-optimize\fR" 4
  .IX Item "-floop-nest-optimize"
--- 7914,7920 ----
  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 \s-1ISL,\s0 like index splitting and
  dead code elimination in loops.
  .IP "\fB\-floop\-nest\-optimize\fR" 4
  .IX Item "-floop-nest-optimize"
*************** targets.
*** 8417,8423 ****
  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
--- 8419,8425 ----
  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
*************** link time.
*** 8560,8566 ****
  .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\s0 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
--- 8562,8568 ----
  .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
*************** regular (non-LTO) compilation.
*** 8583,8589 ****
  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
--- 8585,8591 ----
  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
*************** The current implementation of \s-1LTO\s0
*** 8618,8624 ****
  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.  Combining \fB\-flto\fR with
--- 8620,8626 ----
  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.  Combining \fB\-flto\fR with
*************** and the object code. This makes them usa
*** 8701,8708 ****
  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
--- 8703,8710 ----
  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
*************** E.g.
*** 8811,8817 ****
  .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
--- 8813,8819 ----
  .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
*************** operations are carried out in the precis
*** 8849,8855 ****
  it is unpredictable when rounding to the types specified in the source
  code takes place.  When compiling C, if
  \&\fB\-fexcess\-precision=standard\fR is specified then excess
! precision follows the rules specified in \s-1ISO\s0 C99; 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 if a strict
--- 8851,8857 ----
  it is unpredictable when rounding to the types specified in the source
  code takes place.  When compiling C, if
  \&\fB\-fexcess\-precision=standard\fR is specified then excess
! precision follows the rules specified in \s-1ISO C99\s0; 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 if a strict
*************** The default is \fB\-fno\-unsafe\-math\-o
*** 8913,8919 ****
  .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\s0 C 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
--- 8915,8921 ----
  .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
*************** whether the result of a complex multipli
*** 9016,9022 ****
  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\s0 C99
  \&\f(CW\*(C`CX_LIMITED_RANGE\*(C'\fR pragma.  Nevertheless, the option applies to
  all languages.
  .IP "\fB\-fcx\-fortran\-rules\fR" 4
--- 9018,9024 ----
  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
*************** optimization is not done.
*** 9288,9294 ****
  .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\s0 \s-1PRE\s0 inserts or removes the expression and thus
  leaves partially redundant computations in the instruction stream.  The default value is 20.
  .IP "\fBmax-pending-list-length\fR" 4
  .IX Item "max-pending-list-length"
--- 9290,9296 ----
  .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.  The default value is 20.
  .IP "\fBmax-pending-list-length\fR" 4
  .IX Item "max-pending-list-length"
*************** when modulo scheduling a loop.  Larger v
*** 9303,9309 ****
  compilation time.
  .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
--- 9305,9311 ----
  compilation time.
  .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
*************** Tuning this may improve compilation spee
*** 9659,9665 ****
  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\s0\*(R" 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
--- 9661,9667 ----
  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
*************** by \fBggc-min-expand\fR% beyond \fBggc-m
*** 9674,9680 ****
  tuning this may improve compilation speed, and has no effect on code
  generation.
  .Sp
! The default is the smaller of \s-1RAM/8\s0, \s-1RLIMIT_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
--- 9676,9682 ----
  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
*************** This value is the best found from numero
*** 9899,9905 ****
  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 of the parameter is 40.  The 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"
--- 9901,9907 ----
  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 of the parameter is 40.  The 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"
*************** automaton.  The default is 50.
*** 10153,10159 ****
  .RE
  .RS 4
  .RE
! .Sh "Options Controlling the Preprocessor"
  .IX Subsection "Options Controlling the Preprocessor"
  These options control the C preprocessor, which is run on each C source
  file before actual compilation.
--- 10155,10161 ----
  .RE
  .RS 4
  .RE
! .SS "Options Controlling the Preprocessor"
  .IX Subsection "Options Controlling the Preprocessor"
  These options control the C preprocessor, which is run on each C source
  file before actual compilation.
*************** get trigraph conversion without warnings
*** 10277,10283 ****
  .IP "\fB\-Wtraditional\fR" 4
  .IX Item "-Wtraditional"
  Warn about certain constructs that behave differently in traditional and
! \&\s-1ISO\s0 C.  Also warn about \s-1ISO\s0 C constructs that have no traditional C
  equivalent, and problematic constructs which should be avoided.
  .IP "\fB\-Wundef\fR" 4
  .IX Item "-Wundef"
--- 10279,10285 ----
  .IP "\fB\-Wtraditional\fR" 4
  .IX Item "-Wtraditional"
  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 problematic constructs which should be avoided.
  .IP "\fB\-Wundef\fR" 4
  .IX Item "-Wundef"
*************** in finding bugs in your own code, theref
*** 10330,10336 ****
  responsible for the system library, you may want to see them.
  .IP "\fB\-w\fR" 4
  .IX Item "-w"
! Suppress all warnings, including those which \s-1GNU\s0 \s-1CPP\s0 issues by default.
  .IP "\fB\-pedantic\fR" 4
  .IX Item "-pedantic"
  Issue all the mandatory diagnostics listed in the C standard.  Some of
--- 10332,10338 ----
  responsible for the system library, you may want to see them.
  .IP "\fB\-w\fR" 4
  .IX Item "-w"
! Suppress all warnings, including those which \s-1GNU CPP\s0 issues by default.
  .IP "\fB\-pedantic\fR" 4
  .IX Item "-pedantic"
  Issue all the mandatory diagnostics listed in the C standard.  Some of
*************** This option allows use of a precompiled
*** 10470,10479 ****
  \&\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
--- 10472,10481 ----
  \&\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
*************** may be one of:
*** 10526,10532 ****
  .el .IP "\f(CWiso9899:1990\fR" 4
  .IX Item "iso9899:1990"
  .PD
! The \s-1ISO\s0 C standard from 1990.  \fBc90\fR is the customary shorthand for
  this version of the standard.
  .Sp
  The \fB\-ansi\fR option is equivalent to \fB\-std=c90\fR.
--- 10528,10534 ----
  .el .IP "\f(CWiso9899:1990\fR" 4
  .IX Item "iso9899:1990"
  .PD
! The \s-1ISO C\s0 standard from 1990.  \fBc90\fR is the customary shorthand for
  this version of the standard.
  .Sp
  The \fB\-ansi\fR option is equivalent to \fB\-std=c90\fR.
*************** The 1990 C standard, as amended in 1994.
*** 10548,10554 ****
  .el .IP "\f(CWc9x\fR" 4
  .IX Item "c9x"
  .PD
! The revised \s-1ISO\s0 C standard, published in December 1999.  Before
  publication, this was known as C9X.
  .ie n .IP """iso9899:2011""" 4
  .el .IP "\f(CWiso9899:2011\fR" 4
--- 10550,10556 ----
  .el .IP "\f(CWc9x\fR" 4
  .IX Item "c9x"
  .PD
! The revised \s-1ISO C\s0 standard, published in December 1999.  Before
  publication, this was known as C9X.
  .ie n .IP """iso9899:2011""" 4
  .el .IP "\f(CWiso9899:2011\fR" 4
*************** publication, this was known as C9X.
*** 10561,10567 ****
  .el .IP "\f(CWc1x\fR" 4
  .IX Item "c1x"
  .PD
! The revised \s-1ISO\s0 C standard, published in December 2011.  Before
  publication, this was known as C1X.
  .ie n .IP """gnu90""" 4
  .el .IP "\f(CWgnu90\fR" 4
--- 10563,10569 ----
  .el .IP "\f(CWc1x\fR" 4
  .IX Item "c1x"
  .PD
! The revised \s-1ISO C\s0 standard, published in December 2011.  Before
  publication, this was known as C1X.
  .ie n .IP """gnu90""" 4
  .el .IP "\f(CWgnu90\fR" 4
*************** The 2011 C standard plus \s-1GNU\s0 exte
*** 10593,10599 ****
  .ie n .IP """c++98""" 4
  .el .IP "\f(CWc++98\fR" 4
  .IX Item "c++98"
! The 1998 \s-1ISO\s0 \*(C+ standard plus amendments.
  .ie n .IP """gnu++98""" 4
  .el .IP "\f(CWgnu++98\fR" 4
  .IX Item "gnu++98"
--- 10595,10601 ----
  .ie n .IP """c++98""" 4
  .el .IP "\f(CWc++98\fR" 4
  .IX Item "c++98"
! The 1998 \s-1ISO \*(C+\s0 standard plus amendments.
  .ie n .IP """gnu++98""" 4
  .el .IP "\f(CWgnu++98\fR" 4
  .IX Item "gnu++98"
*************** line.  If the value is less than 1 or gr
*** 10745,10751 ****
  ignored.  The default is 8.
  .IP "\fB\-fdebug\-cpp\fR" 4
  .IX Item "-fdebug-cpp"
! This option is only useful for debugging \s-1GCC\s0.  When used with
  \&\fB\-E\fR, dumps debugging information about location maps.  Every
  token in the output is preceded by the dump of the map its location
  belongs to.  The dump of the map holding the location of a token would
--- 10747,10753 ----
  ignored.  The default is 8.
  .IP "\fB\-fdebug\-cpp\fR" 4
  .IX Item "-fdebug-cpp"
! This option is only useful for debugging \s-1GCC.\s0  When used with
  \&\fB\-E\fR, dumps debugging information about location maps.  Every
  token in the output is preceded by the dump of the map its location
  belongs to.  The dump of the map holding the location of a token would
*************** Note that \f(CW\*(C`\-ftrack\-macro\-exp
*** 10778,10789 ****
  .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 \s-1UTF\-32\s0 or \s-1UTF\-16\s0, whichever
  corresponds to the width of \f(CW\*(C`wchar_t\*(C'\fR.  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
--- 10780,10791 ----
  .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 \s-1UTF\-32\s0 or \s-1UTF\-16,\s0 whichever
  corresponds to the width of \f(CW\*(C`wchar_t\*(C'\fR.  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
*** 10791,10799 ****
  .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.
--- 10793,10801 ----
  .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.
*************** Cancel an assertion with the predicate \
*** 10830,10836 ****
  .IX Item "-dCHARS"
  \&\fI\s-1CHARS\s0\fR is a sequence of one or more of the following characters,
  and must not be preceded by a space.  Other characters are interpreted
! by the compiler proper, or reserved for future versions of \s-1GCC\s0, and so
  are silently ignored.  If you specify characters whose behavior
  conflicts, the result is undefined.
  .RS 4
--- 10832,10838 ----
  .IX Item "-dCHARS"
  \&\fI\s-1CHARS\s0\fR is a sequence of one or more of the following characters,
  and must not be preceded by a space.  Other characters are interpreted
! by the compiler proper, or reserved for future versions of \s-1GCC,\s0 and so
  are silently ignored.  If you specify characters whose behavior
  conflicts, the result is undefined.
  .RS 4
*************** The \fB\-CC\fR option is generally used
*** 10906,10917 ****
  .IP "\fB\-traditional\-cpp\fR" 4
  .IX Item "-traditional-cpp"
  Try to imitate the behavior of old-fashioned C preprocessors, as
! opposed to \s-1ISO\s0 C preprocessors.
  .IP "\fB\-trigraphs\fR" 4
  .IX Item "-trigraphs"
  Process trigraph sequences.
  These are three-character sequences, all starting with \fB??\fR, that
! are defined by \s-1ISO\s0 C 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.  By default, \s-1GCC\s0 ignores trigraphs, but in
  standard-conforming modes it converts them.  See the \fB\-std\fR and
--- 10908,10919 ----
  .IP "\fB\-traditional\-cpp\fR" 4
  .IX Item "-traditional-cpp"
  Try to imitate the behavior of old-fashioned C preprocessors, as
! opposed to \s-1ISO C\s0 preprocessors.
  .IP "\fB\-trigraphs\fR" 4
  .IX Item "-trigraphs"
  Process trigraph sequences.
  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.  By default, \s-1GCC\s0 ignores trigraphs, but in
  standard-conforming modes it converts them.  See the \fB\-std\fR and
*************** Print text describing all the command-li
*** 10937,10943 ****
  preprocessing anything.
  .IP "\fB\-v\fR" 4
  .IX Item "-v"
! Verbose mode.  Print out \s-1GNU\s0 \s-1CPP\s0's version number at the beginning of
  execution, and report the final form of the include path.
  .IP "\fB\-H\fR" 4
  .IX Item "-H"
--- 10939,10945 ----
  preprocessing anything.
  .IP "\fB\-v\fR" 4
  .IX Item "-v"
! Verbose mode.  Print out \s-1GNU CPP\s0's version number at the beginning of
  execution, and report the final form of the include path.
  .IP "\fB\-H\fR" 4
  .IX Item "-H"
*************** header file is printed with \fB...x\fR a
*** 10952,10960 ****
  .IP "\fB\-\-version\fR" 4
  .IX Item "--version"
  .PD
! Print out \s-1GNU\s0 \s-1CPP\s0's version number.  With one dash, proceed to
  preprocess as normal.  With two dashes, exit immediately.
! .Sh "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
--- 10954,10962 ----
  .IP "\fB\-\-version\fR" 4
  .IX Item "--version"
  .PD
! Print out \s-1GNU CPP\s0's version number.  With one dash, proceed to
  preprocess as normal.  With two dashes, exit immediately.
! .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
*************** recognize.
*** 10969,10975 ****
  .Sp
  If you want to pass an option that takes an argument, you must use
  \&\fB\-Xassembler\fR twice, once for the option and once for the argument.
! .Sh "Options for Linking"
  .IX Subsection "Options for Linking"
  These options come into play when the compiler links object files into
  an executable output file.  They are meaningless if the compiler is
--- 10971,10977 ----
  .Sp
  If you want to pass an option that takes an argument, you must use
  \&\fB\-Xassembler\fR twice, once for the option and once for the argument.
! .SS "Options for Linking"
  .IX Subsection "Options for Linking"
  These options come into play when the compiler links object files into
  an executable output file.  They are meaningless if the compiler is
*************** different symbols to force loading of ad
*** 11256,11262 ****
  \&\fB\-z\fR is passed directly on to the linker along with the keyword
  \&\fIkeyword\fR. See the section in the documentation of your linker for
  permitted values and their meanings.
! .Sh "Options for Directory Search"
  .IX Subsection "Options for Directory Search"
  These options specify directories to search for header files, for
  libraries and for parts of the compiler:
--- 11258,11264 ----
  \&\fB\-z\fR is passed directly on to the linker along with the keyword
  \&\fIkeyword\fR. See the section in the documentation of your linker for
  permitted values and their meanings.
! .SS "Options for Directory Search"
  .IX Subsection "Options for Directory Search"
  These options specify directories to search for header files, for
  libraries and for parts of the compiler:
*************** by default, but it is often satisfactory
*** 11392,11404 ****
  \&\fB\-I\-\fR does not inhibit the use of the standard system directories
  for header files.  Thus, \fB\-I\-\fR and \fB\-nostdinc\fR are
  independent.
! .Sh "Specifying Target Machine and Compiler Version"
  .IX Subsection "Specifying Target Machine and Compiler Version"
  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 version other than the
  one that was installed last.
! .Sh "Hardware Models and Configurations"
  .IX Subsection "Hardware Models and Configurations"
  Each target machine types can have its own
  special options, starting with \fB\-m\fR, to choose among various
--- 11394,11406 ----
  \&\fB\-I\-\fR does not inhibit the use of the standard system directories
  for header files.  Thus, \fB\-I\-\fR and \fB\-nostdinc\fR are
  independent.
! .SS "Specifying Target Machine and Compiler Version"
  .IX Subsection "Specifying Target Machine and Compiler Version"
  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 version other than the
  one that was installed last.
! .SS "Hardware Models and Configurations"
  .IX Subsection "Hardware Models and Configurations"
  Each target machine types can have its own
  special options, starting with \fB\-m\fR, to choose among various
*************** but long int and pointer are 64\-bit.
*** 11424,11430 ****
  .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.
  .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
--- 11426,11432 ----
  .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.
  .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
*************** This is the mode used for floating-point
*** 11660,11666 ****
  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
--- 11662,11668 ----
  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
*************** values for \fIcpu\fR are
*** 11722,11734 ****
  .RS 4
  .IP "\fB\s-1ARC600\s0\fR" 4
  .IX Item "ARC600"
! Compile for \s-1ARC600\s0.  Aliases: \fB\-mA6\fR, \fB\-mARC600\fR.
  .IP "\fB\s-1ARC601\s0\fR" 4
  .IX Item "ARC601"
! Compile for \s-1ARC601\s0.  Alias: \fB\-mARC601\fR.
  .IP "\fB\s-1ARC700\s0\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.
  .RE
  .RS 4
--- 11724,11736 ----
  .RS 4
  .IP "\fB\s-1ARC600\s0\fR" 4
  .IX Item "ARC600"
! Compile for \s-1ARC600.\s0  Aliases: \fB\-mA6\fR, \fB\-mARC600\fR.
  .IP "\fB\s-1ARC601\s0\fR" 4
  .IX Item "ARC601"
! Compile for \s-1ARC601.\s0  Alias: \fB\-mARC601\fR.
  .IP "\fB\s-1ARC700\s0\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.
  .RE
  .RS 4
*************** Generate Extended arithmetic instruction
*** 11755,11761 ****
  supported.  This is always enabled for \fB\-mcpu=ARC700\fR.
  .IP "\fB\-mno\-mpy\fR" 4
  .IX Item "-mno-mpy"
! Do not generate mpy instructions for \s-1ARC700\s0.
  .IP "\fB\-mmul32x16\fR" 4
  .IX Item "-mmul32x16"
  Generate 32x16 bit multiply and mac instructions.
--- 11757,11763 ----
  supported.  This is always enabled for \fB\-mcpu=ARC700\fR.
  .IP "\fB\-mno\-mpy\fR" 4
  .IX Item "-mno-mpy"
! Do not generate mpy instructions for \s-1ARC700.\s0
  .IP "\fB\-mmul32x16\fR" 4
  .IX Item "-mmul32x16"
  Generate 32x16 bit multiply and mac instructions.
*************** implementation.
*** 11780,11786 ****
  implementation.
  .IP "\fB\-msimd\fR" 4
  .IX Item "-msimd"
! Enable generation of \s-1ARC\s0 \s-1SIMD\s0 instructions via target-specific
  builtins.  Only valid for \fB\-mcpu=ARC700\fR.
  .IP "\fB\-msoft\-float\fR" 4
  .IX Item "-msoft-float"
--- 11782,11788 ----
  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"
*************** optimizers then assume that indexed stor
*** 11947,11953 ****
  the case.
  .IP "\fB\-mlra\fR" 4
  .IX Item "-mlra"
! Enable Local Register Allocation.  This is still experimental for \s-1ARC\s0,
  so by default the compiler uses standard reload
  (i.e. \fB\-mno\-lra\fR).
  .IP "\fB\-mlra\-priority\-none\fR" 4
--- 11949,11955 ----
  the case.
  .IP "\fB\-mlra\fR" 4
  .IX Item "-mlra"
! Enable Local Register Allocation.  This is still experimental for \s-1ARC,\s0
  so by default the compiler uses standard reload
  (i.e. \fB\-mno\-lra\fR).
  .IP "\fB\-mlra\-priority\-none\fR" 4
*************** The following options are maintained for
*** 12053,12059 ****
  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
--- 12055,12061 ----
  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
*************** Replaced by \fB\-mmultcost\fR.
*** 12116,12122 ****
  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"
--- 12118,12124 ----
  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"
*************** and uses FPU-specific calling convention
*** 12160,12166 ****
  .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\-mlittle\-endian\fR" 4
  .IX Item "-mlittle-endian"
--- 12162,12168 ----
  .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\-mlittle\-endian\fR" 4
  .IX Item "-mlittle-endian"
*************** If the selected floating-point hardware
*** 12290,12296 ****
  (e.g. \fB\-mfpu\fR=\fBneon\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\s0 754 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.
  .IP "\fB\-mfp16\-format=\fR\fIname\fR" 4
--- 12292,12298 ----
  (e.g. \fB\-mfpu\fR=\fBneon\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.
  .IP "\fB\-mfp16\-format=\fR\fIname\fR" 4
*************** otherwise the default is \fBR10\fR.
*** 12363,12369 ****
  .IX Item "-mpic-data-is-text-relative"
  Assume that each data segments are relative to text segment at load time.
  Therefore, it permits addressing data using PC-relative operations.
! This option is on by default for targets other than VxWorks \s-1RTP\s0.
  .IP "\fB\-mpoke\-function\-name\fR" 4
  .IX Item "-mpoke-function-name"
  Write the name of each function into the text section, directly
--- 12365,12371 ----
  .IX Item "-mpic-data-is-text-relative"
  Assume that each data segments are relative to text segment at load time.
  Therefore, it permits addressing data using PC-relative operations.
! This option is on by default for targets other than VxWorks \s-1RTP.\s0
  .IP "\fB\-mpoke\-function\-name\fR" 4
  .IX Item "-mpoke-function-name"
  Write the name of each function into the text section, directly
*************** off by default.
*** 12487,12493 ****
  Assume inline assembler is using unified asm syntax.  The default is
  currently off which implies divided syntax.  Currently this option is
  available only for Thumb1 and has no effect on \s-1ARM\s0 state and 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"
--- 12489,12495 ----
  Assume inline assembler is using unified asm syntax.  The default is
  currently off which implies divided syntax.  Currently this option is
  available only for Thumb1 and has no effect on \s-1ARM\s0 state and 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"
*************** The default for this option is@tie{}\fBa
*** 12556,12592 ****
  .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@tie{}KiB of program memory.
  \&\fImcu\fR\f(CW@tie\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\s0\*(R" devices with more than 8@tie{}KiB and up to 64@tie{}KiB of program memory.
  \&\fImcu\fR\f(CW@tie\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`atxmega8e5\*(C'\fR.
  .ie n .IP """avrxmega4""" 4
  .el .IP "\f(CWavrxmega4\fR" 4
  .IX Item "avrxmega4"
! \&\*(L"\s-1XMEGA\s0\*(R" devices with more than 64@tie{}KiB and up to 128@tie{}KiB of program memory.
  \&\fImcu\fR\f(CW@tie\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.
  .ie n .IP """avrxmega5""" 4
  .el .IP "\f(CWavrxmega5\fR" 4
  .IX Item "avrxmega5"
! \&\*(L"\s-1XMEGA\s0\*(R" devices with more than 64@tie{}KiB and up to 128@tie{}KiB of program memory and more than 64@tie{}KiB of \s-1RAM\s0.
  \&\fImcu\fR\f(CW@tie\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\s0\*(R" devices with more than 128@tie{}KiB of program memory.
  \&\fImcu\fR\f(CW@tie\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\s0\*(R" devices with more than 128@tie{}KiB of program memory and more than 64@tie{}KiB of \s-1RAM\s0.
  \&\fImcu\fR\f(CW@tie\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"\s-1TINY\s0\*(R" Tiny core devices with 512@tie{}B up to 4@tie{}KiB of program memory.
  \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`attiny10\*(C'\fR, \f(CW\*(C`attiny20\*(C'\fR, \f(CW\*(C`attiny4\*(C'\fR, \f(CW\*(C`attiny40\*(C'\fR, \f(CW\*(C`attiny5\*(C'\fR, \f(CW\*(C`attiny9\*(C'\fR.
  .ie n .IP """avr1""" 4
  .el .IP "\f(CWavr1\fR" 4
--- 12558,12594 ----
  .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@tie{}KiB of program memory.
  \&\fImcu\fR\f(CW@tie\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@tie{}KiB and up to 64@tie{}KiB of program memory.
  \&\fImcu\fR\f(CW@tie\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`atxmega8e5\*(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@tie{}KiB and up to 128@tie{}KiB of program memory.
  \&\fImcu\fR\f(CW@tie\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.
  .ie n .IP """avrxmega5""" 4
  .el .IP "\f(CWavrxmega5\fR" 4
  .IX Item "avrxmega5"
! \&\*(L"\s-1XMEGA\*(R"\s0 devices with more than 64@tie{}KiB and up to 128@tie{}KiB of program memory and more than 64@tie{}KiB of \s-1RAM.\s0
  \&\fImcu\fR\f(CW@tie\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@tie{}KiB of program memory.
  \&\fImcu\fR\f(CW@tie\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@tie{}KiB of program memory and more than 64@tie{}KiB of \s-1RAM.\s0
  \&\fImcu\fR\f(CW@tie\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"\s-1TINY\*(R"\s0 Tiny core devices with 512@tie{}B up to 4@tie{}KiB of program memory.
  \&\fImcu\fR\f(CW@tie\fR{}= \f(CW\*(C`attiny10\*(C'\fR, \f(CW\*(C`attiny20\*(C'\fR, \f(CW\*(C`attiny4\*(C'\fR, \f(CW\*(C`attiny40\*(C'\fR, \f(CW\*(C`attiny5\*(C'\fR, \f(CW\*(C`attiny9\*(C'\fR.
  .ie n .IP """avr1""" 4
  .el .IP "\f(CWavr1\fR" 4
*************** performed as
*** 12691,12701 ****
  Only change the lower 8@tie{}bits of the stack pointer.
  .IP "\fB\-nodevicelib\fR" 4
  .IX Item "-nodevicelib"
! Don't link against AVR-LibC's device specific library \f(CW\*(C`libdev.a\*(C'\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.
  .PP
  \f(CW\*(C`EIND\*(C'\fR and Devices with More Than 128 Ki Bytes of Flash
  .IX Subsection "EIND and Devices with More Than 128 Ki Bytes of Flash"
--- 12693,12707 ----
  Only change the lower 8@tie{}bits of the stack pointer.
  .IP "\fB\-nodevicelib\fR" 4
  .IX Item "-nodevicelib"
! Don't link against AVR-LibC's device specific library \f(CW\*(C`lib<mcu>.a\*(C'\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 \f(CW\*(C`_\|_vector\*(C'\fR prefix.
+ Enabled by default.
  .PP
  \f(CW\*(C`EIND\*(C'\fR and Devices with More Than 128 Ki Bytes of Flash
  .IX Subsection "EIND and Devices with More Than 128 Ki Bytes of Flash"
*************** command-line option.
*** 12802,12808 ****
  .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
--- 12808,12814 ----
  .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
*************** for \fImcu\fR=\f(CW\*(C`avrtiny\*(C'\fR,
*** 12903,12909 ****
  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_\f(CIDevice\f(CW_\|_""" 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
--- 12909,12915 ----
  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
*************** This macro reflects the \fB\-mno\-interr
*** 13030,13036 ****
  .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
--- 13036,13042 ----
  .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.
*** 13038,13045 ****
  .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\s0, \s-1LAC\s0, \s-1LAS\s0 and \s-1LAT\s0).
! .ie n .IP """_\|_AVR_SFR_OFFSET_\|_=\f(CIoffset\f(CW""" 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
--- 13044,13051 ----
  .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
*************** should be used instead of \f(CW\*(C`main
*** 13222,13229 ****
  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
--- 13228,13235 ----
  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
*************** These options are defined specifically f
*** 13282,13288 ****
  .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 except for cris-axis-linux-gnu, where the default is
  \&\fBv10\fR.
  .IP "\fB\-mtune=\fR\fIarchitecture-type\fR" 4
--- 13288,13294 ----
  .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 except for cris-axis-linux-gnu, where the default is
  \&\fBv10\fR.
  .IP "\fB\-mtune=\fR\fIarchitecture-type\fR" 4
*************** or storage for local variables needs to
*** 13375,13381 ****
  With \fB\-fpic\fR and \fB\-fPIC\fR, don't generate (do generate)
  instruction sequences that load addresses for functions from the \s-1PLT\s0 part
  of the \s-1GOT\s0 rather than (traditional on other architectures) calls to the
! \&\s-1PLT\s0.  The default is \fB\-mgotplt\fR.
  .IP "\fB\-melf\fR" 4
  .IX Item "-melf"
  Legacy no-op option only recognized with the cris-axis-elf and
--- 13381,13387 ----
  With \fB\-fpic\fR and \fB\-fPIC\fR, don't generate (do generate)
  instruction sequences that load addresses for functions from the \s-1PLT\s0 part
  of the \s-1GOT\s0 rather than (traditional on other architectures) calls to the
! \&\s-1PLT.\s0  The default is \fB\-mgotplt\fR.
  .IP "\fB\-melf\fR" 4
  .IX Item "-melf"
  Legacy no-op option only recognized with the cris-axis-elf and
*************** However, \fBfar\fR is not valid with \fB
*** 13431,13437 ****
  These options are defined for all architectures running the Darwin operating
  system.
  .PP
! \&\s-1FSF\s0 \s-1GCC\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
--- 13437,13443 ----
  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
*************** warn about constructs contained within h
*** 13491,13497 ****
  .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.
--- 13497,13503 ----
  .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.
*************** an executable when linking, using the Da
*** 13567,13573 ****
  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\-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"
--- 13573,13579 ----
  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\-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"
*************** before it can find the variables and con
*** 13867,13874 ****
  .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\s0,
! \&\s-1CIX\s0, \s-1FIX\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\-mfloat\-vax\fR" 4
--- 13873,13880 ----
  .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\-mfloat\-vax\fR" 4
*************** of the \s-1CPU\s0 on which \s-1GCC\s0 wa
*** 13877,13883 ****
  .IP "\fB\-mfloat\-ieee\fR" 4
  .IX Item "-mfloat-ieee"
  .PD
! Generate code that uses (does not use) \s-1VAX\s0 F and G floating-point
  arithmetic instead of \s-1IEEE\s0 single and double precision.
  .IP "\fB\-mexplicit\-relocs\fR" 4
  .IX Item "-mexplicit-relocs"
--- 13883,13889 ----
  .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"
*************** The default is \fB\-mlarge\-text\fR.
*** 13932,13938 ****
  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\s0, \s-1EV5\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.
--- 13938,13944 ----
  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.
*************** Schedules as an \s-1EV5\s0 and supports
*** 13977,13990 ****
  .IP "\fB21264\fR" 4
  .IX Item "21264"
  .PD
! Schedules as an \s-1EV6\s0 and supports the \s-1BWX\s0, \s-1FIX\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\s0, \s-1CIX\s0, \s-1FIX\s0, and \s-1MAX\s0 extensions.
  .RE
  .RS 4
  .Sp
--- 13983,13996 ----
  .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
*************** A decimal number representing clock cycl
*** 14025,14033 ****
  .IX Item "main"
  .PD
  The compiler contains estimates of the number of clock cycles for
! \&\*(L"typical\*(R" \s-1EV4\s0 & \s-1EV5\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
--- 14031,14039 ----
  .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
*************** Use multiply and add/subtract instructio
*** 14100,14106 ****
  Do not use multiply and add/subtract instructions.
  .IP "\fB\-mfdpic\fR" 4
  .IX Item "-mfdpic"
! Select the \s-1FDPIC\s0 \s-1ABI\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
--- 14106,14112 ----
  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
*************** Assume a large \s-1TLS\s0 segment when g
*** 14123,14129 ****
  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\s0 \s-1ABI\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.
--- 14129,14135 ----
  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.
*************** Select the processor type for which to g
*** 14267,14273 ****
  These \fB\-m\fR options are defined for GNU/Linux targets:
  .IP "\fB\-mglibc\fR" 4
  .IX Item "-mglibc"
! Use the \s-1GNU\s0 C library.  This is the default except
  on \fB*\-*\-linux\-*uclibc*\fR and \fB*\-*\-linux\-*android*\fR targets.
  .IP "\fB\-muclibc\fR" 4
  .IX Item "-muclibc"
--- 14273,14279 ----
  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 and \fB*\-*\-linux\-*android*\fR targets.
  .IP "\fB\-muclibc\fR" 4
  .IX Item "-muclibc"
*************** These \fB\-m\fR options are defined for
*** 14346,14353 ****
  .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\s0 1.0, \fB1.1\fR for \s-1PA\s0
! 1.1, and \fB2.0\fR for \s-1PA\s0 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
--- 14352,14359 ----
  .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
*************** floating-point operations, the compiler
*** 14373,14379 ****
  .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\-mno\-space\-regs\fR" 4
  .IX Item "-mno-space-regs"
  Generate code that assumes the target has no space registers.  This allows
--- 14379,14385 ----
  .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\-mno\-space\-regs\fR" 4
  .IX Item "-mno-space-regs"
  Generate code that assumes the target has no space registers.  This allows
*************** cross-compilation.
*** 14430,14442 ****
  \&\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\-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\-mgnu\-ld\fR" 4
  .IX Item "-mgnu-ld"
--- 14436,14448 ----
  \&\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\-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\-mgnu\-ld\fR" 4
  .IX Item "-mgnu-ld"
*************** The \fBld\fR that is called is determine
*** 14450,14456 ****
  \&\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.
--- 14456,14462 ----
  \&\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.
*************** The \fBld\fR that is called is determine
*** 14464,14470 ****
  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\-mlong\-calls\fR" 4
  .IX Item "-mlong-calls"
  Generate code that uses long call sequences.  This ensures that a call
--- 14470,14476 ----
  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\-mlong\-calls\fR" 4
  .IX Item "-mlong-calls"
  Generate code that uses long call sequences.  This ensures that a call
*************** long calls only when the distance from t
*** 14473,14479 ****
  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\s0 2.0 and \s-1PA\s0 1.X architectures.  Sibcalls are always limited at
  240,000 bytes.
  .Sp
  Distances are measured from the beginning of functions when using the
--- 14479,14485 ----
  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
*************** is available on HP-UX 10.10 and later.
*** 14501,14507 ****
  \&\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\s0 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,
--- 14507,14513 ----
  \&\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,
*************** Generate (or don't) code for the \s-1GNU
*** 14567,14573 ****
  .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\s0 \s-1ABI\s0.
  .IP "\fB\-mvolatile\-asm\-stop\fR" 4
  .IX Item "-mvolatile-asm-stop"
  .PD 0
--- 14573,14579 ----
  .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
*************** instructions.  The default is to use the
*** 14647,14653 ****
  .IP "\fB\-mdwarf2\-asm\fR" 4
  .IX Item "-mdwarf2-asm"
  .PD
! Don't (or do) generate assembler code for the \s-1DWARF\s0 2 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"
--- 14653,14659 ----
  .IP "\fB\-mdwarf2\-asm\fR" 4
  .IX Item "-mdwarf2-asm"
  .PD
! Don't (or do) generate assembler code for the \s-1DWARF 2\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"
*************** Specify bit size of immediate \s-1TLS\s0
*** 14671,14677 ****
  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
--- 14677,14683 ----
  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
*************** have to be emulated by software on the 6
*** 15120,15126 ****
  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
--- 15126,15132 ----
  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 wit
*** 15129,15144 ****
  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\s0, \s-1MCF5203\s0, \s-1MCF5204\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"
--- 15135,15150 ----
  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"
*************** The option is now deprecated in favor of
*** 15147,15157 ****
  \&\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"
--- 15153,15163 ----
  \&\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"
*************** The option is equivalent to \fB\-march=6
*** 15182,15195 ****
  .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
--- 15188,15201 ----
  .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
*************** Generate (do not generate) ColdFire hard
*** 15200,15206 ****
  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
--- 15206,15212 ----
  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
*************** that works if the \s-1GOT\s0 has more th
*** 15319,15325 ****
  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:
--- 15325,15331 ----
  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:
*************** useful unless you also provide \fB\-mmin
*** 15461,15467 ****
  Selects one of the built-in core configurations.  Each MeP chip has
  one or more modules in it; each module has a core \s-1CPU\s0 and a variety of
  coprocessors, optional instructions, and peripherals.  The
! \&\f(CW\*(C`MeP\-Integrator\*(C'\fR tool, not part of \s-1GCC\s0, provides these
  configurations through this option; using this option is the same as
  using all the corresponding command-line options.  The default
  configuration is \fBdefault\fR.
--- 15467,15473 ----
  Selects one of the built-in core configurations.  Each MeP chip has
  one or more modules in it; each module has a core \s-1CPU\s0 and a variety of
  coprocessors, optional instructions, and peripherals.  The
! \&\f(CW\*(C`MeP\-Integrator\*(C'\fR tool, not part of \s-1GCC,\s0 provides these
  configurations through this option; using this option is the same as
  using all the corresponding command-line options.  The default
  configuration is \fBdefault\fR.
*************** Do not optimize block moves, use \f(CW\*
*** 15564,15570 ****
  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,
--- 15570,15576 ----
  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,
*************** configurations.
*** 15650,15656 ****
  .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\s0 \s-1ISA\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,
--- 15656,15662 ----
  .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,
*************** Equivalent to \fB\-march=mips64r6\fR.
*** 15778,15784 ****
  .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.
--- 15784,15790 ----
  .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.
*************** not intended for ordinary use in compili
*** 15793,15799 ****
  .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\s0 \s-1ISA\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
--- 15799,15805 ----
  .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
*************** and are retained for backwards compatibi
*** 15821,15840 ****
  .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
  <\fBhttp://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\s0, \s-1MIPS32R3\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
--- 15827,15846 ----
  .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
  <\fBhttp://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
*************** a transition from 32\-bit to 64\-bit reg
*** 15849,15855 ****
  (\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
--- 15855,15861 ----
  (\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
*************** executables both smaller and quicker.
*** 15896,15902 ****
  .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
--- 15902,15908 ----
  .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
*************** You can make \fB\-mplt\fR the default by
*** 15911,15917 ****
  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:
--- 15917,15923 ----
  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:
*************** operations.  This is the default.
*** 15979,15986 ****
  .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\s0 \s-1ABI\s0, \fB\-mno\-odd\-spreg\fR
  is set by default.
  .IP "\fB\-mabs=2008\fR" 4
  .IX Item "-mabs=2008"
--- 15985,15992 ----
  .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"
*************** is set by default.
*** 15989,15995 ****
  .IX Item "-mabs=legacy"
  .PD
  These options control the treatment of the special not-a-number (NaN)
! \&\s-1IEEE\s0 754 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
--- 15995,16001 ----
  .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
*************** manipulate the sign bit of floating-poin
*** 16000,16006 ****
  instead unless the \fB\-ffinite\-math\-only\fR option has also been
  specified.
  .Sp
! The \fB\-mabs=2008\fR option selects the \s-1IEEE\s0 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
--- 16006,16012 ----
  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.
*** 16012,16025 ****
  .IX Item "-mnan=legacy"
  .PD
  These options control the encoding of the special not-a-number (NaN)
! \&\s-1IEEE\s0 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 signalling 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\s0 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.
--- 16018,16031 ----
  .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 signalling 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.
*************** configurations; see the installation doc
*** 16049,16055 ****
  .IP "\fB\-mno\-dsp\fR" 4
  .IX Item "-mno-dsp"
  .PD
! Use (do not use) revision 1 of the \s-1MIPS\s0 \s-1DSP\s0 \s-1ASE\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.
--- 16055,16061 ----
  .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.
*************** preprocessor macro \f(CW\*(C`_\|_mips_ds
*** 16059,16065 ****
  .IP "\fB\-mno\-dspr2\fR" 4
  .IX Item "-mno-dspr2"
  .PD
! Use (do not use) revision 2 of the \s-1MIPS\s0 \s-1DSP\s0 \s-1ASE\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.
--- 16065,16071 ----
  .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.
*************** It also defines \f(CW\*(C`_\|_mips_dsp_r
*** 16069,16075 ****
  .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
--- 16075,16081 ----
  .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
*************** hardware floating-point support to be en
*** 16094,16100 ****
  .IP "\fB\-mno\-mips3d\fR" 4
  .IX Item "-mno-mips3d"
  .PD
! Use (do not use) the \s-1MIPS\-3D\s0 \s-1ASE\s0.  
  The option \fB\-mips3d\fR implies \fB\-mpaired\-single\fR.
  .IP "\fB\-mmicromips\fR" 4
  .IX Item "-mmicromips"
--- 16100,16106 ----
  .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"
*************** Use (do not use) \s-1MT\s0 Multithreadin
*** 16119,16125 ****
  .IP "\fB\-mno\-mcu\fR" 4
  .IX Item "-mno-mcu"
  .PD
! Use (do not use) the \s-1MIPS\s0 \s-1MCU\s0 \s-1ASE\s0 instructions.
  .IP "\fB\-meva\fR" 4
  .IX Item "-meva"
  .PD 0
--- 16125,16131 ----
  .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
*************** determined.
*** 16151,16157 ****
  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.
--- 16157,16163 ----
  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.
*************** or the same size as integer registers, w
*** 16162,16168 ****
  .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
--- 16168,16174 ----
  .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
*************** but other instructions must not do so.
*** 16267,16279 ****
  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
--- 16273,16285 ----
  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
*************** The default is \fB\-mcheck\-zero\-divisi
*** 16315,16321 ****
  .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\s0 \s-1II\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
--- 16321,16327 ----
  .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
*************** This option has no effect on abicalls co
*** 16353,16359 ****
  .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
--- 16359,16365 ----
  .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
*************** assembler files (with a \fB.s\fR suffix)
*** 16391,16397 ****
  .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
--- 16397,16403 ----
  .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
*************** otherwise.
*** 16452,16458 ****
  .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
--- 16458,16464 ----
  .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
*************** instructions.  These errata are handled
*** 16479,16485 ****
  .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.
--- 16485,16491 ----
  .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.
*************** instructions are available instead.
*** 16489,16495 ****
  .IP "\fB\-mno\-fix\-sb1\fR" 4
  .IX Item "-mno-fix-sb1"
  .PD
! Work around certain \s-1SB\-1\s0 \s-1CPU\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
--- 16495,16501 ----
  .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
*************** Specifies whether \s-1FP\s0 exceptions a
*** 16603,16609 ****
  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
--- 16609,16615 ----
  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
*************** instructions together if the first one i
*** 16617,16623 ****
  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
--- 16623,16629 ----
  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
*************** to the \f(CW\*(C`rE\*(C'\fR epsilon regi
*** 16706,16712 ****
  .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\s0 \s-1ABI\s0 which uses global registers \f(CW$231\fR and up.
  .IP "\fB\-mzero\-extend\fR" 4
  .IX Item "-mzero-extend"
  .PD 0
--- 16712,16718 ----
  .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
*************** Do not generate code using features spec
*** 16790,16796 ****
  is the default.
  .IP "\fB\-mam33\-2\fR" 4
  .IX Item "-mam33-2"
! Generate code using features specific to the \s-1AM33/2\s0.0 processor.
  .IP "\fB\-mam34\fR" 4
  .IX Item "-mam34"
  Generate code using features specific to the \s-1AM34\s0 processor.
--- 16796,16802 ----
  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.
*************** header file.
*** 16875,16882 ****
  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
--- 16881,16888 ----
  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
*************** This option is also passed on to the ass
*** 16889,16895 ****
  .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
--- 16895,16901 ----
  .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
*************** global pointer.
*** 17066,17072 ****
  .Sp
  The default is \fB\-mgpopt\fR except when \fB\-fpic\fR or
  \&\fB\-fPIC\fR is specified to generate position-independent code.
! Note that the Nios \s-1II\s0 \s-1ABI\s0 does not permit GP-relative accesses from
  shared libraries.
  .Sp
  You may need to specify \fB\-mno\-gpopt\fR explicitly when building
--- 17072,17078 ----
  .Sp
  The default is \fB\-mgpopt\fR except when \fB\-fpic\fR or
  \&\fB\-fPIC\fR is specified to generate position-independent code.
! Note that the Nios \s-1II ABI\s0 does not permit GP-relative accesses from
  shared libraries.
  .Sp
  You may need to specify \fB\-mno\-gpopt\fR explicitly when building
*************** of the default behavior of using a libra
*** 17139,17145 ****
  .Sp
  The following values of \fIinsn\fR are supported.  Except as otherwise
  noted, floating-point operations are expected to be implemented with
! normal \s-1IEEE\s0 754 semantics and correspond directly to the C operators or the
  equivalent \s-1GCC\s0 built-in functions.
  .Sp
  Single-precision floating point:
--- 17145,17151 ----
  .Sp
  The following values of \fIinsn\fR are supported.  Except as otherwise
  noted, floating-point operations are expected to be implemented with
! normal \s-1IEEE 754\s0 semantics and correspond directly to the C operators or the
  equivalent \s-1GCC\s0 built-in functions.
  .Sp
  Single-precision floating point:
*************** configuration by using the \f(CW\*(C`tar
*** 17298,17311 ****
  function attribute
  or pragma.
  .PP
! These additional \fB\-m\fR options are available for the Altera Nios \s-1II\s0
! \&\s-1ELF\s0 (bare-metal) target:
  .IP "\fB\-mhal\fR" 4
  .IX Item "-mhal"
! Link with \s-1HAL\s0 \s-1BSP\s0.  This suppresses linking with the GCC-provided C runtime
  startup and termination code, and is typically used in conjunction with
  \&\fB\-msys\-crt0=\fR to specify the location of the alternate startup code
! provided by the \s-1HAL\s0 \s-1BSP\s0.
  .IP "\fB\-msmallc\fR" 4
  .IX Item "-msmallc"
  Link with a limited version of the C library, \fB\-lsmallc\fR, rather than
--- 17304,17317 ----
  function attribute
  or pragma.
  .PP
! These additional \fB\-m\fR options are available for the Altera Nios \s-1II
! ELF\s0 (bare-metal) target:
  .IP "\fB\-mhal\fR" 4
  .IX Item "-mhal"
! Link with \s-1HAL BSP.\s0  This suppresses linking with the GCC-provided C runtime
  startup and termination code, and is typically used in conjunction with
  \&\fB\-msys\-crt0=\fR to specify the location of the alternate startup code
! provided by the \s-1HAL BSP.\s0
  .IP "\fB\-msmallc\fR" 4
  .IX Item "-msmallc"
  Link with a limited version of the C library, \fB\-lsmallc\fR, rather than
*************** when linking.  This option is only usefu
*** 17319,17325 ****
  \&\fIsystemlib\fR is the library name of the library that provides
  low-level system calls required by the C library,
  e.g. \f(CW\*(C`read\*(C'\fR and \f(CW\*(C`write\*(C'\fR.
! This option is typically used to link with a library provided by a \s-1HAL\s0 \s-1BSP\s0.
  .PP
  \fINvidia \s-1PTX\s0 Options\fR
  .IX Subsection "Nvidia PTX Options"
--- 17325,17331 ----
  \&\fIsystemlib\fR is the library name of the library that provides
  low-level system calls required by the C library,
  e.g. \f(CW\*(C`read\*(C'\fR and \f(CW\*(C`write\*(C'\fR.
! This option is typically used to link with a library provided by a \s-1HAL BSP.\s0
  .PP
  \fINvidia \s-1PTX\s0 Options\fR
  .IX Subsection "Nvidia PTX Options"
*************** These options are defined for Nvidia \s-
*** 17331,17337 ****
  .IP "\fB\-m64\fR" 4
  .IX Item "-m64"
  .PD
! Generate code for 32\-bit or 64\-bit \s-1ABI\s0.
  .IP "\fB\-mmainkernel\fR" 4
  .IX Item "-mmainkernel"
  Link in code for a _\|_main kernel.  This is for stand-alone instead of
--- 17337,17343 ----
  .IP "\fB\-m64\fR" 4
  .IX Item "-m64"
  .PD
! Generate code for 32\-bit or 64\-bit \s-1ABI.\s0
  .IP "\fB\-mmainkernel\fR" 4
  .IX Item "-mmainkernel"
  Link in code for a _\|_main kernel.  This is for stand-alone instead of
*************** Return floating-point results in ac0 (fr
*** 17356,17368 ****
  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.
  .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.
  .IP "\fB\-mbcopy\-builtin\fR" 4
  .IX Item "-mbcopy-builtin"
  Use inline \f(CW\*(C`movmemhi\*(C'\fR patterns for copying memory.  This is the
--- 17362,17374 ----
  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
  .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
  .IP "\fB\-mbcopy\-builtin\fR" 4
  .IX Item "-mbcopy-builtin"
  Use inline \f(CW\*(C`movmemhi\*(C'\fR patterns for copying memory.  This is the
*************** for \fIae_type\fR are \fB\s-1ANY\s0\fR,
*** 17434,17447 ****
  generated with this option runs on any of the other \s-1AE\s0 types.  The
  code is not as efficient as it would be if compiled for a specific
  \&\s-1AE\s0 type, and some types of operation (e.g., multiplication) do not
! work properly on all types of \s-1AE\s0.
  .Sp
! \&\fB\-mae=MUL\fR selects a \s-1MUL\s0 \s-1AE\s0 type.  This is the most useful \s-1AE\s0 type
  for compiled code, and is the default.
  .Sp
! \&\fB\-mae=MAC\fR selects a DSP-style \s-1MAC\s0 \s-1AE\s0.  Code compiled with this
  option may suffer from poor performance of byte (char) manipulation,
! since the \s-1DSP\s0 \s-1AE\s0 does not provide hardware support for byte load/stores.
  .IP "\fB\-msymbol\-as\-address\fR" 4
  .IX Item "-msymbol-as-address"
  Enable the compiler to directly use a symbol name as an address in a
--- 17440,17453 ----
  generated with this option runs on any of the other \s-1AE\s0 types.  The
  code is not as efficient as it would be if compiled for a specific
  \&\s-1AE\s0 type, and some types of operation (e.g., multiplication) do not
! work properly on all types of \s-1AE.\s0
  .Sp
! \&\fB\-mae=MUL\fR selects a \s-1MUL AE\s0 type.  This is the most useful \s-1AE\s0 type
  for compiled code, and is the default.
  .Sp
! \&\fB\-mae=MAC\fR selects a DSP-style \s-1MAC AE.\s0  Code compiled with this
  option may suffer from poor performance of byte (char) manipulation,
! since the \s-1DSP AE\s0 does not provide hardware support for byte load/stores.
  .IP "\fB\-msymbol\-as\-address\fR" 4
  .IX Item "-msymbol-as-address"
  Enable the compiler to directly use a symbol name as an address in a
*************** rather than being permanently enabled.
*** 17454,17460 ****
  .IX Item "-mno-inefficient-warnings"
  Disables warnings about the generation of inefficient code.  These
  warnings can be generated, for example, when compiling code that
! performs byte-level memory operations on the \s-1MAC\s0 \s-1AE\s0 type.  The \s-1MAC\s0 \s-1AE\s0 has
  no hardware support for byte-level memory operations, so all byte
  load/stores must be synthesized from word load/store operations.  This is
  inefficient and a warning is generated to indicate
--- 17460,17466 ----
  .IX Item "-mno-inefficient-warnings"
  Disables warnings about the generation of inefficient code.  These
  warnings can be generated, for example, when compiling code that
! performs byte-level memory operations on the \s-1MAC AE\s0 type.  The \s-1MAC AE\s0 has
  no hardware support for byte-level memory operations, so all byte
  load/stores must be synthesized from word load/store operations.  This is
  inefficient and a warning is generated to indicate
*************** Make the \f(CW\*(C`double\*(C'\fR data t
*** 17496,17505 ****
  or 32 bits (\fB\-m32bit\-doubles\fR) in size.  The default is
  \&\fB\-m32bit\-doubles\fR.
  .PP
! \fI\s-1IBM\s0 \s-1RS/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\s0 \s-1RS/6000\s0 and PowerPC:
  .IP "\fB\-mpowerpc\-gpopt\fR" 4
  .IX Item "-mpowerpc-gpopt"
  .PD 0
--- 17502,17511 ----
  or 32 bits (\fB\-m32bit\-doubles\fR) in size.  The default is
  \&\fB\-m32bit\-doubles\fR.
  .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
*************** These \fB\-m\fR options are defined for
*** 17544,17550 ****
  .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.
--- 17550,17556 ----
  .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.
*************** following options:
*** 17617,17623 ****
  \&\-mpopcntb \-mpopcntd  \-mpowerpc64 
  \&\-mpowerpc\-gpopt  \-mpowerpc\-gfxopt  \-msingle\-float \-mdouble\-float 
  \&\-msimple\-fpu \-mstring  \-mmulhw  \-mdlmzb  \-mmfpgpr \-mvsx 
! \&\-mcrypto \-mdirect\-move \-mpower8\-fusion \-mpower8\-vector 
  \&\-mquad\-memory \-mquad\-memory\-atomic\fR
  .Sp
  The particular options set for any particular \s-1CPU\s0 varies between
--- 17623,17629 ----
  \&\-mpopcntb \-mpopcntd  \-mpowerpc64 
  \&\-mpowerpc\-gpopt  \-mpowerpc\-gfxopt  \-msingle\-float \-mdouble\-float 
  \&\-msimple\-fpu \-mstring  \-mmulhw  \-mdlmzb  \-mmfpgpr \-mvsx 
! \&\-mcrypto \-mdirect\-move \-mhtm \-mpower8\-fusion \-mpower8\-vector 
  \&\-mquad\-memory \-mquad\-memory\-atomic\fR
  .Sp
  The particular options set for any particular \s-1CPU\s0 varies between
*************** capabilities.  If you wish to set an ind
*** 17627,17633 ****
  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
--- 17633,17639 ----
  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
*************** Generate code that allows \fBld\fR and \
*** 17715,17728 ****
  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\s0 \s-1ABI\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\s0 \s-1ABI\s0 option.
  .IP "\fB\-misel\fR" 4
  .IX Item "-misel"
  .PD 0
--- 17721,17734 ----
  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\-misel\fR" 4
  .IX Item "-misel"
  .PD 0
*************** more direct access to the \s-1VSX\s0 ins
*** 17771,17777 ****
  .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\-mdirect\-move\fR" 4
  .IX Item "-mdirect-move"
  .PD 0
--- 17777,17783 ----
  .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\-mdirect\-move\fR" 4
  .IX Item "-mdirect-move"
  .PD 0
*************** access to the cryptographic instructions
*** 17780,17786 ****
  .PD
  Generate code that uses (does not use) the instructions to move data
  between the general purpose registers and the vector/scalar (\s-1VSX\s0)
! registers 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
--- 17786,17801 ----
  .PD
  Generate code that uses (does not use) the instructions to move data
  between the general purpose registers and the vector/scalar (\s-1VSX\s0)
! registers 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
*************** later processors.
*** 17797,17803 ****
  .IX Item "-mno-power8-vector"
  .PD
  Generate code that uses (does not use) the vector and scalar
! instructions that were added in version 2.07 of the PowerPC \s-1ISA\s0.  Also
  enable the use of built-in functions that allow more direct access to
  the vector instructions.
  .IP "\fB\-mquad\-memory\fR" 4
--- 17812,17818 ----
  .IX Item "-mno-power8-vector"
  .PD
  Generate code that uses (does not use) the vector and scalar
! instructions that were added in version 2.07 of the PowerPC \s-1ISA.\s0  Also
  enable the use of built-in functions that allow more direct access to
  the vector instructions.
  .IP "\fB\-mquad\-memory\fR" 4
*************** instructions.  The \fB\-mquad\-memory\-a
*** 17827,17833 ****
  Generate code that uses (does not use) the scalar double precision
  instructions that target all 64 registers in the vector/scalar
  floating point register set that were added in version 2.06 of the
! PowerPC \s-1ISA\s0.  \fB\-mupper\-regs\-df\fR is turned on by default if you
  use any of the \fB\-mcpu=power7\fR, \fB\-mcpu=power8\fR, or
  \&\fB\-mvsx\fR options.
  .IP "\fB\-mupper\-regs\-sf\fR" 4
--- 17842,17848 ----
  Generate code that uses (does not use) the scalar double precision
  instructions that target all 64 registers in the vector/scalar
  floating point register set that were added in version 2.06 of the
! PowerPC \s-1ISA.\s0  \fB\-mupper\-regs\-df\fR is turned on by default if you
  use any of the \fB\-mcpu=power7\fR, \fB\-mcpu=power8\fR, or
  \&\fB\-mvsx\fR options.
  .IP "\fB\-mupper\-regs\-sf\fR" 4
*************** use any of the \fB\-mcpu=power7\fR, \fB\
*** 17839,17845 ****
  Generate code that uses (does not use) the scalar single precision
  instructions that target all 64 registers in the vector/scalar
  floating point register set that were added in version 2.07 of the
! PowerPC \s-1ISA\s0.  \fB\-mupper\-regs\-sf\fR is turned on by default if you
  use either of the \fB\-mcpu=power8\fR or \fB\-mpower8\-vector\fR
  options.
  .IP "\fB\-mupper\-regs\fR" 4
--- 17854,17860 ----
  Generate code that uses (does not use) the scalar single precision
  instructions that target all 64 registers in the vector/scalar
  floating point register set that were added in version 2.07 of the
! PowerPC \s-1ISA.\s0  \fB\-mupper\-regs\-sf\fR is turned on by default if you
  use either of the \fB\-mcpu=power8\fR or \fB\-mpower8\-vector\fR
  options.
  .IP "\fB\-mupper\-regs\fR" 4
*************** Modify generation of the \s-1TOC\s0 (Tab
*** 17900,17907 ****
  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
--- 17915,17922 ----
  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 \f
*** 17909,17915 ****
  \&\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
--- 17924,17930 ----
  \&\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
*************** only on files that contain less frequent
*** 17925,17931 ****
  .IP "\fB\-maix32\fR" 4
  .IX Item "-maix32"
  .PD
! Enable 64\-bit \s-1AIX\s0 \s-1ABI\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
--- 17940,17946 ----
  .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
*** 17936,17943 ****
  .IP "\fB\-mno\-xl\-compat\fR" 4
  .IX Item "-mno-xl-compat"
  .PD
! Produce code that conforms more closely to \s-1IBM\s0 \s-1XL\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
--- 17951,17958 ----
  .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
*************** support routines.
*** 17946,17961 ****
  .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\s0 \s-1XL\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\s0
! \&\s-1XL\s0 compilers without optimization.
  .IP "\fB\-mpe\fR" 4
  .IX Item "-mpe"
! Support \fI\s-1IBM\s0 \s-1RS/6000\s0 \s-1SP\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
--- 17961,17976 ----
  .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
*************** option are incompatible.
*** 17969,17979 ****
  .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.
--- 17984,17994 ----
  .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.
*************** Specify type of floating-point unit.  Va
*** 18007,18013 ****
  and \fBdp_full\fR (equivalent to \fB\-mdouble\-float\fR).
  .IP "\fB\-mxilinx\-fpu\fR" 4
  .IX Item "-mxilinx-fpu"
! Perform optimizations for the floating-point unit on Xilinx \s-1PPC\s0 405/440.
  .IP "\fB\-mmultiple\fR" 4
  .IX Item "-mmultiple"
  .PD 0
--- 18022,18028 ----
  and \fBdp_full\fR (equivalent to \fB\-mdouble\-float\fR).
  .IP "\fB\-mxilinx\-fpu\fR" 4
  .IX Item "-mxilinx-fpu"
! Perform optimizations for the floating-point unit on Xilinx \s-1PPC 405/440.\s0
  .IP "\fB\-mmultiple\fR" 4
  .IX Item "-mmultiple"
  .PD 0
*************** mapped to \fB\-ffp\-contract=off\fR.
*** 18078,18084 ****
  .IX Item "-mno-mulhw"
  .PD
  Generate code that uses (does not use) the half-word multiply and
! multiply-accumulate instructions on the \s-1IBM\s0 405, 440, 464 and 476 processors.
  These instructions are generated by default when targeting those
  processors.
  .IP "\fB\-mdlmzb\fR" 4
--- 18093,18099 ----
  .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
*************** processors.
*** 18088,18094 ****
  .IX Item "-mno-dlmzb"
  .PD
  Generate code that uses (does not use) the string-search \fBdlmzb\fR
! instruction on the \s-1IBM\s0 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"
--- 18103,18109 ----
  .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"
*************** processor in big-endian mode.  The \fB\-
*** 18168,18174 ****
  the same as \fB\-mbig\fR.
  .IP "\fB\-mdynamic\-no\-pic\fR" 4
  .IX Item "-mdynamic-no-pic"
! On Darwin and Mac \s-1OS\s0 X 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.
--- 18183,18189 ----
  the same as \fB\-mbig\fR.
  .IP "\fB\-mdynamic\-no\-pic\fR" 4
  .IX Item "-mdynamic-no-pic"
! On Darwin and Mac \s-1OS X\s0 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.
*************** On System V.4 and embedded PowerPC syste
*** 18274,18284 ****
  OpenBSD operating system.
  .IP "\fB\-maix\-struct\-return\fR" 4
  .IX Item "-maix-struct-return"
! Return all structures in memory (as specified by the \s-1AIX\s0 \s-1ABI\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\s0 \s-1ABI\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.
--- 18289,18299 ----
  OpenBSD operating system.
  .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-al
*** 18287,18315 ****
  \&\fBelfv1\fR, \fBelfv2\fR.
  .IP "\fB\-mabi=spe\fR" 4
  .IX Item "-mabi=spe"
! Extend the current \s-1ABI\s0 with \s-1SPE\s0 \s-1ABI\s0 extensions.  This does not change
! the default \s-1ABI\s0, instead it adds the \s-1SPE\s0 \s-1ABI\s0 extensions to the current
! \&\s-1ABI\s0.
  .IP "\fB\-mabi=no\-spe\fR" 4
  .IX Item "-mabi=no-spe"
! Disable Book-E \s-1SPE\s0 \s-1ABI\s0 extensions for the current \s-1ABI\s0.
  .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 a PowerPC 32\-bit \s-1SYSV\s0 \s-1ABI\s0 option.
  .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 a PowerPC 32\-bit Linux \s-1ABI\s0 option.
  .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.
--- 18302,18330 ----
  \&\fBelfv1\fR, \fBelfv2\fR.
  .IP "\fB\-mabi=spe\fR" 4
  .IX Item "-mabi=spe"
! Extend the current \s-1ABI\s0 with \s-1SPE ABI\s0 extensions.  This does not change
! the default \s-1ABI,\s0 instead it adds the \s-1SPE ABI\s0 extensions to the current
! \&\s-1ABI.\s0
  .IP "\fB\-mabi=no\-spe\fR" 4
  .IX Item "-mabi=no-spe"
! Disable Book-E \s-1SPE ABI\s0 extensions for the current \s-1ABI.\s0
  .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 a PowerPC 32\-bit \s-1SYSV ABI\s0 option.
  .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 a PowerPC 32\-bit Linux \s-1ABI\s0 option.
  .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.
*************** which handle the double-precision recipr
*** 18559,18565 ****
  .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
--- 18574,18580 ----
  .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
*************** pointer.  The \fB\-mno\-save\-toc\-indir
*** 18632,18645 ****
  .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.
  .PP
--- 18647,18660 ----
  .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.
  .PP
*************** values, however, so the \s-1FPU\s0 hardw
*** 18674,18685 ****
  .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\s0 \s-1FPU\s0 instructions are themselves unsafe.
  .IP "\fB\-mcpu=\fR\fIname\fR" 4
  .IX Item "-mcpu=name"
! Selects the type of \s-1RX\s0 \s-1CPU\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.
--- 18689,18700 ----
  .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.
*************** type. This is the default.
*** 18865,18871 ****
  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 2 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
--- 18880,18886 ----
  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 2\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
*************** register is always saved two words below
*** 18897,18903 ****
  .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\s0 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
--- 18912,18918 ----
  .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
*************** which does not have this limitation.
*** 18924,18931 ****
  .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.
--- 18939,18946 ----
  .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.
*************** targets default to \fB\-m64\fR.
*** 18938,18948 ****
  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\-mmvcle\fR" 4
  .IX Item "-mmvcle"
  .PD 0
--- 18953,18963 ----
  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\-mmvcle\fR" 4
  .IX Item "-mmvcle"
  .PD 0
*************** The default is the value used for \fB\-m
*** 18983,18991 ****
  .IP "\fB\-mno\-tpf\-trace\fR" 4
  .IX Item "-mno-tpf-trace"
  .PD
! Generate code that adds (does not add) in \s-1TPF\s0 \s-1OS\s0 specific branches to trace
  routines in the operating system.  This option is off by default, even
! when compiling for the \s-1TPF\s0 \s-1OS\s0.
  .IP "\fB\-mfused\-madd\fR" 4
  .IX Item "-mfused-madd"
  .PD 0
--- 18998,19006 ----
  .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\-mfused\-madd\fR" 4
  .IX Item "-mfused-madd"
  .PD 0
*************** Specify the \s-1SCORE7D\s0 as the target
*** 19078,19093 ****
  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"
--- 19093,19108 ----
  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 assuming
*** 19103,19109 ****
  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.
--- 19118,19124 ----
  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.
*************** Generate code for the \s-1SH4\s0 assumin
*** 19120,19129 ****
  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
--- 19135,19144 ----
  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
*************** Generate code for \s-1SH4\-100\s0 in suc
*** 19138,19144 ****
  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
--- 19153,19159 ----
  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
*************** Generate code for \s-1SH4\-200\s0 in suc
*** 19153,19159 ****
  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
--- 19168,19174 ----
  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
*************** Generate code for \s-1SH4\-300\s0 in suc
*** 19168,19174 ****
  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
--- 19183,19189 ----
  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
*************** Use 32\-bit offsets in \f(CW\*(C`switch\
*** 19235,19241 ****
  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
--- 19250,19256 ----
  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
*************** Dump instruction size and location in th
*** 19282,19288 ****
  .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\s0 \s-1ABI\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
--- 19297,19303 ----
  .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
*************** Generate GNU/Linux compatible gUSA softw
*** 19299,19305 ****
  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.
--- 19314,19320 ----
  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.
*************** For targets other than SHmedia \fIstrate
*** 19442,19461 ****
  .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\s0,
! \&\s-1SH2A\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
--- 19457,19476 ----
  .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
*************** specified separated by a comma.
*** 19489,19498 ****
  Enable the use of the indexed addressing mode for SHmedia32/SHcompact.
  This is only safe if the hardware and/or \s-1OS\s0 implement 32\-bit wrap-around
  semantics for the indexed addressing mode.  The architecture allows the
! implementation of processors with 64\-bit \s-1MMU\s0, which the \s-1OS\s0 could use to
  get 32\-bit addressing, but since no current hardware implementation supports
  this or any other way to make the indexed addressing mode safe to use in
! the 32\-bit \s-1ABI\s0, the default is \fB\-mno\-indexed\-addressing\fR.
  .IP "\fB\-mgettrcost=\fR\fInumber\fR" 4
  .IX Item "-mgettrcost=number"
  Set the cost assumed for the \f(CW\*(C`gettr\*(C'\fR instruction to \fInumber\fR.
--- 19504,19513 ----
  Enable the use of the indexed addressing mode for SHmedia32/SHcompact.
  This is only safe if the hardware and/or \s-1OS\s0 implement 32\-bit wrap-around
  semantics for the indexed addressing mode.  The architecture allows the
! implementation of processors with 64\-bit \s-1MMU,\s0 which the \s-1OS\s0 could use to
  get 32\-bit addressing, but since no current hardware implementation supports
  this or any other way to make the indexed addressing mode safe to use in
! the 32\-bit \s-1ABI,\s0 the default is \fB\-mno\-indexed\-addressing\fR.
  .IP "\fB\-mgettrcost=\fR\fInumber\fR" 4
  .IX Item "-mgettrcost=number"
  Set the cost assumed for the \f(CW\*(C`gettr\*(C'\fR instruction to \fInumber\fR.
*************** the compiler are always valid to load wi
*** 19529,19535 ****
  but with assembler and/or linker tricks it is possible
  to generate symbols that cause \f(CW\*(C`ptabs\*(C'\fR or \f(CW\*(C`ptrel\*(C'\fR to trap.
  This option is only meaningful when \fB\-mno\-pt\-fixed\fR is in effect.
! It prevents cross-basic-block \s-1CSE\s0, hoisting and most scheduling
  of symbol loads.  The default is \fB\-mno\-invalid\-symbols\fR.
  .IP "\fB\-mbranch\-cost=\fR\fInum\fR" 4
  .IX Item "-mbranch-cost=num"
--- 19544,19550 ----
  but with assembler and/or linker tricks it is possible
  to generate symbols that cause \f(CW\*(C`ptabs\*(C'\fR or \f(CW\*(C`ptrel\*(C'\fR to trap.
  This option is only meaningful when \fB\-mno\-pt\-fixed\fR is in effect.
! It prevents cross-basic-block \s-1CSE,\s0 hoisting and most scheduling
  of symbol loads.  The default is \fB\-mno\-invalid\-symbols\fR.
  .IP "\fB\-mbranch\-cost=\fR\fInum\fR" 4
  .IX Item "-mbranch-cost=num"
*************** is being compiled for.
*** 19546,19559 ****
  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 can't 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
--- 19561,19574 ----
  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 can't 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
*************** mapped to \fB\-ffp\-contract=off\fR.
*** 19575,19581 ****
  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"
--- 19590,19596 ----
  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"
*************** Allow or disallow the compiler to emit t
*** 19587,19593 ****
  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
--- 19602,19608 ----
  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
*************** These \fB\-m\fR options are supported on
*** 19641,19647 ****
  .IX Item "-mapp-regs"
  .PD
  Specify \fB\-mapp\-regs\fR to generate output using the global registers
! 2 through 4, which the \s-1SPARC\s0 \s-1SVR4\s0 \s-1ABI\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
--- 19656,19662 ----
  .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
*************** cross-compilation.  The embedded targets
*** 19687,19693 ****
  \&\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"
--- 19702,19708 ----
  \&\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"
*************** instructions.
*** 19697,19703 ****
  .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\s0 \s-1ABI\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
--- 19712,19718 ----
  .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
*************** With \fB\-mfaster\-structs\fR, the compi
*** 19738,19747 ****
  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\s0
! \&\s-1ABI\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\-mcpu=\fR\fIcpu_type\fR" 4
  .IX Item "-mcpu=cpu_type"
  Set the instruction set, register set, and instruction scheduling parameters
--- 19753,19762 ----
  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\-mcpu=\fR\fIcpu_type\fR" 4
  .IX Item "-mcpu=cpu_type"
  Set the instruction set, register set, and instruction scheduling parameters
*************** SPARCStation 1, 2, \s-1IPX\s0 etc.
*** 19791,19812 ****
  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
--- 19806,19827 ----
  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
*************** toolchains, \fBnative\fR can also be use
*** 19843,19849 ****
  .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+\s0 \s-1ABI\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.
--- 19858,19864 ----
  .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.
*************** This option suppresses generation of the
*** 20298,20306 ****
  v850e, v850e1, v850e2, v850e2v3 and v850e3v5 flavors of the v850
  architecture.
  .Sp
! This option is enabled by default when the \s-1RH850\s0 \s-1ABI\s0 is
  in use (see \fB\-mrh850\-abi\fR), and disabled by default when the
! \&\s-1GCC\s0 \s-1ABI\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"
--- 20313,20321 ----
  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"
*************** selected because its use is still experi
*** 20340,20346 ****
  .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
--- 20355,20361 ----
  .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
*************** When this version of the \s-1ABI\s0 is e
*** 20365,20371 ****
  .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
--- 20380,20386 ----
  .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
*************** Generate code containing library calls f
*** 20460,20466 ****
  \&\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"
--- 20475,20481 ----
  \&\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"
*************** the access to general registers.  This i
*** 20488,20495 ****
  .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"
--- 20503,20510 ----
  .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"
*************** produces code optimized for the local ma
*** 20572,20581 ****
  of the selected instruction set.
  .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
--- 20587,20596 ----
  of the selected instruction set.
  .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
*************** Intel i486 \s-1CPU\s0.  (No scheduling i
*** 20585,20594 ****
  Intel Pentium \s-1CPU\s0 with no \s-1MMX\s0 support.
  .IP "\fBpentium-mmx\fR" 4
  .IX Item "pentium-mmx"
! Intel Pentium \s-1MMX\s0 \s-1CPU\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.
  .IP "\fBi686\fR" 4
  .IX Item "i686"
  When used with \fB\-march\fR, the Pentium Pro
--- 20600,20609 ----
  Intel Pentium \s-1CPU\s0 with no \s-1MMX\s0 support.
  .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
  .IP "\fBi686\fR" 4
  .IX Item "i686"
  When used with \fB\-march\fR, the Pentium Pro
*************** instruction set is used, so the code run
*** 20596,20602 ****
  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\s0 \s-1CPU\s0, based on Pentium Pro core with \s-1MMX\s0 instruction set
  support.
  .IP "\fBpentium3\fR" 4
  .IX Item "pentium3"
--- 20611,20617 ----
  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 instruction set
  support.
  .IP "\fBpentium3\fR" 4
  .IX Item "pentium3"
*************** support.
*** 20604,20692 ****
  .IP "\fBpentium3m\fR" 4
  .IX Item "pentium3m"
  .PD
! Intel Pentium \s-1III\s0 \s-1CPU\s0, based on Pentium Pro core with \s-1MMX\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\s0 \s-1CPU\s0
! with \s-1MMX\s0, \s-1SSE\s0 and \s-1SSE2\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\s0, \s-1SSE\s0 and \s-1SSE2\s0 instruction set support.
  .IP "\fBprescott\fR" 4
  .IX Item "prescott"
! Improved version of Intel Pentium 4 \s-1CPU\s0 with \s-1MMX\s0, \s-1SSE\s0, \s-1SSE2\s0 and \s-1SSE3\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\s0, \s-1SSE\s0,
! \&\s-1SSE2\s0 and \s-1SSE3\s0 instruction set support.
  .IP "\fBcore2\fR" 4
  .IX Item "core2"
! Intel Core 2 \s-1CPU\s0 with 64\-bit extensions, \s-1MMX\s0, \s-1SSE\s0, \s-1SSE2\s0, \s-1SSE3\s0 and \s-1SSSE3\s0
  instruction set support.
  .IP "\fBnehalem\fR" 4
  .IX Item "nehalem"
! Intel Nehalem \s-1CPU\s0 with 64\-bit extensions, \s-1MMX\s0, \s-1SSE\s0, \s-1SSE2\s0, \s-1SSE3\s0, \s-1SSSE3\s0,
! \&\s-1SSE4\s0.1, \s-1SSE4\s0.2 and \s-1POPCNT\s0 instruction set support.
  .IP "\fBwestmere\fR" 4
  .IX Item "westmere"
! Intel Westmere \s-1CPU\s0 with 64\-bit extensions, \s-1MMX\s0, \s-1SSE\s0, \s-1SSE2\s0, \s-1SSE3\s0, \s-1SSSE3\s0,
! \&\s-1SSE4\s0.1, \s-1SSE4\s0.2, \s-1POPCNT\s0, \s-1AES\s0 and \s-1PCLMUL\s0 instruction set support.
  .IP "\fBsandybridge\fR" 4
  .IX Item "sandybridge"
! Intel Sandy Bridge \s-1CPU\s0 with 64\-bit extensions, \s-1MMX\s0, \s-1SSE\s0, \s-1SSE2\s0, \s-1SSE3\s0, \s-1SSSE3\s0,
! \&\s-1SSE4\s0.1, \s-1SSE4\s0.2, \s-1POPCNT\s0, \s-1AVX\s0, \s-1AES\s0 and \s-1PCLMUL\s0 instruction set support.
  .IP "\fBivybridge\fR" 4
  .IX Item "ivybridge"
! Intel Ivy Bridge \s-1CPU\s0 with 64\-bit extensions, \s-1MMX\s0, \s-1SSE\s0, \s-1SSE2\s0, \s-1SSE3\s0, \s-1SSSE3\s0,
! \&\s-1SSE4\s0.1, \s-1SSE4\s0.2, \s-1POPCNT\s0, \s-1AVX\s0, \s-1AES\s0, \s-1PCLMUL\s0, \s-1FSGSBASE\s0, \s-1RDRND\s0 and F16C
  instruction set support.
  .IP "\fBhaswell\fR" 4
  .IX Item "haswell"
! Intel Haswell \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE\s0, \s-1MMX\s0, \s-1SSE\s0, \s-1SSE2\s0, \s-1SSE3\s0, \s-1SSSE3\s0,
! \&\s-1SSE4\s0.1, \s-1SSE4\s0.2, \s-1POPCNT\s0, \s-1AVX\s0, \s-1AVX2\s0, \s-1AES\s0, \s-1PCLMUL\s0, \s-1FSGSBASE\s0, \s-1RDRND\s0, \s-1FMA\s0,
! \&\s-1BMI\s0, \s-1BMI2\s0 and F16C instruction set support.
  .IP "\fBbroadwell\fR" 4
  .IX Item "broadwell"
! Intel Broadwell \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE\s0, \s-1MMX\s0, \s-1SSE\s0, \s-1SSE2\s0, \s-1SSE3\s0, \s-1SSSE3\s0,
! \&\s-1SSE4\s0.1, \s-1SSE4\s0.2, \s-1POPCNT\s0, \s-1AVX\s0, \s-1AVX2\s0, \s-1AES\s0, \s-1PCLMUL\s0, \s-1FSGSBASE\s0, \s-1RDRND\s0, \s-1FMA\s0,
! \&\s-1BMI\s0, \s-1BMI2\s0, F16C, \s-1RDSEED\s0, \s-1ADCX\s0 and \s-1PREFETCHW\s0 instruction set support.
  .IP "\fBbonnell\fR" 4
  .IX Item "bonnell"
! Intel Bonnell \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE\s0, \s-1MMX\s0, \s-1SSE\s0, \s-1SSE2\s0, \s-1SSE3\s0 and \s-1SSSE3\s0
  instruction set support.
  .IP "\fBsilvermont\fR" 4
  .IX Item "silvermont"
! Intel Silvermont \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE\s0, \s-1MMX\s0, \s-1SSE\s0, \s-1SSE2\s0, \s-1SSE3\s0, \s-1SSSE3\s0,
! \&\s-1SSE4\s0.1, \s-1SSE4\s0.2, \s-1POPCNT\s0, \s-1AES\s0, \s-1PCLMUL\s0 and \s-1RDRND\s0 instruction set support.
  .IP "\fBknl\fR" 4
  .IX Item "knl"
! Intel Knight's Landing \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE\s0, \s-1MMX\s0, \s-1SSE\s0, \s-1SSE2\s0, \s-1SSE3\s0,
! \&\s-1SSSE3\s0, \s-1SSE4\s0.1, \s-1SSE4\s0.2, \s-1POPCNT\s0, \s-1AVX\s0, \s-1AVX2\s0, \s-1AES\s0, \s-1PCLMUL\s0, \s-1FSGSBASE\s0, \s-1RDRND\s0, \s-1FMA\s0,
! \&\s-1BMI\s0, \s-1BMI2\s0, F16C, \s-1RDSEED\s0, \s-1ADCX\s0, \s-1PREFETCHW\s0, \s-1AVX512F\s0, \s-1AVX512PF\s0, \s-1AVX512ER\s0 and
  \&\s-1AVX512CD\s0 instruction set support.
  .IP "\fBk6\fR" 4
  .IX Item "k6"
! \&\s-1AMD\s0 K6 \s-1CPU\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\s0 K6 \s-1CPU\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"
--- 20619,20707 ----
  .IP "\fBpentium3m\fR" 4
  .IX Item "pentium3m"
  .PD
! Intel Pentium \s-1III CPU,\s0 based on Pentium Pro core with \s-1MMX\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\s0 and \s-1SSE2\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\s0 and \s-1SSE2\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\s0 and \s-1SSE3\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\s0 and \s-1SSE3\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\s0 and \s-1SSSE3\s0
  instruction set support.
  .IP "\fBnehalem\fR" 4
  .IX Item "nehalem"
! Intel Nehalem \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3, SSSE3,
! SSE4.1, SSE4.2\s0 and \s-1POPCNT\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, AES\s0 and \s-1PCLMUL\s0 instruction set support.
  .IP "\fBsandybridge\fR" 4
  .IX Item "sandybridge"
! Intel Sandy Bridge \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3, SSSE3,
! SSE4.1, SSE4.2, POPCNT, AVX, AES\s0 and \s-1PCLMUL\s0 instruction set support.
  .IP "\fBivybridge\fR" 4
  .IX Item "ivybridge"
! Intel Ivy Bridge \s-1CPU\s0 with 64\-bit extensions, \s-1MMX, SSE, SSE2, SSE3, SSSE3,
! SSE4.1, SSE4.2, POPCNT, AVX, AES, PCLMUL, FSGSBASE, RDRND\s0 and F16C
  instruction set support.
  .IP "\fBhaswell\fR" 4
  .IX Item "haswell"
! Intel Haswell \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE, MMX, SSE, SSE2, SSE3, SSSE3,
! SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA,
! BMI, BMI2\s0 and F16C instruction set support.
  .IP "\fBbroadwell\fR" 4
  .IX Item "broadwell"
! Intel Broadwell \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE, MMX, SSE, SSE2, SSE3, SSSE3,
! SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA,
! BMI, BMI2, F16C, RDSEED, ADCX\s0 and \s-1PREFETCHW\s0 instruction set support.
  .IP "\fBbonnell\fR" 4
  .IX Item "bonnell"
! 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"
! Intel Silvermont \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE, MMX, SSE, SSE2, SSE3, SSSE3,
! SSE4.1, SSE4.2, POPCNT, AES, PCLMUL\s0 and \s-1RDRND\s0 instruction set support.
  .IP "\fBknl\fR" 4
  .IX Item "knl"
! Intel Knight's Landing \s-1CPU\s0 with 64\-bit extensions, \s-1MOVBE, MMX, SSE, SSE2, SSE3,
! SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA,
! BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, AVX512F, AVX512PF, AVX512ER\s0 and
  \&\s-1AVX512CD\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"
*************** support.
*** 20696,20702 ****
  .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"
--- 20711,20717 ----
  .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"
*************** instruction set support.
*** 20708,20716 ****
  .IP "\fBathlon-fx\fR" 4
  .IX Item "athlon-fx"
  .PD
! Processors based on the \s-1AMD\s0 K8 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\s0, \s-1SSE\s0, \s-1SSE2\s0, 3DNow!, enhanced 3DNow! and 64\-bit
  instruction set extensions.)
  .IP "\fBk8\-sse3\fR" 4
  .IX Item "k8-sse3"
--- 20723,20731 ----
  .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"
*************** instruction set extensions.)
*** 20720,20726 ****
  .IP "\fBathlon64\-sse3\fR" 4
  .IX Item "athlon64-sse3"
  .PD
! Improved versions of \s-1AMD\s0 K8 cores with \s-1SSE3\s0 instruction set support.
  .IP "\fBamdfam10\fR" 4
  .IX Item "amdfam10"
  .PD 0
--- 20735,20741 ----
  .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
*************** Improved versions of \s-1AMD\s0 K8 cores
*** 20728,20783 ****
  .IX Item "barcelona"
  .PD
  CPUs based on \s-1AMD\s0 Family 10h cores with x86\-64 instruction set support.  (This
! supersets \s-1MMX\s0, \s-1SSE\s0, \s-1SSE2\s0, \s-1SSE3\s0, \s-1SSE4A\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\s0, \s-1AVX\s0, \s-1XOP\s0, \s-1LWP\s0, \s-1AES\s0, \s-1PCL_MUL\s0, \s-1CX16\s0, \s-1MMX\s0, \s-1SSE\s0, \s-1SSE2\s0, \s-1SSE3\s0, \s-1SSE4A\s0,
! \&\s-1SSSE3\s0, \s-1SSE4\s0.1, \s-1SSE4\s0.2, \s-1ABM\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\s0, \s-1TBM\s0, F16C, \s-1FMA\s0, \s-1FMA4\s0, \s-1AVX\s0, \s-1XOP\s0, \s-1LWP\s0, \s-1AES\s0, \s-1PCL_MUL\s0, \s-1CX16\s0, \s-1MMX\s0,
! \&\s-1SSE\s0, \s-1SSE2\s0, \s-1SSE3\s0, \s-1SSE4A\s0, \s-1SSSE3\s0, \s-1SSE4\s0.1, \s-1SSE4\s0.2, \s-1ABM\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\s0, \s-1TBM\s0, F16C, \s-1FMA\s0, \s-1FMA4\s0, \s-1FSGSBASE\s0, \s-1AVX\s0, \s-1XOP\s0, \s-1LWP\s0, \s-1AES\s0, 
! \&\s-1PCL_MUL\s0, \s-1CX16\s0, \s-1MMX\s0, \s-1SSE\s0, \s-1SSE2\s0, \s-1SSE3\s0, \s-1SSE4A\s0, \s-1SSSE3\s0, \s-1SSE4\s0.1, \s-1SSE4\s0.2, \s-1ABM\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\s0, \s-1BMI2\s0, \s-1TBM\s0, F16C, \s-1FMA\s0, \s-1FMA4\s0, \s-1FSGSBASE\s0, \s-1AVX\s0, \s-1AVX2\s0, \s-1XOP\s0, \s-1LWP\s0, 
! \&\s-1AES\s0, \s-1PCL_MUL\s0, \s-1CX16\s0, \s-1MOVBE\s0, \s-1MMX\s0, \s-1SSE\s0, \s-1SSE2\s0, \s-1SSE3\s0, \s-1SSE4A\s0, \s-1SSSE3\s0, \s-1SSE4\s0.1, 
! \&\s-1SSE4\s0.2, \s-1ABM\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\s0, \s-1SSE\s0, \s-1SSE2\s0, \s-1SSE3\s0, \s-1SSSE3\s0, \s-1SSE4A\s0, \s-1CX16\s0, \s-1ABM\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\s0, F16C, \s-1BMI\s0, \s-1AVX\s0, \s-1PCL_MUL\s0, \s-1AES\s0, \s-1SSE4\s0.2, \s-1SSE4\s0.1, \s-1CX16\s0, \s-1ABM\s0,
! \&\s-1SSE4A\s0, \s-1SSSE3\s0, \s-1SSE3\s0, \s-1SSE2\s0, \s-1SSE\s0, \s-1MMX\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\s0 C3 \s-1CPU\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\s0 C3\-2 (Nehemiah/C5XL) \s-1CPU\s0 with \s-1MMX\s0 and \s-1SSE\s0 instruction set support.
  (No scheduling is
  implemented for this chip.)
  .IP "\fBgeode\fR" 4
--- 20743,20798 ----
  .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, PCL_MUL, 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, PCL_MUL, 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,\s0 
! \&\s-1PCL_MUL, 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,\s0 
! \&\s-1AES, PCL_MUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1,\s0 
! \&\s-1SSE4.2, ABM\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, PCL_MUL, 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 "\fBgeode\fR" 4
*************** of your application will have, then you
*** 20811,20817 ****
  .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
--- 20826,20832 ----
  .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
*************** processors) for which the code is optimi
*** 20823,20829 ****
  .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
--- 20838,20844 ----
  .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
*************** Silvermont, then you should use this opt
*** 20831,20837 ****
  .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
--- 20846,20852 ----
  .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
*************** comparison is unordered.
*** 20916,20922 ****
  .IX Item "-msoft-float"
  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 can't be done directly in cross-compilation.  You must make your
  own arrangements to provide suitable library functions for
--- 20931,20937 ----
  .IX Item "-msoft-float"
  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 can't be done directly in cross-compilation.  You must make your
  own arrangements to provide suitable library functions for
*************** Do not use the \s-1FPU\s0 registers for
*** 20931,20938 ****
  .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.
--- 20946,20953 ----
  .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.
*************** so \fB\-m96bit\-long\-double\fR is the d
*** 20977,20983 ****
  .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.
--- 20992,20998 ----
  .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.
*************** its \s-1ABI\s0 specifies that \f(CW\*(C`
*** 20988,20994 ****
  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
--- 21003,21009 ----
  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
*************** type. This is the default for 32\-bit Bi
*** 21008,21014 ****
  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
--- 21023,21029 ----
  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
*************** with code compiled without that switch.
*** 21017,21023 ****
  .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\s0 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.
--- 21032,21038 ----
  .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.
*************** Studio compilers until version 12.  Late
*** 21079,21085 ****
  with Studio 12 Update@tie{}1) follow the \s-1ABI\s0 used by other x86 targets, which
  is the default on Solaris@tie{}10 and later.  \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
--- 21094,21100 ----
  with Studio 12 Update@tie{}1) follow the \s-1ABI\s0 used by other x86 targets, which
  is the default on Solaris@tie{}10 and later.  \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
*************** the one specified by \fB\-mpreferred\-st
*** 21140,21146 ****
  .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
--- 21155,21161 ----
  .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
*************** preferred alignment to \fB\-mpreferred\-
*** 21244,21253 ****
  .IP "\fB\-mmwaitx\fR" 4
  .IX Item "-mmwaitx"
  .PD
! These switches enable the use of instructions in the \s-1MMX\s0, \s-1SSE\s0,
! \&\s-1SSE2\s0, \s-1SSE3\s0, \s-1SSSE3\s0, \s-1SSE4\s0.1, \s-1AVX\s0, \s-1AVX2\s0, \s-1AVX512F\s0, \s-1AVX512PF\s0, \s-1AVX512ER\s0, \s-1AVX512CD\s0,
! \&\s-1SHA\s0, \s-1AES\s0, \s-1PCLMUL\s0, \s-1FSGSBASE\s0, \s-1RDRND\s0, F16C, \s-1FMA\s0, \s-1SSE4A\s0, \s-1FMA4\s0, \s-1XOP\s0, \s-1LWP\s0, \s-1ABM\s0,
! \&\s-1BMI\s0, \s-1BMI2\s0, \s-1FXSR\s0, \s-1XSAVE\s0, \s-1XSAVEOPT\s0, \s-1LZCNT\s0, \s-1RTM\s0, \s-1MPX\s0, \s-1MWAITX\s0 or 3DNow!
  extended instruction sets.  Each has a corresponding \fB\-mno\-\fR option
  to disable use of these instructions.
  .Sp
--- 21259,21268 ----
  .IP "\fB\-mmwaitx\fR" 4
  .IX Item "-mmwaitx"
  .PD
! These switches enable the use of instructions in the \s-1MMX, SSE,
! SSE2, SSE3, SSSE3, SSE4.1, AVX, AVX2, AVX512F, AVX512PF, AVX512ER, AVX512CD,
! SHA, AES, PCLMUL, FSGSBASE, RDRND, F16C, FMA, SSE4A, FMA4, XOP, LWP, ABM,
! BMI, BMI2, FXSR, XSAVE, XSAVEOPT, LZCNT, RTM, MPX, MWAITX\s0 or 3DNow!
  extended instruction sets.  Each has a corresponding \fB\-mno\-\fR option
  to disable use of these instructions.
  .Sp
*************** This option enables generation of \f(CW\
*** 21324,21330 ****
  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;
--- 21339,21345 ----
  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;
*************** when \fB\-mveclibabi=acml\fR is used.
*** 21423,21429 ****
  .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.
--- 21438,21444 ----
  .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.
*************** or whether the thread base pointer must
*** 21538,21544 ****
  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\s0 C Library, the default is on.
  .IP "\fB\-msse2avx\fR" 4
  .IX Item "-msse2avx"
  .PD 0
--- 21553,21559 ----
  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
*************** register when there are no variable argu
*** 21589,21595 ****
  \&\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\s0 4.4 or newer don't have
  those issues, regardless the \s-1RAX\s0 register value.
  .IP "\fB\-m8bit\-idiv\fR" 4
  .IX Item "-m8bit-idiv"
--- 21604,21610 ----
  \&\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"
*************** appropriately.
*** 21733,21739 ****
  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"
--- 21748,21754 ----
  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"
*************** kernel code.
*** 21818,21824 ****
  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
--- 21833,21839 ----
  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
*************** every cross-file call, not just those th
*** 21864,21870 ****
  .IX Subsection "zSeries Options"
  .PP
  These are listed under
! .Sh "Options for Code Generation Conventions"
  .IX Subsection "Options for Code Generation Conventions"
  These machine-independent options control the interface conventions
  used in code generation.
--- 21879,21885 ----
  .IX Subsection "zSeries Options"
  .PP
  These are listed under
! .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.
*************** You normally do not need to enable this
*** 22003,22009 ****
  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 2 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
--- 22018,22024 ----
  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 2\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
*************** Use it to conform to a non-default appli
*** 22074,22080 ****
  .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.
--- 22089,22095 ----
  .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.
*************** such variables in different compilation
*** 22087,22093 ****
  in a common block.
  This is the behavior specified by \fB\-fcommon\fR, and is the default
  for \s-1GCC\s0 on most targets.
! On the other hand, this behavior is not required by \s-1ISO\s0 C, and on some
  targets may carry a speed or code size penalty on variable references.
  The \fB\-fno\-common\fR option specifies that the compiler should place
  uninitialized global variables in the data section of the object file,
--- 22102,22108 ----
  in a common block.
  This is the behavior specified by \fB\-fcommon\fR, and is the default
  for \s-1GCC\s0 on most targets.
! On the other hand, this behavior is not required by \s-1ISO C,\s0 and on some
  targets may carry a speed or code size penalty on variable references.
  The \fB\-fno\-common\fR option specifies that the compiler should place
  uninitialized global variables in the data section of the object file,
*************** the \s-1GOT\s0 size for the linked execu
*** 22143,22153 ****
  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 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\s0 \s-1RS/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
--- 22158,22168 ----
  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 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.
*** 22157,22163 ****
  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 the m68k,
! PowerPC and \s-1SPARC\s0.
  .Sp
  Position-independent code requires special support, and therefore works
  only on certain machines.
--- 22172,22178 ----
  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 the m68k,
! PowerPC and \s-1SPARC.\s0
  .Sp
  Position-independent code requires special support, and therefore works
  only on certain machines.
*************** name, such as \f(CW\*(C`vector<int> blah
*** 22307,22313 ****
  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\-fstack\-check\fR" 4
  .IX Item "-fstack-check"
--- 22322,22328 ----
  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\-fstack\-check\fR" 4
  .IX Item "-fstack-check"
*************** always specify visibility when it is not
*** 22446,22452 ****
  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\s0 \*(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
--- 22461,22467 ----
  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
*************** before including any such headers.
*** 22458,22464 ****
  \&\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.
--- 22473,22479 ----
  \&\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.
*************** aspects of the compilation environment.
*** 22520,22526 ****
  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
--- 22535,22541 ----
  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
*************** national conventions.  \s-1GCC\s0 inspec
*** 22537,22543 ****
  \&\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
--- 22552,22558 ----
  \&\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
*************** and the Info entries for \fIgcc\fR, \fIc
*** 22717,22723 ****
  .IX Header "AUTHOR"
  See the Info entry for \fBgcc\fR, or
  <\fBhttp://gcc.gnu.org/onlinedocs/gcc/Contributors.html\fR>,
! for contributors to \s-1GCC\s0.
  .SH "COPYRIGHT"
  .IX Header "COPYRIGHT"
  Copyright (c) 1988\-2015 Free Software Foundation, Inc.
--- 22732,22738 ----
  .IX Header "AUTHOR"
  See the Info entry for \fBgcc\fR, or
  <\fBhttp://gcc.gnu.org/onlinedocs/gcc/Contributors.html\fR>,
! for contributors to \s-1GCC.\s0
  .SH "COPYRIGHT"
  .IX Header "COPYRIGHT"
  Copyright (c) 1988\-2015 Free Software Foundation, Inc.
diff -Nrcpad gcc-5.4.0/gcc/doc/gcc.info gcc-5.5.0/gcc/doc/gcc.info
*** gcc-5.4.0/gcc/doc/gcc.info	Fri Jun  3 10:32:21 2016
--- gcc-5.5.0/gcc/doc/gcc.info	Tue Oct 10 09:40:11 2017
***************
*** 1,5 ****
! This is doc/gcc.info, produced by makeinfo version 4.12 from
! /space/rguenther/gcc-5.4.0/gcc-5.4.0/gcc/doc/gcc.texi.
  
  Copyright (C) 1988-2015 Free Software Foundation, Inc.
  
--- 1,4 ----
! This is gcc.info, produced by makeinfo version 6.1 from gcc.texi.
  
  Copyright (C) 1988-2015 Free Software Foundation, Inc.
  
*************** Free Documentation License".
*** 17,33 ****
  
   (b) The FSF's Back-Cover Text is:
  
!  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.
! 
  INFO-DIR-SECTION Software development
  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.
  END-INFO-DIR-ENTRY
   This file documents the use of the GNU compilers.
  
   Copyright (C) 1988-2015 Free Software Foundation, Inc.
--- 16,33 ----
  
   (b) The FSF's Back-Cover Text is:
  
!  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.
  INFO-DIR-SECTION Software development
  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.
  END-INFO-DIR-ENTRY
+ 
   This file documents the use of the GNU compilers.
  
   Copyright (C) 1988-2015 Free Software Foundation, Inc.
*************** Free Documentation License".
*** 46,55 ****
  
   (b) The FSF's Back-Cover Text is:
  
!  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.
! 
  
  
  File: gcc.info,  Node: Top,  Next: G++ and GCC,  Up: (DIR)
--- 46,54 ----
  
   (b) The FSF's Back-Cover Text is:
  
!  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.
  
  
  File: gcc.info,  Node: Top,  Next: G++ and GCC,  Up: (DIR)
*************** Introduction
*** 59,65 ****
  
  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 5.4.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.
--- 58,64 ----
  
  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 5.5.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
*** 68,82 ****
  
  * 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.
  * 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.
  * Trouble::         If you have trouble using GCC.
  * Bugs::            How, why and where to report bugs.
  * Service::         How To Get Help with GCC
--- 67,82 ----
  
  * 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.
  * 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.
  * Trouble::         If you have trouble using GCC.
  * Bugs::            How, why and where to report bugs.
  * Service::         How To Get Help with GCC
*************** documented in a separate manual.  *Note
*** 94,100 ****
  * Keyword Index::   Index of concepts and symbol names.
  
  
! File: gcc.info,  Node: G++ and GCC,  Next: Standards,  Prev: Top,  Up: Top
  
  1 Programming Languages Supported by GCC
  ****************************************
--- 94,100 ----
  * Keyword Index::   Index of concepts and symbol names.
  
  
! File: gcc.info,  Node: G++ and GCC,  Next: Standards,  Up: Top
  
  1 Programming Languages Supported by GCC
  ****************************************
*************** published in 1990.  This standard was ra
*** 157,168 ****
  (ISO/IEC 9899:1990) later in 1990.  There were no technical differences
  between these publications, although the sections of the ANSI standard
  were renumbered and became clauses in the ISO standard.  This standard,
! in both its forms, is commonly known as "C89", or occasionally as
! "C90", from the dates of ratification.  The ANSI standard, but not the
! ISO standard, also came with a Rationale document.  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.
  
--- 157,168 ----
  (ISO/IEC 9899:1990) later in 1990.  There were no technical differences
  between these publications, although the sections of the ANSI standard
  were renumbered and became clauses in the ISO standard.  This standard,
! in both its forms, is commonly known as "C89", or occasionally as "C90",
! from the dates of ratification.  The ANSI standard, but not the ISO
! standard, also came with a Rationale document.  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.
*** 171,189 ****
  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".  GCC has substantially
  complete support for this standard version; see
! `http://gcc.gnu.org/c99status.html' for details.  To select this
! standard, use `-std=c99' or `-std=iso9899:1999'.  (While in
! development, drafts of this standard version were referred to as "C9X".)
  
   Errors in the 1999 ISO C standard were corrected in three Technical
  Corrigenda published in 2001, 2004 and 2007.  GCC does not support the
--- 171,189 ----
  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".  GCC has substantially
  complete support for this standard version; see
! <http://gcc.gnu.org/c99status.html> for details.  To select this
! standard, use '-std=c99' or '-std=iso9899:1999'.  (While in development,
! drafts of this standard version were referred to as "C9X".)
  
   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.
*** 191,229 ****
  
   A fourth version of the C standard, known as "C11", was published in
  2011 as ISO/IEC 9899:2011.  GCC has substantially complete support for
! this standard, enabled with `-std=c11' or `-std=iso9899:2011'.  (While
  in development, drafts of this standard version were referred to as
  "C1X".)
  
!  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.  Use of the `-std' options listed above
  will disable 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) or `-std=gnu11' (for C11
! with GNU extensions).  The default, if no C language dialect options
! are given, is `-std=gnu11'.  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.
  
   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 would be a freestanding environment; a program using the
  facilities of an operating system would normally be in a hosted
  implementation.
--- 191,228 ----
  
   A fourth version of the C standard, known as "C11", was published in
  2011 as ISO/IEC 9899:2011.  GCC has substantially complete support for
! this standard, enabled with '-std=c11' or '-std=iso9899:2011'.  (While
  in development, drafts of this standard version were referred to as
  "C1X".)
  
!  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.  Use of the '-std' options listed above
  will disable 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) or '-std=gnu11' (for C11 with
! GNU extensions).  The default, if no C language dialect options are
! given, is '-std=gnu11'.  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.
  
   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 would be a freestanding environment; a program using the
  facilities of an operating system would normally be in a hosted
  implementation.
*************** implementation.
*** 231,241 ****
   GCC aims towards being usable as a conforming freestanding
  implementation, or as the compiler for a conforming hosted
  implementation.  By default, it will act 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 will then define `__STDC_HOSTED__' to `0' and 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.
--- 230,240 ----
   GCC aims towards being usable as a conforming freestanding
  implementation, or as the compiler for a conforming hosted
  implementation.  By default, it will act 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 will then define '__STDC_HOSTED__' to '0' and 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.
*************** well still need to make your own arrange
*** 244,262 ****
   GCC does not provide the library facilities required only of hosted
  implementations, nor yet all the facilities required by C99 of
  freestanding implementations on all platforms; to use the facilities of
! a hosted environment, you will need to find them elsewhere (for
! example, in 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'.  Finally, if `__builtin_trap' is used, and the target does
! not implement the `trap' pattern, then GCC will emit a call to `abort'.
  
   For references to Technical Corrigenda, Rationale documents and
  information concerning the history of C that is available online, see
! `http://gcc.gnu.org/readings.html'
  
  2.2 C++ Language
  ================
--- 243,260 ----
   GCC does not provide the library facilities required only of hosted
  implementations, nor yet all the facilities required by C99 of
  freestanding implementations on all platforms; to use the facilities of
! a hosted environment, you will need to find them elsewhere (for example,
! in 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'.
! Finally, if '__builtin_trap' is used, and the target does not implement
! the 'trap' pattern, then GCC will emit a call to 'abort'.
  
   For references to Technical Corrigenda, Rationale documents and
  information concerning the history of C that is available online, see
! <http://gcc.gnu.org/readings.html>
  
  2.2 C++ Language
  ================
*************** experimental support for the second ISO
*** 266,367 ****
  
   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 publication it was
! commonly referred to as C++0x.  C++11 contains several changes to the
! C++ language, most of which have been implemented in an experimental
! C++11 mode in GCC.  For information regarding the C++11 features
! available in the experimental C++11 mode, see
! `http://gcc.gnu.org/projects/cxx0x.html'. To select this standard in
! GCC, use the option `-std=c++11'; 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).
  
   More information about the C++ standards is available on the ISO C++
! committee's web site at `http://www.open-std.org/jtc1/sc22/wg21/'.
  
   By default, GCC provides some extensions to the C++ language; *Note
! Options Controlling C++ Dialect: C++ Dialect Options.  Use of the
! `-std' option listed above will disable these extensions.  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).  The default, if no C++ language dialect
! options are given, is `-std=gnu++98'.
  
  2.3 Objective-C and Objective-C++ Languages
  ===========================================
  
! GCC supports "traditional" Objective-C (also known as "Objective-C
! 1.0") and contains support for the Objective-C exception and
! synchronization syntax.  It has also support for a number of
! "Objective-C 2.0" language extensions, including properties, fast
! enumeration (only for Objective-C), method attributes and the @optional
! and @required keywords in protocols.  GCC supports Objective-C++ and
! features available in Objective-C are also available in Objective-C++.
  
   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.
  
   There is no formal written standard for Objective-C or Objective-C++.
  The authoritative manual on traditional Objective-C (1.0) is
! "Object-Oriented Programming and the Objective-C Language", available
! at a number of web sites:
!    * `http://www.gnustep.org/resources/documentation/ObjectivCBook.pdf'
       is the original NeXTstep document;
! 
!    * `http://objc.toodarkpark.net' is the same document in another
       format;
! 
!    *
!      `http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ObjectiveC/'
       has an updated version but make sure you search for "Object
       Oriented Programming and the Objective-C Programming Language 1.0",
       not documentation on the newer "Objective-C 2.0" language
  
   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:
!    *
!      `http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ObjectiveC/'
  
   For more information concerning the history of Objective-C that is
! available online, see `http://gcc.gnu.org/readings.html'
  
  2.4 Go Language
  ===============
  
  As of the GCC 4.7.1 release, GCC supports the Go 1 language standard,
! described at `http://golang.org/doc/go1.html'.
  
  2.5 References for Other Languages
  ==================================
--- 264,363 ----
  
   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 publication it was commonly
! referred to as C++0x.  C++11 contains several changes to the C++
! language, most of which have been implemented in an experimental C++11
! mode in GCC.  For information regarding the C++11 features available in
! the experimental C++11 mode, see
! <http://gcc.gnu.org/projects/cxx0x.html>.  To select this standard in
! GCC, use the option '-std=c++11'; 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).
  
   More information about the C++ standards is available on the ISO C++
! committee's web site at <http://www.open-std.org/jtc1/sc22/wg21/>.
  
   By default, GCC provides some extensions to the C++ language; *Note
! Options Controlling C++ Dialect: C++ Dialect Options.  Use of the '-std'
! option listed above will disable these extensions.  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).  The default, if no C++ language dialect options are given,
! is '-std=gnu++98'.
  
  2.3 Objective-C and Objective-C++ Languages
  ===========================================
  
! GCC supports "traditional" Objective-C (also known as "Objective-C 1.0")
! and contains support for the Objective-C exception and synchronization
! syntax.  It has also support for a number of "Objective-C 2.0" language
! extensions, including properties, fast enumeration (only for
! Objective-C), method attributes and the @optional and @required keywords
! in protocols.  GCC supports Objective-C++ and features available in
! Objective-C are also available in Objective-C++.
  
   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.
  
   There is no formal written standard for Objective-C or Objective-C++.
  The authoritative manual on traditional Objective-C (1.0) is
! "Object-Oriented Programming and the Objective-C Language", available at
! a number of web sites:
!    * <http://www.gnustep.org/resources/documentation/ObjectivCBook.pdf>
       is the original NeXTstep document;
!    * <http://objc.toodarkpark.net> is the same document in another
       format;
!    * 
!      <http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ObjectiveC/>
       has an updated version but make sure you search for "Object
       Oriented Programming and the Objective-C Programming Language 1.0",
       not documentation on the newer "Objective-C 2.0" language
  
   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:
!    * 
!      <http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ObjectiveC/>
  
   For more information concerning the history of Objective-C that is
! available online, see <http://gcc.gnu.org/readings.html>
  
  2.4 Go Language
  ===============
  
  As of the GCC 4.7.1 release, GCC supports the Go 1 language standard,
! described at <http://golang.org/doc/go1.html>.
  
  2.5 References for Other Languages
  ==================================
*************** conformance and compatibility of the Ada
*** 373,379 ****
  supported by GNU Fortran.
  
   *Note Compatibility with the Java Platform: (gcj)Compatibility, for
! details of compatibility between `gcj' and the Java Platform.
  
  
  File: gcc.info,  Node: Invoking GCC,  Next: C Implementation,  Prev: Standards,  Up: Top
--- 369,375 ----
  supported by GNU Fortran.
  
   *Note Compatibility with the Java Platform: (gcj)Compatibility, for
! details of compatibility between 'gcj' and the Java Platform.
  
  
  File: gcc.info,  Node: Invoking GCC,  Next: C Implementation,  Prev: Standards,  Up: Top
*************** File: gcc.info,  Node: Invoking GCC,  Ne
*** 383,391 ****
  
  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.
  
   Other options are passed on to one stage of processing.  Some options
  control the preprocessor and others the compiler itself.  Yet other
--- 379,387 ----
  
  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.
  
   Other options are passed on to one stage of processing.  Some options
  control the preprocessor and others the compiler itself.  Yet other
*************** that option with all supported languages
*** 401,420 ****
   *Note Compiling C++ Programs: Invoking G++, for a summary of special
  options for 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.
  
   *Note Option Index::, for an index to GCC's options.
--- 397,416 ----
   *Note Compiling C++ Programs: Invoking G++, for a summary of special
  options for 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.
  
   *Note Option Index::, for an index to GCC's options.
*************** _Warning Options_
*** 550,556 ****
            -Wno-attributes -Wno-builtin-macro-redefined
            -Wc90-c99-compat -Wc99-c11-compat
            -Wc++-compat -Wc++11-compat -Wc++14-compat -Wcast-align  -Wcast-qual
!           -Wchar-subscripts -Wclobbered  -Wcomment -Wconditionally-supported
            -Wconversion -Wcoverage-mismatch -Wdate-time -Wdelete-incomplete -Wno-cpp
            -Wno-deprecated -Wno-deprecated-declarations -Wno-designated-init
            -Wdisabled-optimization
--- 546,552 ----
            -Wno-attributes -Wno-builtin-macro-redefined
            -Wc90-c99-compat -Wc99-c11-compat
            -Wc++-compat -Wc++11-compat -Wc++14-compat -Wcast-align  -Wcast-qual
!           -Wchar-subscripts -Wchkp -Wclobbered  -Wcomment -Wconditionally-supported
            -Wconversion -Wcoverage-mismatch -Wdate-time -Wdelete-incomplete -Wno-cpp
            -Wno-deprecated -Wno-deprecated-declarations -Wno-designated-init
            -Wdisabled-optimization
*************** _Machine Dependent Options_
*** 877,882 ****
--- 873,879 ----
            -mmcu=MCU -maccumulate-args -mbranch-cost=COST
            -mcall-prologues -mint8 -mn_flash=SIZE -mno-interrupts
            -mrelax -mrmw -mstrict-X -mtiny-stack -nodevicelib -Waddr-space-convert
+           -Wmisspelled-isr
  
       _Blackfin Options_
            -mcpu=CPU[-SIREVISION]
*************** _Machine Dependent Options_
*** 1224,1230 ****
            -mpointers-to-nested-functions -mno-pointers-to-nested-functions
            -msave-toc-indirect -mno-save-toc-indirect
            -mpower8-fusion -mno-mpower8-fusion -mpower8-vector -mno-power8-vector
!           -mcrypto -mno-crypto -mdirect-move -mno-direct-move
            -mquad-memory -mno-quad-memory
            -mquad-memory-atomic -mno-quad-memory-atomic
            -mcompat-align-parm -mno-compat-align-parm
--- 1221,1227 ----
            -mpointers-to-nested-functions -mno-pointers-to-nested-functions
            -msave-toc-indirect -mno-save-toc-indirect
            -mpower8-fusion -mno-mpower8-fusion -mpower8-vector -mno-power8-vector
!           -mcrypto -mno-crypto -mhtm -mno-htm -mdirect-move -mno-direct-move
            -mquad-memory -mno-quad-memory
            -mquad-memory-atomic -mno-quad-memory-atomic
            -mcompat-align-parm -mno-compat-align-parm
*************** _Code Generation Options_
*** 1437,1443 ****
            -fvisibility=[default|internal|hidden|protected]
            -fstrict-volatile-bitfields -fsync-libcalls
  
- 
  
  File: gcc.info,  Node: Overall Options,  Next: Invoking G++,  Prev: Option Summary,  Up: Invoking GCC
  
--- 1434,1439 ----
*************** File: gcc.info,  Node: Overall Options,
*** 1447,1576 ****
  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 the object
! files (those newly compiled, and those specified as input) into an
! executable file.
  
   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'
       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'
       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.go'
       Go source code.
  
! `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++-cpp-output
--- 1443,1572 ----
  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 the object files
! (those newly compiled, and those specified as input) into an executable
! file.
  
   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'
       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'
       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.go'
       Go source code.
  
! '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++-cpp-output
*************** compilation is done:
*** 1582,1720 ****
            go
            java
  
! `-x none'
       Turn off any specification of a language, so that subsequent files
       are handled according to their file name suffixes (as they are if
!      `-x' has not been used at all).
  
! `-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.
  
!  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 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.
  
! `-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.
  
! `-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.
  
! `--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.
  
!     `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:
--- 1578,1716 ----
            go
            java
  
! '-x none'
       Turn off any specification of a language, so that subsequent files
       are handled according to their file name suffixes (as they are if
!      '-x' has not been used at all).
  
! '-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.
  
!  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 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.
  
! '-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.
  
! '-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.
  
! '--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.
  
!      '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:
*************** do nothing at all.
*** 1722,1734 ****
            --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
--- 1718,1730 ----
            --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
*************** do nothing at all.
*** 1739,1756 ****
  
            --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 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:
--- 1735,1752 ----
  
            --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 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:
*************** do nothing at all.
*** 1760,1834 ****
  
       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
  
! `-no-canonical-prefixes'
!      Do not expand any symbolic links, resolve references to `/../' or
!      `/./', or make the path absolute when generating a relative prefix.
  
! `--version'
       Display the version number and copyrights of the invoked GCC.
  
! `-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 ...'.
  
! `-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 Generating Ada Bindings for C and C++ headers:
!      (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 removed.
  
       Options in FILE are separated by whitespace.  A whitespace
       character may be included in an option by surrounding the entire
!      option in either single or double quotes.  Any character
!      (including a backslash) may be included by prefixing the character
!      to be included with a backslash.  The FILE may itself contain
!      additional @FILE options; any such options will be processed
!      recursively.
  
  
  File: gcc.info,  Node: Invoking G++,  Next: C Dialect Options,  Prev: Overall Options,  Up: Invoking GCC
--- 1756,1827 ----
  
       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
  
! '-no-canonical-prefixes'
!      Do not expand any symbolic links, resolve references to '/../' or
!      '/./', or make the path absolute when generating a relative prefix.
  
! '--version'
       Display the version number and copyrights of the invoked GCC.
  
! '-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 ...'.
  
! '-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
!      removed.
  
       Options in FILE are separated by whitespace.  A whitespace
       character may be included in an option by surrounding the entire
!      option in either single or double quotes.  Any character (including
!      a backslash) may be included by prefixing the character to be
!      included with a backslash.  The FILE may itself contain additional
!      @FILE options; any such options will be processed recursively.
  
  
  File: gcc.info,  Node: Invoking G++,  Next: C Dialect Options,  Prev: Overall Options,  Up: Invoking GCC
*************** File: gcc.info,  Node: Invoking G++,  Ne
*** 1836,1856 ****
  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'; and
! preprocessed C++ files use the suffix `.ii'.  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
--- 1829,1849 ----
  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'; and
! preprocessed C++ files use the suffix '.ii'.  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
*** 1871,2165 ****
  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'.
  
       This turns off certain features of GCC that are incompatible with
!      ISO C90 (when compiling C code), or of standard C++ (when
!      compiling C++ code), such as the `asm' and `typeof' keywords, and
!      predefined macros such as `unix' and `vax' that identify the type
!      of system you are using.  It also enables the undesirable and
!      rarely used ISO trigraph feature.  For the C compiler, it disables
!      recognition of C++ style `//' comments as well as the `inline'
!      keyword.
  
!      The alternate keywords `__asm__', `__extension__', `__inline__'
!      and `__typeof__' continue to work despite `-ansi'.  You would not
!      want to use them in an ISO C program, of course, but it is useful
!      to put them in header files that might be included in compilations
!      done with `-ansi'.  Alternate predefined macros such as `__unix__'
!      and `__vax__' are also available, with or without `-ansi'.
  
!      The `-ansi' option does not cause non-ISO programs to be rejected
!      gratuitously.  For that, `-Wpedantic' is required in addition to
!      `-ansi'.  *Note Warning Options::.
  
!      The macro `__STRICT_ANSI__' is predefined when the `-ansi' option
       is used.  Some header files may notice this macro and refrain from
!      declaring certain functions or defining certain macros that the
!      ISO standard doesn't call for; this is to avoid interfering with
!      any programs that might use these names for other things.
  
       Functions that are normally built in but do not have semantics
!      defined by ISO C (such as `alloca' and `ffs') are not built-in
!      functions when `-ansi' is used.  *Note Other built-in functions
       provided by GCC: Other Builtins, for details of the functions
       affected.
  
! `-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 `http://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.
  
!     `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.  This is the default for C code.  The
!           name `gnu1x' 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'.  This is the default for C++
            code.
  
!     `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++1z'
!           The next revision of the ISO C++ standard, tentatively
!           planned for 2017.  Support is highly experimental, and will
!           almost certainly change in incompatible ways in future
!           releases.
  
!     `gnu++1z'
!           GNU dialect of `-std=c++1z'.  Support is highly experimental,
            and will almost certainly change in incompatible ways in
            future releases.
  
! `-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 Common Predefined Macros:
!      (cpp)Common Predefined Macros.
  
! `-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
       language other than C.
  
       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.
  
! `-fallow-parameterless-variadic-functions'
       Accept variadic functions without named parameters.
  
       Although it is possible to define such a function, this is not very
       useful as it is not possible to read the arguments.  This is only
       supported for C as this construct is allowed by C++.
  
! `-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.  `-ansi' implies
!      `-fno-asm'.
  
!      In C++, this switch only affects the `typeof' keyword, since `asm'
!      and `inline' are standard keywords.  You may want to use the
!      `-fno-gnu-keywords' flag instead, which has the same effect.  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.
  
! `-fno-builtin'
! `-fno-builtin-FUNCTION'
       Don't recognize built-in functions that do not begin with
!      `__builtin_' as prefix.  *Note Other built-in functions provided
!      by GCC: Other 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 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 `-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))
  
! `-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'.
  
- `-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.
  
! `-fopenacc'
!      Enable handling of OpenACC directives `#pragma acc' in C/C++ and
!      `!$acc' in Fortran.  When `-fopenacc' is specified, the compiler
       generates accelerated code according to the OpenACC Application
!      Programming Interface v2.0 `http://www.openacc.org/'.  This option
!      implies `-pthread', and thus is only supported on targets that
!      have support for `-pthread'.
  
       Note that this is an experimental feature, incomplete, and subject
!      to change in future versions of GCC.  See
!      `https://gcc.gnu.org/wiki/OpenACC' for more information.
  
! `-fopenmp'
!      Enable handling of OpenMP directives `#pragma omp' in C/C++ and
!      `!$omp' in Fortran.  When `-fopenmp' is specified, the compiler
!      generates parallel code according to the OpenMP Application
!      Program Interface v4.0 `http://www.openmp.org/'.  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 directives with `#pragma omp' in
!      C/C++ and `!$omp' in Fortran. Other OpenMP directives are ignored.
  
! `-fcilkplus'
       Enable the usage of Cilk Plus language extension features for
!      C/C++.  When the option `-fcilkplus' is specified, enable the
!      usage of the Cilk Plus Language extension features for C/C++.  The
       present implementation follows ABI version 1.2.  This is an
       experimental feature that is only partially complete, and whose
       interface may change in future versions of GCC as the official
!      specification changes.  Currently, all features but `_Cilk_for'
       have been implemented.
  
! `-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
--- 1864,2157 ----
  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'.
  
       This turns off certain features of GCC that are incompatible with
!      ISO C90 (when compiling C code), or of standard C++ (when compiling
!      C++ code), such as the 'asm' and 'typeof' keywords, and predefined
!      macros such as 'unix' and 'vax' that identify the type of system
!      you are using.  It also enables the undesirable and rarely used ISO
!      trigraph feature.  For the C compiler, it disables recognition of
!      C++ style '//' comments as well as the 'inline' keyword.
  
!      The alternate keywords '__asm__', '__extension__', '__inline__' and
!      '__typeof__' continue to work despite '-ansi'.  You would not want
!      to use them in an ISO C program, of course, but it is useful to put
!      them in header files that might be included in compilations done
!      with '-ansi'.  Alternate predefined macros such as '__unix__' and
!      '__vax__' are also available, with or without '-ansi'.
  
!      The '-ansi' option does not cause non-ISO programs to be rejected
!      gratuitously.  For that, '-Wpedantic' is required in addition to
!      '-ansi'.  *Note Warning Options::.
  
!      The macro '__STRICT_ANSI__' is predefined when the '-ansi' option
       is used.  Some header files may notice this macro and refrain from
!      declaring certain functions or defining certain macros that the ISO
!      standard doesn't call for; this is to avoid interfering with any
!      programs that might use these names for other things.
  
       Functions that are normally built in but do not have semantics
!      defined by ISO C (such as 'alloca' and 'ffs') are not built-in
!      functions when '-ansi' is used.  *Note Other built-in functions
       provided by GCC: Other Builtins, for details of the functions
       affected.
  
! '-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
!           <http://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.
  
!      '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.  This is the default for C code.  The
!           name 'gnu1x' 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'.  This is the default for C++
            code.
  
!      '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++1z'
!           The next revision of the ISO C++ standard, tentatively planned
!           for 2017.  Support is highly experimental, and will almost
!           certainly change in incompatible ways in future releases.
  
!      'gnu++1z'
!           GNU dialect of '-std=c++1z'.  Support is highly experimental,
            and will almost certainly change in incompatible ways in
            future releases.
  
! '-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::.
  
! '-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
       language other than C.
  
       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.
  
! '-fallow-parameterless-variadic-functions'
       Accept variadic functions without named parameters.
  
       Although it is possible to define such a function, this is not very
       useful as it is not possible to read the arguments.  This is only
       supported for C as this construct is allowed by C++.
  
! '-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.  '-ansi' implies
!      '-fno-asm'.
  
!      In C++, this switch only affects the 'typeof' keyword, since 'asm'
!      and 'inline' are standard keywords.  You may want to use the
!      '-fno-gnu-keywords' flag instead, which has the same effect.  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.
  
! '-fno-builtin'
! '-fno-builtin-FUNCTION'
       Don't recognize built-in functions that do not begin with
!      '__builtin_' as prefix.  *Note Other built-in functions provided by
!      GCC: Other 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
!      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
!      '-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))
  
! '-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'.
! 
! '-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.
  
! '-fopenacc'
!      Enable handling of OpenACC directives '#pragma acc' in C/C++ and
!      '!$acc' in Fortran.  When '-fopenacc' is specified, the compiler
       generates accelerated code according to the OpenACC Application
!      Programming Interface v2.0 <http://www.openacc.org/>.  This option
!      implies '-pthread', and thus is only supported on targets that have
!      support for '-pthread'.
  
       Note that this is an experimental feature, incomplete, and subject
!      to change in future versions of GCC. See
!      <https://gcc.gnu.org/wiki/OpenACC> for more information.
  
! '-fopenmp'
!      Enable handling of OpenMP directives '#pragma omp' in C/C++ and
!      '!$omp' in Fortran.  When '-fopenmp' is specified, the compiler
!      generates parallel code according to the OpenMP Application Program
!      Interface v4.0 <http://www.openmp.org/>.  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 directives with '#pragma omp' in
!      C/C++ and '!$omp' in Fortran.  Other OpenMP directives are ignored.
  
! '-fcilkplus'
       Enable the usage of Cilk Plus language extension features for
!      C/C++.  When the option '-fcilkplus' is specified, enable the usage
!      of the Cilk Plus Language extension features for C/C++.  The
       present implementation follows ABI version 1.2.  This is an
       experimental feature that is only partially complete, and whose
       interface may change in future versions of GCC as the official
!      specification changes.  Currently, all features but '_Cilk_for'
       have been implemented.
  
! '-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:
*** 2171,2179 ****
       libitm.
  
       Note that the transactional memory feature is not supported with
!      non-call exceptions (`-fnon-call-exceptions').
  
! `-fms-extensions'
       Accept some non-standard constructs used in Microsoft header files.
  
       In C++ code, this allows member names in structures to be similar
--- 2163,2171 ----
       libitm.
  
       Note that the transactional memory feature is not supported with
!      non-call exceptions ('-fnon-call-exceptions').
  
! '-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:
*** 2191,2260 ****
       Note that this option is off for all targets but x86 targets using
       ms-abi.
  
! `-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++.
  
! `-trigraphs'
!      Support ISO C trigraphs.  The `-ansi' option (and `-std' options
!      for strict ISO C conformance) implies `-trigraphs'.
  
! `-traditional'
! `-traditional-cpp'
       Formerly, these options caused GCC to attempt to emulate a
!      pre-standard C compiler.  They are now only supported with the
!      `-E' switch.  The preprocessor continues to support a pre-standard
!      mode.  See the GNU CPP manual for details.
  
! `-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++.
  
! `-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.
  
! `-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.
  
! `-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'.
  
! `-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.
  
  
  File: gcc.info,  Node: C++ Dialect Options,  Next: Objective-C and Objective-C++ Dialect Options,  Prev: C Dialect Options,  Up: Invoking GCC
--- 2183,2252 ----
       Note that this option is off for all targets but x86 targets using
       ms-abi.
  
! '-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++.
  
! '-trigraphs'
!      Support ISO C trigraphs.  The '-ansi' option (and '-std' options
!      for strict ISO C conformance) implies '-trigraphs'.
  
! '-traditional'
! '-traditional-cpp'
       Formerly, these options caused GCC to attempt to emulate a
!      pre-standard C compiler.  They are now only supported with the '-E'
!      switch.  The preprocessor continues to support a pre-standard mode.
!      See the GNU CPP manual for details.
  
! '-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++.
  
! '-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.
  
! '-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.
  
! '-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'.
  
! '-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.
  
  
  File: gcc.info,  Node: C++ Dialect Options,  Next: Objective-C and Objective-C++ Dialect Options,  Prev: C Dialect Options,  Up: Invoking GCC
*************** File: gcc.info,  Node: C++ Dialect Optio
*** 2265,2281 ****
  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 -frepo -O -c firstClass.C
  
! In this example, only `-frepo' is an option meant only for C++
! programs; you can use the other options with any language supported by
! GCC.
  
   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++
--- 2257,2272 ----
  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 -frepo -O -c firstClass.C
  
! In this example, only '-frepo' is an option meant only for C++ programs;
! you can use the other options with any language supported by GCC.
  
   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++
*************** GCC.
*** 2313,2356 ****
       function-cv-qualifiers.
  
       Version 9, which first appeared in G++ 5.2, corrects the alignment
!      of `nullptr_t'.
  
!      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 2.  If
       another ABI version is explicitly selected, this defaults to 0.
  
!      The compatibility version is also set by `-Wabi=N'.
  
! `-fno-access-control'
       Turn off all access checking.  This switch is mainly useful for
       working around bugs in the access control code.
  
! `-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)'.
  
! `-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.
  
! `-fdeduce-init-list'
       Enable deduction of a template type parameter as
!      `std::initializer_list' from a brace-enclosed initializer list,
       i.e.
  
            template <class T> auto forward(T t) -> decltype (realfn (t))
--- 2304,2347 ----
       function-cv-qualifiers.
  
       Version 9, which first appeared in G++ 5.2, corrects the alignment
!      of 'nullptr_t'.
  
!      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 2.  If
       another ABI version is explicitly selected, this defaults to 0.
  
!      The compatibility version is also set by '-Wabi=N'.
  
! '-fno-access-control'
       Turn off all access checking.  This switch is mainly useful for
       working around bugs in the access control code.
  
! '-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)'.
  
! '-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.
  
! '-fdeduce-init-list'
       Enable deduction of a template type parameter as
!      'std::initializer_list' from a brace-enclosed initializer list,
       i.e.
  
            template <class T> auto forward(T t) -> decltype (realfn (t))
*************** GCC.
*** 2369,2428 ****
       option is deprecated, and may be removed in a future version of
       G++.
  
! `-ffriend-injection'
       Inject friend functions into the enclosing namespace, so that they
       are visible outside the scope of the class in which they are
!      declared.  Friend functions were documented to work this way in
!      the old Annotated C++ Reference Manual.  However, in ISO C++ a
!      friend function that is not declared in an enclosing scope can
!      only be found using argument dependent lookup.  GCC defaults to
!      the standard behavior.
  
       This option is for compatibility, and may be removed in a future
       release of G++.
  
! `-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.
  
! `-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, 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 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 `-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'.
  
! `-ffor-scope'
! `-fno-for-scope'
!      If `-ffor-scope' is specified, the scope of variables declared in
!      a for-init-statement is limited to the `for' loop itself, as
!      specified by the C++ standard.  If `-fno-for-scope' is specified,
       the scope of variables declared in a for-init-statement extends to
       the end of the enclosing scope, as was the case in old versions of
       G++, and other (traditional) implementations of C++.
--- 2360,2418 ----
       option is deprecated, and may be removed in a future version of
       G++.
  
! '-ffriend-injection'
       Inject friend functions into the enclosing namespace, so that they
       are visible outside the scope of the class in which they are
!      declared.  Friend functions were documented to work this way in the
!      old Annotated C++ Reference Manual.  However, in ISO C++ a friend
!      function that is not declared in an enclosing scope can only be
!      found using argument dependent lookup.  GCC defaults to the
!      standard behavior.
  
       This option is for compatibility, and may be removed in a future
       release of G++.
  
! '-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.
  
! '-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,
!      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 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
!      '-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'.
  
! '-ffor-scope'
! '-fno-for-scope'
!      If '-ffor-scope' is specified, the scope of variables declared in a
!      for-init-statement is limited to the 'for' loop itself, as
!      specified by the C++ standard.  If '-fno-for-scope' is specified,
       the scope of variables declared in a for-init-statement extends to
       the end of the enclosing scope, as was the case in old versions of
       G++, and other (traditional) implementations of C++.
*************** GCC.
*** 2431,2585 ****
       but to allow and give a warning for old-style code that would
       otherwise be invalid, or have different behavior.
  
! `-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.  `-ansi' implies `-fno-gnu-keywords'.
  
! `-fno-implicit-templates'
       Never emit code for non-inline templates that are instantiated
       implicitly (i.e. by use); only emit code for explicit
       instantiations.  *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.
  
! `-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.
  
! `-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.
  
! `-fpermissive'
       Downgrade some diagnostics about nonconformant code from errors to
!      warnings.  Thus, using `-fpermissive' allows some nonconforming
       code to compile.
  
! `-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.
  
! `-frepo'
       Enable automatic template instantiation at link time.  This option
!      also implies `-fno-implicit-templates'.  *Note Template
       Instantiation::, for more information.
  
! `-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.
  
! `-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.
  
! `-fstats'
       Emit statistics about front-end processing at the end of the
       compilation.  This information is generally only useful to the G++
       development team.
  
! `-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.
  
! `-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
       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.
  
! `-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
       massively reduces the size of the dynamic export table when the
       library makes heavy use of templates.
  
--- 2421,2575 ----
       but to allow and give a warning for old-style code that would
       otherwise be invalid, or have different behavior.
  
! '-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.  '-ansi' implies '-fno-gnu-keywords'.
  
! '-fno-implicit-templates'
       Never emit code for non-inline templates that are instantiated
       implicitly (i.e. by use); only emit code for explicit
       instantiations.  *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.
  
! '-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.
  
! '-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.
  
! '-fpermissive'
       Downgrade some diagnostics about nonconformant code from errors to
!      warnings.  Thus, using '-fpermissive' allows some nonconforming
       code to compile.
  
! '-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.
  
! '-frepo'
       Enable automatic template instantiation at link time.  This option
!      also implies '-fno-implicit-templates'.  *Note Template
       Instantiation::, for more information.
  
! '-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.
  
! '-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.
  
! '-fstats'
       Emit statistics about front-end processing at the end of the
       compilation.  This information is generally only useful to the G++
       development team.
  
! '-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.
  
! '-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
       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.
  
! '-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
       massively reduces the size of the dynamic export table when the
       library makes heavy use of templates.
  
*************** GCC.
*** 2598,2611 ****
       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.
  
--- 2588,2601 ----
       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.
  
*************** GCC.
*** 2614,2620 ****
            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.
--- 2604,2610 ----
            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.
*************** GCC.
*** 2627,2707 ****
       given, it is a violation of the ODR to define types with the same
       name differently.
  
! `-fvtable-verify=[std|preinit|none]'
!      Turn 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 vtable pointer is detected at run time, an error is
       reported and execution of the program is immediately halted.
  
       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.
  
! `-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++.
  
! `-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.)
  
   In addition, these optimization, warning, and code generation options
  have meanings only for C++ programs:
  
! `-Wabi (C, Objective-C, C++ and Objective-C++ only)'
!      When an explicit `-fabi-version=N' option is used, causes G++ to
       warn when it generates code that is probably not compatible with
       the vendor-neutral C++ ABI.  Since G++ now defaults to
!      `-fabi-version=0', `-Wabi' has no effect unless either an older
!      ABI version is selected (with `-fabi-version=N') or an older
!      compatibility version is selected (with `-Wabi=N' or
!      `-fabi-compat-version=N').
  
       Although an effort has been made to warn about all such cases,
       there are probably some cases that are not warned about, even
--- 2617,2697 ----
       given, it is a violation of the ODR to define types with the same
       name differently.
  
! '-fvtable-verify=[std|preinit|none]'
!      Turn 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 vtable pointer is detected at run time, an error is
       reported and execution of the program is immediately halted.
  
       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.
  
! '-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++.
  
! '-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.)
  
   In addition, these optimization, warning, and code generation options
  have meanings only for C++ programs:
  
! '-Wabi (C, Objective-C, C++ and Objective-C++ only)'
!      When an explicit '-fabi-version=N' option is used, causes G++ to
       warn when it generates code that is probably not compatible with
       the vendor-neutral C++ ABI.  Since G++ now defaults to
!      '-fabi-version=0', '-Wabi' has no effect unless either an older ABI
!      version is selected (with '-fabi-version=N') or an older
!      compatibility version is selected (with '-Wabi=N' or
!      '-fabi-compat-version=N').
  
       Although an effort has been made to warn about all such cases,
       there are probably some cases that are not warned about, even
*************** have meanings only for C++ programs:
*** 2713,2724 ****
       concerned about the fact that code generated by G++ may not be
       binary compatible with code generated by other compilers.
  
!      `-Wabi' can also be used with an explicit version number to warn
!      about compatibility with a particular `-fabi-version' level, e.g.
!      `-Wabi=2' to warn about changes relative to `-fabi-version=2'.
!      Specifying a version number also sets `-fabi-compat-version=N'.
  
!      The 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
--- 2703,2714 ----
       concerned about the fact that code generated by G++ may not be
       binary compatible with code generated by other compilers.
  
!      '-Wabi' can also be used with an explicit version number to warn
!      about compatibility with a particular '-fabi-version' level, e.g.
!      '-Wabi=2' to warn about changes relative to '-fabi-version=2'.
!      Specifying a version number also sets '-fabi-compat-version=N'.
  
!      The 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
*************** have meanings only for C++ programs:
*** 2727,2816 ****
                 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.
  
!      It also warns about psABI-related changes.  The known psABI
!      changes at this point include:
  
!         * For SysV/x86-64, unions with `long double' members are passed
!           in memory as specified in psABI.  For example:
  
                 union U {
                   long double ld;
                   int i;
                 };
  
!           `union U' is always passed in memory.
! 
  
! `-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.
  
! `-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.
  
! `-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'.
  
! `-Wliteral-suffix (C++ and Objective-C++ only)'
       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>
--- 2717,2804 ----
                 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.
  
!      It also warns about psABI-related changes.  The known psABI changes
!      at this point include:
  
!         * For SysV/x86-64, unions with 'long double' members are passed
!           in memory as specified in psABI. For example:
  
                 union U {
                   long double ld;
                   int i;
                 };
  
!           'union U' is always passed in memory.
  
! '-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.
  
! '-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.
  
! '-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'.
  
! '-Wliteral-suffix (C++ and Objective-C++ only)'
       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>
*************** have meanings only for C++ programs:
*** 2821,2859 ****
              printf("My int64: %"PRId64"\n", i64);
            }
  
!      In this case, `PRId64' is treated as a separate preprocessing
       token.
  
       This warning is enabled by default.
  
! `-Wnarrowing (C++ and Objective-C++ only)'
       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'.
  
!      With `-std=c++11', `-Wno-narrowing' suppresses the diagnostic
       required by the standard.  Note that this does not affect the
       meaning of well-formed code; narrowing conversions are still
       considered ill-formed in SFINAE context.
  
! `-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.
  
! `-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.
  
! `-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:
  
--- 2809,2847 ----
              printf("My int64: %"PRId64"\n", i64);
            }
  
!      In this case, 'PRId64' is treated as a separate preprocessing
       token.
  
       This warning is enabled by default.
  
! '-Wnarrowing (C++ and Objective-C++ only)'
       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'.
  
!      With '-std=c++11', '-Wno-narrowing' suppresses the diagnostic
       required by the standard.  Note that this does not affect the
       meaning of well-formed code; narrowing conversions are still
       considered ill-formed in SFINAE context.
  
! '-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.
  
! '-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.
  
! '-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:
  
*************** have meanings only for C++ programs:
*** 2863,2893 ****
              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'.
  
! `-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', ...).
  
!  The following `-W...' options are not affected by `-Wall'.
  
! `-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.
--- 2851,2881 ----
              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'.
  
! '-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', ...).
  
!  The following '-W...' options are not affected by '-Wall'.
  
! '-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.
*************** have meanings only for C++ programs:
*** 2895,2943 ****
          * 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.
  
! `-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-templatized friend functions are declared
       within a template.  Since the advent of explicit template
       specification support in G++, if the name of the friend is an
!      unqualified-id (i.e., `friend foo(int)'), the C++ language
       specification demands that the friend declare or define an
       ordinary, nontemplate function.  (Section 14.5.3).  Before G++
       implemented explicit specification, unqualified-ids could be
       interpreted as a particular specialization of a templatized
       function.  Because this non-conforming behavior is no longer the
!      default behavior for G++, `-Wnon-template-friend' allows the
       compiler to check existing code for potential trouble spots and is
       on by default.  This new compiler behavior can be turned off with
!      `-Wno-non-template-friend', which keeps the conformant compiler
       code but disables the helpful warning.
  
! `-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)'
       Warn when a function declaration hides virtual functions from a
       base class.  For example, in:
  
--- 2883,2929 ----
          * 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.
  
! '-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-templatized friend functions are declared
       within a template.  Since the advent of explicit template
       specification support in G++, if the name of the friend is an
!      unqualified-id (i.e., 'friend foo(int)'), the C++ language
       specification demands that the friend declare or define an
       ordinary, nontemplate function.  (Section 14.5.3).  Before G++
       implemented explicit specification, unqualified-ids could be
       interpreted as a particular specialization of a templatized
       function.  Because this non-conforming behavior is no longer the
!      default behavior for G++, '-Wnon-template-friend' allows the
       compiler to check existing code for potential trouble spots and is
       on by default.  This new compiler behavior can be turned off with
!      '-Wno-non-template-friend', which keeps the conformant compiler
       code but disables the helpful warning.
  
! '-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)'
       Warn when a function declaration hides virtual functions from a
       base class.  For example, in:
  
*************** have meanings only for C++ programs:
*** 2949,2966 ****
              void f(int);
            };
  
!      the `A' class version of `f' is hidden in `B', and code like:
  
            B* b;
            b->f();
  
       fails to compile.
  
! `-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
--- 2935,2952 ----
              void f(int);
            };
  
!      the 'A' class version of 'f' is hidden in 'B', and code like:
  
            B* b;
            b->f();
  
       fails to compile.
  
! '-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
*************** languages themselves.  *Note Language St
*** 2977,3192 ****
  Standards, for references.)
  
   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).  The `-fconstant-cfstrings' option, if also present,
!      overrides the `-fconstant-string-class' setting and cause `@"..."'
       literals to be laid out as constant CoreFoundation strings.
  
! `-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 and Mac OS X.
!      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
       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.
  
! `-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++ and Java.  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++ 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.
  
! `-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 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.
  
! `-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-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.
  
! `-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: Language Independent Options,  Next: Warning Options,  Prev: Objective-C and Objective-C++ Dialect Options,  Up: Invoking GCC
  
--- 2963,3177 ----
  Standards, for references.)
  
   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).  The '-fconstant-cfstrings' option, if also present,
!      overrides the '-fconstant-string-class' setting and cause '@"..."'
       literals to be laid out as constant CoreFoundation strings.
  
! '-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 and Mac OS X.  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
       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.
  
! '-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++ and Java.  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++
!      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.
  
! '-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
!      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.
  
! '-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-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.
  
! '-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: Language Independent Options,  Next: Warning Options,  Prev: Objective-C and Objective-C++ Dialect Options,  Up: Invoking GCC
  
*************** File: gcc.info,  Node: Language Independ
*** 3196,3294 ****
  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.
  
! `-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.
  
! `-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
       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.
  
! `-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' means to use color only when the
!      standard error is a terminal.  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:caret=01;32:locus=01:quote=01
!      where `01;31' is bold red, `01;35' is bold magenta, `01;36' is
!      bold cyan, `01;32' is bold green and `01' is bold. 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.
  
!     `caret='
            SGR substring for caret line.
  
!     `locus='
!           SGR substring for location information, `file:line' or
!           `file:line:column' etc.
  
!     `quote='
            SGR substring for information printed within quotes.
  
! `-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.
! 
  
  
  File: gcc.info,  Node: Warning Options,  Next: Debugging Options,  Prev: Language Independent Options,  Up: Invoking GCC
--- 3181,3278 ----
  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.
  
! '-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.
  
! '-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
       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.
  
! '-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' means to use color only when the standard error
!      is a terminal.  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:caret=01;32:locus=01:quote=01
!      where '01;31' is bold red, '01;35' is bold magenta, '01;36' is bold
!      cyan, '01;32' is bold green and '01' is bold.  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.
  
!      'caret='
            SGR substring for caret line.
  
!      'locus='
!           SGR substring for location information, 'file:line' or
!           'file:line:column' etc.
  
!      'quote='
            SGR substring for information printed within quotes.
  
! '-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.
  
  
  File: gcc.info,  Node: Warning Options,  Next: Debugging Options,  Prev: Language Independent Options,  Up: Invoking GCC
*************** an error.
*** 3303,3428 ****
   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'
       Make all warnings into errors.
  
! `-Werror='
       Make 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 `-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.  For further language-specific options
! also refer to *note C++ Dialect Options:: and *note Objective-C and
! Objective-C++ Dialect Options::.
  
!  Some options, such as `-Wall' and `-Wextra', turn on other options,
! such as `-Wunused', which may turn on further options, such as
! `-Wunused-value'. 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 Pragmas::) take effect as if
! they appeared at the end of the command-line.
  
   When an unrecognized warning option is requested (e.g.,
! `-Wunknown-warning'), GCC emits a diagnostic 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.
  
! `-Wpedantic'
! `-pedantic'
!      Issue all the warnings demanded by strict ISO C and ISO C++;
!      reject all programs that use forbidden extensions, and some other
!      programs that do not follow ISO C and ISO C++.  For ISO C, follows
!      the version of the ISO 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 required version of ISO C).  However,
!      without this option, certain GNU extensions and traditional C and
!      C++ features are supported as well.  With this option, they are
       rejected.
  
!      `-Wpedantic' does not cause warning messages for use of the
!      alternate keywords whose names begin and end with `__'.  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 users try to use `-Wpedantic' to check programs for strict ISO
       C conformance.  They soon find that it does not do quite what they
       want: it finds some non-ISO practices, but not all--only those for
       which ISO C _requires_ a diagnostic, and some others for which
       diagnostics have been added.
  
!      A feature to report any failure to conform to ISO C might be
!      useful in some instances, but would require considerable
!      additional work and would be quite different from `-Wpedantic'.
!      We don't have plans to support such a feature in the near future.
  
!      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', since
       there are errors enabled by this option and not enabled by the
       latter and vice versa.
  
! `-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
--- 3287,3409 ----
   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'
       Make all warnings into errors.
  
! '-Werror='
       Make 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 '-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.  For further language-specific options also refer to
! *note C++ Dialect Options:: and *note Objective-C and Objective-C++
! Dialect Options::.
  
!  Some options, such as '-Wall' and '-Wextra', turn on other options,
! such as '-Wunused', which may turn on further options, such as
! '-Wunused-value'.  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 Pragmas::) take effect as if they
! appeared at the end of the command-line.
  
   When an unrecognized warning option is requested (e.g.,
! '-Wunknown-warning'), GCC emits a diagnostic 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.
  
! '-Wpedantic'
! '-pedantic'
!      Issue all the warnings demanded by strict ISO C and ISO C++; reject
!      all programs that use forbidden extensions, and some other programs
!      that do not follow ISO C and ISO C++.  For ISO C, follows the
!      version of the ISO 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 required version of ISO C).  However, without
!      this option, certain GNU extensions and traditional C and C++
!      features are supported as well.  With this option, they are
       rejected.
  
!      '-Wpedantic' does not cause warning messages for use of the
!      alternate keywords whose names begin and end with '__'.  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 users try to use '-Wpedantic' to check programs for strict ISO
       C conformance.  They soon find that it does not do quite what they
       want: it finds some non-ISO practices, but not all--only those for
       which ISO C _requires_ a diagnostic, and some others for which
       diagnostics have been added.
  
!      A feature to report any failure to conform to ISO C might be useful
!      in some instances, but would require considerable additional work
!      and would be quite different from '-Wpedantic'.  We don't have
!      plans to support such a feature in the near future.
  
!      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', since
       there are errors enabled by this option and not enabled by the
       latter and vice versa.
  
! '-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
*************** present.
*** 3430,3439 ****
       Dialect Options:: and *note Objective-C and Objective-C++ Dialect
       Options::.
  
!      `-Wall' turns on the following warning flags:
  
            -Waddress
!           -Warray-bounds=1 (only with `-O2')
            -Wc++11-compat  -Wc++14-compat
            -Wchar-subscripts
            -Wenum-compare (in C/ObjC; this is on by default in C++)
--- 3411,3420 ----
       Dialect Options:: and *note Objective-C and Objective-C++ Dialect
       Options::.
  
!      '-Wall' turns on the following warning flags:
  
            -Waddress
!           -Warray-bounds=1 (only with -O2)
            -Wc++11-compat  -Wc++14-compat
            -Wchar-subscripts
            -Wenum-compare (in C/ObjC; this is on by default in C++)
*************** present.
*** 3441,3447 ****
            -Wimplicit-function-declaration (C and Objective-C only)
            -Wcomment
            -Wformat
!           -Wmain (only for C/ObjC and unless `-ffreestanding')
            -Wmaybe-uninitialized
            -Wmissing-braces (only for C/ObjC)
            -Wnonnull
--- 3422,3428 ----
            -Wimplicit-function-declaration (C and Objective-C only)
            -Wcomment
            -Wformat
!           -Wmain (only for C/ObjC and unless -ffreestanding)
            -Wmaybe-uninitialized
            -Wmissing-braces (only for C/ObjC)
            -Wnonnull
*************** present.
*** 3464,3480 ****
            -Wunused-variable
            -Wvolatile-register-var
  
!      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.)
  
            -Wclobbered
--- 3445,3462 ----
            -Wunused-variable
            -Wvolatile-register-var
  
! 
!      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.)
  
            -Wclobbered
*************** present.
*** 3487,3500 ****
            -Wsign-compare
            -Wtype-limits
            -Wuninitialized
!           -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.
--- 3469,3483 ----
            -Wsign-compare
            -Wtype-limits
            -Wuninitialized
!           -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.
*************** present.
*** 3502,3735 ****
          * (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 a derived
            class's copy constructor.
  
! 
! `-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'.
  
! `-Wcomment'
!      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'.
  
! `-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-gen' 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-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'.
  
! `-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,
!      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'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'.
  
!     `-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.
  
!     `-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=2'
!           Enable `-Wformat' plus additional format checks.  Currently
!           equivalent to `-Wformat -Wformat-nonliteral -Wformat-security
            -Wformat-y2k'.
  
!     `-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-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.
  
! `-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++.
  
! `-Wimplicit-int (C and Objective-C only)'
       Warn when a declaration does not specify a type.  This warning is
!      enabled by `-Wall'.
  
! `-Wimplicit-function-declaration (C and Objective-C only)'
       Give a warning whenever a function is used before being declared.
!      In C99 mode (`-std=c99' or `-std=gnu99'), this warning is enabled
!      by default and it is made into an error by `-pedantic-errors'.
!      This warning is also enabled by `-Wall'.
  
! `-Wimplicit (C and Objective-C only)'
!      Same as `-Wimplicit-int' and `-Wimplicit-function-declaration'.
!      This warning is enabled by `-Wall'.
  
! `-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'.
  
! `-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'.
  
! `-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.  This warning is
!      enabled by `-Wall' in C.
  
            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 and Objective-C++ only)'
       Warn if a user-supplied include directory does not exist.
  
! `-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 about constructions where there may be confusion to which
!      `if' statement an `else' branch belongs.  Here is an example of
       such a case:
  
            {
--- 3485,3718 ----
          * (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 a derived
            class's copy constructor.
  
! '-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'.
  
! '-Wcomment'
!      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'.
  
! '-Wchkp'
!      Warn about an invalid memory access that is found by Pointer Bounds
!      Checker ('-fcheck-pointer-bounds').
! 
! '-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-gen' 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-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'.
  
! '-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,
!      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'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'.
  
!      '-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.
  
!      '-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=2'
!           Enable '-Wformat' plus additional format checks.  Currently
!           equivalent to '-Wformat -Wformat-nonliteral -Wformat-security
            -Wformat-y2k'.
  
!      '-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-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.
  
! '-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++.
  
! '-Wimplicit-int (C and Objective-C only)'
       Warn when a declaration does not specify a type.  This warning is
!      enabled by '-Wall'.
  
! '-Wimplicit-function-declaration (C and Objective-C only)'
       Give a warning whenever a function is used before being declared.
!      In C99 mode ('-std=c99' or '-std=gnu99'), this warning is enabled
!      by default and it is made into an error by '-pedantic-errors'.
!      This warning is also enabled by '-Wall'.
  
! '-Wimplicit (C and Objective-C only)'
!      Same as '-Wimplicit-int' and '-Wimplicit-function-declaration'.
!      This warning is enabled by '-Wall'.
  
! '-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'.
  
! '-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'.
  
! '-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.  This warning is
!      enabled by '-Wall' in C.
  
            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 and Objective-C++ only)'
       Warn if a user-supplied include directory does not exist.
  
! '-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 about constructions where there may be confusion to which
!      'if' statement an 'else' branch belongs.  Here is an example of
       such a case:
  
            {
*************** present.
*** 3740,3753 ****
                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)
--- 3723,3736 ----
                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)
*************** present.
*** 3759,3773 ****
                }
            }
  
!      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.
  
!      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.
  
--- 3742,3756 ----
                }
            }
  
!      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.
  
!      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.
  
*************** present.
*** 3777,3806 ****
       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 the sequence point rules, the order of evaluation of
!      subexpressions of an expression is not specified.  All these rules
!      describe only a partial order rather than a total order, since,
!      for example, if two functions are called within one expression
!      with no sequence point between them, the order in which the
!      functions are called is not specified.  However, the standards
!      committee have ruled that function calls do not overlap.
  
       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.
  
!      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.
--- 3760,3789 ----
       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
!      the sequence point rules, the order of evaluation of subexpressions
!      of an expression is not specified.  All these rules describe only a
!      partial order rather than a total order, since, for example, if two
!      functions are called within one expression with no sequence point
!      between them, the order in which the functions are called is not
!      specified.  However, the standards committee have ruled that
!      function calls do not overlap.
  
       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.
  
!      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.
*************** present.
*** 3809,3971 ****
       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
!      `http://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-type'
       Warn whenever a function is defined with a return type that
!      defaults to `int'.  Also warn about any `return' statement with no
!      return value in a function whose return type is not `void'
!      (falling off the end of the function body is considered returning
!      without a value), and about a `return' statement with an
!      expression in a function whose return type is `void'.
  
       For C++, a function without return type always produces a
!      diagnostic message, even when `-Wno-return-type' is specified.
!      The only exceptions are `main' and functions defined in system
!      headers.
  
!      This warning is enabled by `-Wall'.
  
! `-Wshift-count-negative'
!      Warn if shift count is negative. This warning is enabled by
       default.
  
! `-Wshift-count-overflow'
!      Warn if shift count >= width of type. This warning is enabled by
       default.
  
! `-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 outside the enumeration range also
!      provoke warnings when this option is used (even if there is a
!      `default' label).  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 outside the enumeration range also
       provoke warnings when this option is used.  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.
  
! `-Wswitch-bool'
!      Warn whenever a `switch' statement has an index of 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.
  
! `-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.
  
! `-Wtrigraphs'
!      Warn if any trigraphs are encountered that might change the
!      meaning of the program (trigraphs within comments are not warned
!      about).  This warning is enabled by `-Wall'.
  
! `-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.
  
!      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 variable or non-constant static variable is
       unused aside from its declaration.  This warning is enabled by
!      `-Wall'.
  
!      To suppress this warning use the `unused' attribute (*note
!      Variable Attributes::).
  
! `-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.
  
       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'.
  
! `-Wuninitialized'
       Warn if an automatic variable is used without first being
!      initialized or if a variable may be clobbered by a `setjmp' call.
!      In C++, warn if a non-static reference or non-static `const' member
       appears in a class without constructors.
  
!      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 or clobbered
       elements of structure, union or array variables as well as for
       variables that are uninitialized or clobbered 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 depends on the precise
       optimization options and version of GCC used.
--- 3792,3952 ----
       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
!      <http://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-type'
       Warn whenever a function is defined with a return type that
!      defaults to 'int'.  Also warn about any 'return' statement with no
!      return value in a function whose return type is not 'void' (falling
!      off the end of the function body is considered returning without a
!      value), and about a 'return' statement with an expression in a
!      function whose return type is 'void'.
  
       For C++, a function without return type always produces a
!      diagnostic message, even when '-Wno-return-type' is specified.  The
!      only exceptions are 'main' and functions defined in system headers.
  
!      This warning is enabled by '-Wall'.
  
! '-Wshift-count-negative'
!      Warn if shift count is negative.  This warning is enabled by
       default.
  
! '-Wshift-count-overflow'
!      Warn if shift count >= width of type.  This warning is enabled by
       default.
  
! '-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 outside the enumeration range also provoke
!      warnings when this option is used (even if there is a 'default'
!      label).  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 outside the enumeration range also
       provoke warnings when this option is used.  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.
  
! '-Wswitch-bool'
!      Warn whenever a 'switch' statement has an index of 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.
  
! '-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.
  
! '-Wtrigraphs'
!      Warn if any trigraphs are encountered that might change the meaning
!      of the program (trigraphs within comments are not warned about).
!      This warning is enabled by '-Wall'.
  
! '-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.
  
!      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 variable or non-constant static variable is
       unused aside from its declaration.  This warning is enabled by
!      '-Wall'.
  
!      To suppress this warning use the 'unused' attribute (*note Variable
!      Attributes::).
  
! '-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.
  
       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'.
  
! '-Wuninitialized'
       Warn if an automatic variable is used without first being
!      initialized or if a variable may be clobbered by a 'setjmp' call.
!      In C++, warn if a non-static reference or non-static 'const' member
       appears in a class without constructors.
  
!      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 or clobbered
       elements of structure, union or array variables as well as for
       variables that are uninitialized or clobbered 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 depends on the precise
       optimization options and version of GCC used.
*************** present.
*** 3975,3989 ****
       computations may be deleted by data flow analysis before the
       warnings are printed.
  
! `-Wmaybe-uninitialized'
       For an automatic variable, if there exists a path from the function
       entry to a use of the variable that is initialized, but there exist
       some other paths for which the variable is not initialized, the
!      compiler emits a warning if it cannot prove the uninitialized
!      paths are not executed at run time. These warnings are made
!      optional because GCC is not smart enough to see all the reasons
!      why the code might be correct in spite of appearing to have an
!      error.  Here is one example of how this can happen:
  
            {
              int x;
--- 3956,3970 ----
       computations may be deleted by data flow analysis before the
       warnings are printed.
  
! '-Wmaybe-uninitialized'
       For an automatic variable, if there exists a path from the function
       entry to a use of the variable that is initialized, but there exist
       some other paths for which the variable is not initialized, the
!      compiler emits a warning if it cannot prove the uninitialized paths
!      are not executed at run time.  These warnings are made optional
!      because GCC is not smart enough to see all the reasons why the code
!      might be correct in spite of appearing to have an error.  Here is
!      one example of how this can happen:
  
            {
              int x;
*************** present.
*** 3998,4077 ****
              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'.  These warnings as well
!      are possible only in optimizing compilation.
  
!      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'.
  
! `-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 the front end only.
  
       Level 2: Aggressive, quick, not too precise.  May still have many
       false positives (not as many as level 1 though), and few false
       negatives (but possibly more than level 1).  Unlike level 1, it
!      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 `-fstrict-overflow' is active.  It
       warns about cases where the compiler optimizes based on the
       assumption that signed overflow does not occur.  Note that it does
       not warn about all cases where the code might overflow: it only
--- 3979,4057 ----
              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'.  These warnings as well are
!      possible only in optimizing compilation.
  
!      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'.
  
! '-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
!      the front end only.
  
       Level 2: Aggressive, quick, not too precise.  May still have many
       false positives (not as many as level 1 though), and few false
       negatives (but possibly more than level 1).  Unlike level 1, it
!      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 '-fstrict-overflow' is active.  It
       warns about cases where the compiler optimizes based on the
       assumption that signed overflow does not occur.  Note that it does
       not warn about all cases where the code might overflow: it only
*************** present.
*** 4088,4255 ****
       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,  with `-fstrict-overflow', 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 `-fstrict-overflow' is in effect, 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.
  
! `-Wsuggest-attribute=[pure|const|noreturn|format]'
!      Warn for cases where adding an attribute may be beneficial. The
       attributes currently supported are listed below.
  
!     `-Wsuggest-attribute=pure'
!     `-Wsuggest-attribute=const'
!     `-Wsuggest-attribute=noreturn'
            Warn about functions that might be candidates for attributes
!           `pure', `const' or `noreturn'.  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-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.
  
! `-Warray-bounds'
! `-Warray-bounds=N'
!      This option is only active when `-ftree-vrp' is active (default
!      for `-O2' and above). It warns about subscripts to arrays that are
!      always out of bounds. This warning is enabled by `-Wall'.
  
!     `-Warray-bounds=1'
!           This is the 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 out of bounds access for
            arrays at the end of a struct and for arrays accessed through
!           pointers. This warning level may give a larger number of
            false positives and is deactivated by default.
  
! `-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'.
  
! `-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.
  
! `-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.
  
! `-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.
  
! `-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
--- 4068,4235 ----
       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, with '-fstrict-overflow', 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 '-fstrict-overflow' is in effect, 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.
  
! '-Wsuggest-attribute=[pure|const|noreturn|format]'
!      Warn for cases where adding an attribute may be beneficial.  The
       attributes currently supported are listed below.
  
!      '-Wsuggest-attribute=pure'
!      '-Wsuggest-attribute=const'
!      '-Wsuggest-attribute=noreturn'
! 
            Warn about functions that might be candidates for attributes
!           'pure', 'const' or 'noreturn'.  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-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.
  
! '-Warray-bounds'
! '-Warray-bounds=N'
!      This option is only active when '-ftree-vrp' is active (default for
!      '-O2' and above).  It warns about subscripts to arrays that are
!      always out of bounds.  This warning is enabled by '-Wall'.
  
!      '-Warray-bounds=1'
!           This is the 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 out of bounds access for
            arrays at the end of a struct and for arrays accessed through
!           pointers.  This warning level may give a larger number of
            false positives and is deactivated by default.
  
! '-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'.
  
! '-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.
  
! '-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.
  
! '-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.
  
! '-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
*************** present.
*** 4259,4265 ****
       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
--- 4239,4245 ----
       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
*************** present.
*** 4268,4280 ****
       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.
  
! `-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
--- 4248,4260 ----
       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.
  
! '-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
*************** present.
*** 4286,4320 ****
  
          * 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.
  
--- 4266,4299 ----
  
          * 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.
  
*************** present.
*** 4334,4498 ****
          * 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
!      and vice versa, and conversions changing the width or signedness
!      of 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 Declarations::.
  
! `-Wundef'
!      Warn if an undefined identifier is evaluated in an `#if' directive.
  
! `-Wno-endif-labels'
!      Do not warn whenever an `#else' or an `#endif' are followed by
       text.
  
! `-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.
  
! `-Wno-shadow-ivar (Objective-C only)'
       Do not warn whenever a local variable shadows an instance variable
       in an Objective-C method.
  
! `-Wlarger-than=LEN'
       Warn whenever an object of larger than LEN bytes is defined.
  
! `-Wframe-larger-than=LEN'
!      Warn if the size of a function frame is larger than LEN bytes.
!      The computation done to determine the stack frame size is
!      approximate and not conservative.  The actual requirements may be
!      somewhat greater than LEN 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.
  
! `-Wno-free-nonheap-object'
       Do not warn when attempting to free an object that was not
       allocated on the heap.
  
! `-Wstack-usage=LEN'
       Warn if the stack usage of a function might be larger than LEN
       bytes.  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
  
! `-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'.
  
! `-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'.
  
! `-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__'.
  
! `-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'.
  
! `-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.  */
--- 4313,4473 ----
          * 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
!      and vice versa, and conversions changing the width or signedness of
!      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 Declarations::.
  
! '-Wundef'
!      Warn if an undefined identifier is evaluated in an '#if' directive.
  
! '-Wno-endif-labels'
!      Do not warn whenever an '#else' or an '#endif' are followed by
       text.
  
! '-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.
  
! '-Wno-shadow-ivar (Objective-C only)'
       Do not warn whenever a local variable shadows an instance variable
       in an Objective-C method.
  
! '-Wlarger-than=LEN'
       Warn whenever an object of larger than LEN bytes is defined.
  
! '-Wframe-larger-than=LEN'
!      Warn if the size of a function frame is larger than LEN bytes.  The
!      computation done to determine the stack frame size is approximate
!      and not conservative.  The actual requirements may be somewhat
!      greater than LEN 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.
  
! '-Wno-free-nonheap-object'
       Do not warn when attempting to free an object that was not
       allocated on the heap.
  
! '-Wstack-usage=LEN'
       Warn if the stack usage of a function might be larger than LEN
       bytes.  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
  
! '-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'.
  
! '-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'.
  
! '-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__'.
  
! '-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'.
  
! '-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.  */
*************** present.
*** 4502,4613 ****
              /* 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.
  
! `-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.
  
! `-Wclobbered'
!      Warn for variables that might be changed by `longjmp' or `vfork'.
!      This warning is also enabled by `-Wextra'.
  
! `-Wconditionally-supported (C++ and Objective-C++ only)'
       Warn for conditionally-supported (C++11 [intro.defs]) constructs.
  
! `-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.
  
! `-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.
  
! `-Wzero-as-null-pointer-constant (C++ and Objective-C++ only)'
       Warn when a literal '0' is used as null pointer constant.  This can
!      be useful to facilitate the conversion to `nullptr' in C++11.
  
! `-Wdate-time'
!      Warn when macros `__TIME__', `__DATE__' or `__TIMESTAMP__' are
       encountered as they might prevent bit-wise-identical reproducible
       compilations.
  
! `-Wdelete-incomplete (C++ and Objective-C++ only)'
       Warn when deleting a pointer to incomplete type, which may cause
       undefined behavior at runtime.  This warning is enabled by default.
  
! `-Wuseless-cast (C++ and Objective-C++ only)'
       Warn when an expression is casted to its own type.
  
! `-Wempty-body'
!      Warn if an empty body occurs in an `if', `else' or `do while'
!      statement.  This warning is also enabled by `-Wextra'.
  
! `-Wenum-compare'
       Warn about a comparison between values of different enumerated
       types.  In C++ enumeral mismatches in conditional expressions are
       also diagnosed and the warning is enabled by default.  In C this
!      warning is enabled by `-Wall'.
  
! `-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.  This warning is also enabled by `-Wextra'; to get the
!      other warnings of `-Wextra' without this warning, use `-Wextra
       -Wno-sign-compare'.
  
! `-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'.
  
! `-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'.
  
! `-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;
--- 4477,4587 ----
              /* 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.
  
! '-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.
  
! '-Wclobbered'
!      Warn for variables that might be changed by 'longjmp' or 'vfork'.
!      This warning is also enabled by '-Wextra'.
  
! '-Wconditionally-supported (C++ and Objective-C++ only)'
       Warn for conditionally-supported (C++11 [intro.defs]) constructs.
  
! '-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.
  
! '-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.
  
! '-Wzero-as-null-pointer-constant (C++ and Objective-C++ only)'
       Warn when a literal '0' is used as null pointer constant.  This can
!      be useful to facilitate the conversion to 'nullptr' in C++11.
  
! '-Wdate-time'
!      Warn when macros '__TIME__', '__DATE__' or '__TIMESTAMP__' are
       encountered as they might prevent bit-wise-identical reproducible
       compilations.
  
! '-Wdelete-incomplete (C++ and Objective-C++ only)'
       Warn when deleting a pointer to incomplete type, which may cause
       undefined behavior at runtime.  This warning is enabled by default.
  
! '-Wuseless-cast (C++ and Objective-C++ only)'
       Warn when an expression is casted to its own type.
  
! '-Wempty-body'
!      Warn if an empty body occurs in an 'if', 'else' or 'do while'
!      statement.  This warning is also enabled by '-Wextra'.
  
! '-Wenum-compare'
       Warn about a comparison between values of different enumerated
       types.  In C++ enumeral mismatches in conditional expressions are
       also diagnosed and the warning is enabled by default.  In C this
!      warning is enabled by '-Wall'.
  
! '-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.  This warning is also enabled by '-Wextra'; to get the
!      other warnings of '-Wextra' without this warning, use '-Wextra
       -Wno-sign-compare'.
  
! '-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'.
  
! '-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'.
  
! '-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;
*************** present.
*** 4615,4666 ****
       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'.
  
! `-Wsizeof-pointer-memaccess'
       Warn for suspicious length parameters to certain string and memory
!      built-in functions if the argument uses `sizeof'.  This warning
!      warns e.g.  about `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));'.  This warning is enabled by
!      `-Wall'.
  
! `-Wsizeof-array-argument'
!      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-transposed-args'
!      Warn for suspicious calls to the `memset' built-in function, if the
       second argument is not zero and the third argument is zero.  This
!      warns e.g. about `memset (buf, sizeof buf, 0)' where most probably
!      `memset (buf, 0, sizeof buf)' was meant instead.  The diagnostics
       is only emitted if the third argument is literal zero.  If it is
       some expression that is folded to zero, a cast of zero to some
       type, etc., it is far less likely that the user has mistakenly
!      exchanged the arguments and no warning is emitted.  This warning
!      is enabled by `-Wall'.
  
! `-Waddress'
!      Warn about suspicious uses of memory addresses. These include using
!      the address of a function in a conditional expression, such as
!      `void func(void); if (func)', and comparisons against the memory
!      address of a string literal, such as `if (x == "abc")'.  Such uses
       typically indicate a programmer error: the address of a function
       always evaluates to true, so their use in a conditional usually
       indicate that the programmer forgot the parentheses in a function
       call; and comparisons against string literals result in unspecified
       behavior and are not portable in C, so they usually indicate that
!      the programmer intended to use `strcmp'.  This warning is enabled
!      by `-Wall'.
  
! `-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.
  
! `-Wlogical-not-parentheses'
       Warn about logical not used on the left hand side operand of a
       comparison.  This option does not warn if the RHS operand is of a
       boolean type.  Its purpose is to detect suspicious code like the
--- 4589,4640 ----
       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'.
  
! '-Wsizeof-pointer-memaccess'
       Warn for suspicious length parameters to certain string and memory
!      built-in functions if the argument uses 'sizeof'.  This warning
!      warns e.g. about '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));'.  This warning is enabled by
!      '-Wall'.
  
! '-Wsizeof-array-argument'
!      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-transposed-args'
!      Warn for suspicious calls to the 'memset' built-in function, if the
       second argument is not zero and the third argument is zero.  This
!      warns e.g. about 'memset (buf, sizeof buf, 0)' where most probably
!      'memset (buf, 0, sizeof buf)' was meant instead.  The diagnostics
       is only emitted if the third argument is literal zero.  If it is
       some expression that is folded to zero, a cast of zero to some
       type, etc., it is far less likely that the user has mistakenly
!      exchanged the arguments and no warning is emitted.  This warning is
!      enabled by '-Wall'.
  
! '-Waddress'
!      Warn about suspicious uses of memory addresses.  These include
!      using the address of a function in a conditional expression, such
!      as 'void func(void); if (func)', and comparisons against the memory
!      address of a string literal, such as 'if (x == "abc")'.  Such uses
       typically indicate a programmer error: the address of a function
       always evaluates to true, so their use in a conditional usually
       indicate that the programmer forgot the parentheses in a function
       call; and comparisons against string literals result in unspecified
       behavior and are not portable in C, so they usually indicate that
!      the programmer intended to use 'strcmp'.  This warning is enabled
!      by '-Wall'.
  
! '-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.
  
! '-Wlogical-not-parentheses'
       Warn about logical not used on the left hand side operand of a
       comparison.  This option does not warn if the RHS operand is of a
       boolean type.  Its purpose is to detect suspicious code like the
*************** present.
*** 4673,4726 ****
       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'
       Warn if in a loop with constant number of iterations the compiler
       detects undefined behavior in some statement during one or more of
       the iterations.
  
! `-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.
  
! `-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__'.
  
! `-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.
  
! `-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'.
  
! `-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
--- 4647,4700 ----
       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'
       Warn if in a loop with constant number of iterations the compiler
       detects undefined behavior in some statement during one or more of
       the iterations.
  
! '-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.
  
! '-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__'.
  
! '-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.
  
! '-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'.
  
! '-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
*************** present.
*** 4728,4749 ****
       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-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; };
            struct s x = { 3, 4 };
--- 4702,4723 ----
       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-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; };
            struct s x = { 3, 4 };
*************** present.
*** 4760,4857 ****
            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-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-deprecated'
       Do not warn about usage of deprecated features.  *Note Deprecated
       Features::.
  
! `-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.  Requires `-flto-odr-type-merging' to be enabled.
       Enabled by default.
  
! `-Wopenmp-simd'
       Warn if the vectorizer cost model overrides the OpenMP or the Cilk
!      Plus 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'.
  
! `-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 {
              int x;
--- 4734,4830 ----
            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-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-deprecated'
       Do not warn about usage of deprecated features.  *Note Deprecated
       Features::.
  
! '-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.  Requires '-flto-odr-type-merging' to be enabled.
       Enabled by default.
  
! '-Wopenmp-simd'
       Warn if the vectorizer cost model overrides the OpenMP or the Cilk
!      Plus 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'.
  
! '-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 {
              int x;
*************** present.
*** 4862,4874 ****
              struct foo f;
            };
  
! `-Wpacked-bitfield-compat'
!      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.  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
            {
--- 4835,4847 ----
              struct foo f;
            };
  
! '-Wpacked-bitfield-compat'
!      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.  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
            {
*************** present.
*** 4877,4905 ****
            } __attribute__ ((packed));
  
       This warning is enabled by default.  Use
!      `-Wno-packed-bitfield-compat' to disable this warning.
  
! `-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.
  
! `-Wnested-externs (C and Objective-C only)'
!      Warn if an `extern' declaration is encountered within a function.
  
! `-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.
  
! `-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.
--- 4850,4877 ----
            } __attribute__ ((packed));
  
       This warning is enabled by default.  Use
!      '-Wno-packed-bitfield-compat' to disable this warning.
  
! '-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.
  
! '-Wnested-externs (C and Objective-C only)'
!      Warn if an 'extern' declaration is encountered within a function.
  
! '-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.
  
! '-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.
*************** present.
*** 4909,4969 ****
       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.
  
! `-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.
  
! `-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 can't be used.
  
! `-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'.
  
! `-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'.
  
! `-Wvarargs'
       Warn upon questionable usage of the macros used to handle variable
!      arguments like `va_start'.  This is default.  To inhibit the
!      warning messages, use `-Wno-varargs'.
  
! `-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.
  
! `-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,
--- 4881,4941 ----
       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.
  
! '-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.
  
! '-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 can't be used.
  
! '-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'.
  
! '-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'.
  
! '-Wvarargs'
       Warn upon questionable usage of the macros used to handle variable
!      arguments like 'va_start'.  This is default.  To inhibit the
!      warning messages, use '-Wno-varargs'.
  
! '-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.
  
! '-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,
*************** present.
*** 4972,4988 ****
       to avoid moving from a moved-from object, this warning can be
       disabled.
  
! `-Wvla'
!      Warn if variable length array is used in the code.  `-Wno-vla'
!      prevents the `-Wpedantic' warning of the variable length array.
  
! `-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'.
  
! `-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
--- 4944,4960 ----
       to avoid moving from a moved-from object, this warning can be
       disabled.
  
! '-Wvla'
!      Warn if variable length array is used in the code.  '-Wno-vla'
!      prevents the '-Wpedantic' warning of the variable length array.
  
! '-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'.
  
! '-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
*************** present.
*** 4991,5008 ****
       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'.
  
! `-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
--- 4963,4980 ----
       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'.
  
! '-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
*************** present.
*** 5014,5034 ****
       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-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: Debugging Options,  Next: Optimize Options,  Prev: Warning Options,  Up: Invoking GCC
--- 4986,5006 ----
       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-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: Debugging Options,  Next: Optimize Options,  Prev: Warning Options,  Up: Invoking GCC
*************** File: gcc.info,  Node: Debugging Options
*** 5039,5058 ****
  GCC has various special options that are used for debugging either your
  program or GCC:
  
! `-g'
       Produce debugging information in the operating system's native
       format (stabs, COFF, XCOFF, or DWARF 2).  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
!      `-gstabs+', `-gstabs', `-gxcoff+', `-gxcoff', or `-gvms' (see
       below).
  
!      GCC allows you to use `-g' with `-O'.  The shortcuts taken by
       optimized code may occasionally produce surprising results: 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
--- 5011,5030 ----
  GCC has various special options that are used for debugging either your
  program or GCC:
  
! '-g'
       Produce debugging information in the operating system's native
       format (stabs, COFF, XCOFF, or DWARF 2).  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
!      '-gstabs+', '-gstabs', '-gxcoff+', '-gxcoff', or '-gvms' (see
       below).
  
!      GCC allows you to use '-g' with '-O'.  The shortcuts taken by
       optimized code may occasionally produce surprising results: 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
*************** program or GCC:
*** 5067,5139 ****
       The following options are useful when GCC is generated with the
       capability for more than one debugging format.
  
! `-gsplit-dwarf'
       Separate as much dwarf 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.
  
! `-ggdb'
       Produce debugging information for use by GDB.  This means to use
!      the most expressive format available (DWARF 2, stabs, or the
!      native format if neither of those are supported), including GDB
!      extensions if at all possible.
  
! `-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.
  
! `-gstabs'
       Produce debugging information in stabs format (if that is
!      supported), without GDB extensions.  This is the format used by
!      DBX on most BSD systems.  On MIPS, Alpha and System V Release 4
!      systems this option produces stabs debugging output that is not
!      understood by DBX or SDB.  On System V Release 4 systems this
!      option requires the GNU assembler.
  
! `-feliminate-unused-debug-symbols'
       Produce debugging information in stabs format (if that is
       supported), for only symbols that are actually used.
  
! `-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.
  
! `-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 sections 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.
  
! `-gstabs+'
       Produce debugging information in stabs format (if that is
       supported), using GNU extensions understood only by the GNU
       debugger (GDB).  The use of these extensions is likely to make
       other debuggers crash or refuse to read the program.
  
! `-gcoff'
       Produce debugging information in COFF format (if that is
       supported).  This is the format used by SDB on most System V
       systems prior to System V Release 4.
  
! `-gxcoff'
       Produce debugging information in XCOFF format (if that is
       supported).  This is the format used by the DBX debugger on IBM
       RS/6000 systems.
  
! `-gxcoff+'
       Produce debugging information in XCOFF format (if that is
       supported), using GNU extensions understood only by the GNU
       debugger (GDB).  The use of these extensions is likely to make
--- 5039,5111 ----
       The following options are useful when GCC is generated with the
       capability for more than one debugging format.
  
! '-gsplit-dwarf'
       Separate as much dwarf 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.
  
! '-ggdb'
       Produce debugging information for use by GDB.  This means to use
!      the most expressive format available (DWARF 2, stabs, or the native
!      format if neither of those are supported), including GDB extensions
!      if at all possible.
  
! '-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.
  
! '-gstabs'
       Produce debugging information in stabs format (if that is
!      supported), without GDB extensions.  This is the format used by DBX
!      on most BSD systems.  On MIPS, Alpha and System V Release 4 systems
!      this option produces stabs debugging output that is not understood
!      by DBX or SDB.  On System V Release 4 systems this option requires
!      the GNU assembler.
  
! '-feliminate-unused-debug-symbols'
       Produce debugging information in stabs format (if that is
       supported), for only symbols that are actually used.
  
! '-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.
  
! '-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 sections 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.
  
! '-gstabs+'
       Produce debugging information in stabs format (if that is
       supported), using GNU extensions understood only by the GNU
       debugger (GDB).  The use of these extensions is likely to make
       other debuggers crash or refuse to read the program.
  
! '-gcoff'
       Produce debugging information in COFF format (if that is
       supported).  This is the format used by SDB on most System V
       systems prior to System V Release 4.
  
! '-gxcoff'
       Produce debugging information in XCOFF format (if that is
       supported).  This is the format used by the DBX debugger on IBM
       RS/6000 systems.
  
! '-gxcoff+'
       Produce debugging information in XCOFF format (if that is
       supported), using GNU extensions understood only by the GNU
       debugger (GDB).  The use of these extensions is likely to make
*************** program or GCC:
*** 5141,5147 ****
       assemblers other than the GNU assembler (GAS) to fail with an
       error.
  
! `-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 4.  DWARF Version 5 is only
--- 5113,5119 ----
       assemblers other than the GNU assembler (GAS) to fail with an
       error.
  
! '-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 4.  DWARF Version 5 is only
*************** program or GCC:
*** 5150,5294 ****
       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.
  
! `-grecord-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.  See also
!      `-frecord-gcc-switches' for another way of storing compiler
!      options into the object file.  This is the default.
  
! `-gno-record-gcc-switches'
       Disallow appending command-line options to the DW_AT_producer
       attribute in DWARF debugging information.
  
! `-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'.
  
! `-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), `zlib' (use zlib
!      compression in ELF gABI format), or `zlib-gnu' (use zlib
       compression in traditional GNU 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.
  
! `-gvms'
       Produce debugging information in Alpha/VMS debug format (if that is
       supported).  This is the format used by DEBUG on Alpha/VMS systems.
  
! `-gLEVEL'
! `-ggdbLEVEL'
! `-gstabsLEVEL'
! `-gcoffLEVEL'
! `-gxcoffLEVEL'
! `-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
!      includes descriptions of functions and external variables, and
!      line number tables, but no information about local variables.
  
       Level 3 includes extra information, such as all the macro
       definitions present in the program.  Some debuggers support macro
!      expansion when you use `-g3'.
  
!      `-gdwarf-2' does not accept a concatenated debug level, because
!      GCC used to support an option `-gdwarf' that meant to generate
!      debug information in version 1 of the DWARF format (which is very
       different from version 2), and it would have been too confusing.
       That debug format is long obsolete, but the option cannot be
!      changed now.  Instead use an additional `-gLEVEL' option to change
       the debug level for DWARF.
  
! `-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'.
  
! `-fsanitize=address'
       Enable AddressSanitizer, a fast memory error detector.  Memory
       access instructions are instrumented to detect out-of-bounds and
       use-after-free bugs.  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 instrumended
!      program.  See
!      `https://github.com/google/sanitizers/wiki/AddressSanitizerFlags#run-time-flags'
       for a list of supported options.
  
! `-fsanitize=kernel-address'
       Enable AddressSanitizer for Linux kernel.  See
!      `https://github.com/google/kasan/wiki' 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.
  
! `-fsanitize=leak'
       Enable LeakSanitizer, a memory leak detector.  This option only
       matters for linking of executables and if neither
!      `-fsanitize=address' nor `-fsanitize=thread' is used.  In that
!      case 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.
  
! `-fsanitize=undefined'
       Enable UndefinedBehaviorSanitizer, a fast undefined behavior
       detector.  Various computations are instrumented to detect
       undefined behavior at runtime.  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.
  
!     `-fsanitize=integer-divide-by-zero'
!           Detect integer division by zero as well as `INT_MIN / -1'
            division.
  
!     `-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
--- 5122,5266 ----
       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.
  
! '-grecord-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.  See also
!      '-frecord-gcc-switches' for another way of storing compiler options
!      into the object file.  This is the default.
  
! '-gno-record-gcc-switches'
       Disallow appending command-line options to the DW_AT_producer
       attribute in DWARF debugging information.
  
! '-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'.
  
! '-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), 'zlib' (use zlib
!      compression in ELF gABI format), or 'zlib-gnu' (use zlib
       compression in traditional GNU 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.
  
! '-gvms'
       Produce debugging information in Alpha/VMS debug format (if that is
       supported).  This is the format used by DEBUG on Alpha/VMS systems.
  
! '-gLEVEL'
! '-ggdbLEVEL'
! '-gstabsLEVEL'
! '-gcoffLEVEL'
! '-gxcoffLEVEL'
! '-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
!      includes descriptions of functions and external variables, and line
!      number tables, but no information about local variables.
  
       Level 3 includes extra information, such as all the macro
       definitions present in the program.  Some debuggers support macro
!      expansion when you use '-g3'.
  
!      '-gdwarf-2' does not accept a concatenated debug level, because GCC
!      used to support an option '-gdwarf' that meant to generate debug
!      information in version 1 of the DWARF format (which is very
       different from version 2), and it would have been too confusing.
       That debug format is long obsolete, but the option cannot be
!      changed now.  Instead use an additional '-gLEVEL' option to change
       the debug level for DWARF.
  
! '-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'.
  
! '-fsanitize=address'
       Enable AddressSanitizer, a fast memory error detector.  Memory
       access instructions are instrumented to detect out-of-bounds and
       use-after-free bugs.  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 instrumended program.
!      See
!      <https://github.com/google/sanitizers/wiki/AddressSanitizerFlags#run-time-flags>
       for a list of supported options.
  
! '-fsanitize=kernel-address'
       Enable AddressSanitizer for Linux kernel.  See
!      <https://github.com/google/kasan/wiki> 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.
  
! '-fsanitize=leak'
       Enable LeakSanitizer, a memory leak detector.  This option only
       matters for linking of executables and if neither
!      '-fsanitize=address' nor '-fsanitize=thread' is used.  In that case
!      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.
  
! '-fsanitize=undefined'
       Enable UndefinedBehaviorSanitizer, a fast undefined behavior
       detector.  Various computations are instrumented to detect
       undefined behavior at runtime.  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.
  
!      '-fsanitize=integer-divide-by-zero'
!           Detect integer division by zero as well as 'INT_MIN / -1'
            division.
  
!      '-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 or GCC:
*** 5296,5405 ****
            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.  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.
  
!     `-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_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.
  
! 
!      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-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' and `-fsanitize=kernel-address'.
       For these sanitizers error recovery is turned on by default.
!      `-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.
--- 5268,5382 ----
            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.  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.
  
!      '-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_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.
  
!      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-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' and '-fsanitize=kernel-address'.
       For these sanitizers error recovery is turned on by default.
!      '-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.
*************** program or GCC:
*** 5407,5434 ****
       Syntax without explicit OPTS parameter is deprecated.  It is
       equivalent to
            -fsanitize-recover=undefined,float-cast-overflow,float-divide-by-zero
!      Similarly `-fno-sanitize-recover' is equivalent to
            -fno-sanitize-recover=undefined,float-cast-overflow,float-divide-by-zero
  
! `-fsanitize-undefined-trap-on-error'
!      The `-fsanitize-undefined-trap-on-error' option instructs the
!      compiler to report undefined behavior using `__builtin_trap'
!      rather than a `libubsan' library routine.  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.
  
! `-fcheck-pointer-bounds'
       Enable Pointer Bounds Checker instrumentation.  Each memory
       reference is instrumented with checks of the pointer used for
       memory access against bounds associated with that pointer.
  
       Currently there is only an implementation for Intel MPX available,
!      thus x86 target and `-mmpx' are required to enable this feature.
       MPX-based instrumentation requires a runtime library to enable MPX
       in hardware and handle bounds violation signals.  By default when
!      `-fcheck-pointer-bounds' and `-mmpx' options are used to link a
!      program, the GCC driver links against the `libmpx' runtime library
!      and `libmpxwrappers' library.  It also passes '-z bndplt' to a
       linker in case it supports this option (which is checked on libmpx
       configuration).  Note that old versions of linker may ignore
       option.  Gold linker doesn't support '-z bndplt' option.  With no
--- 5384,5411 ----
       Syntax without explicit OPTS parameter is deprecated.  It is
       equivalent to
            -fsanitize-recover=undefined,float-cast-overflow,float-divide-by-zero
!      Similarly '-fno-sanitize-recover' is equivalent to
            -fno-sanitize-recover=undefined,float-cast-overflow,float-divide-by-zero
  
! '-fsanitize-undefined-trap-on-error'
!      The '-fsanitize-undefined-trap-on-error' option instructs the
!      compiler to report undefined behavior using '__builtin_trap' rather
!      than a 'libubsan' library routine.  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.
  
! '-fcheck-pointer-bounds'
       Enable Pointer Bounds Checker instrumentation.  Each memory
       reference is instrumented with checks of the pointer used for
       memory access against bounds associated with that pointer.
  
       Currently there is only an implementation for Intel MPX available,
!      thus x86 target and '-mmpx' are required to enable this feature.
       MPX-based instrumentation requires a runtime library to enable MPX
       in hardware and handle bounds violation signals.  By default when
!      '-fcheck-pointer-bounds' and '-mmpx' options are used to link a
!      program, the GCC driver links against the 'libmpx' runtime library
!      and 'libmpxwrappers' library.  It also passes '-z bndplt' to a
       linker in case it supports this option (which is checked on libmpx
       configuration).  Note that old versions of linker may ignore
       option.  Gold linker doesn't support '-z bndplt' option.  With no
*************** program or GCC:
*** 5436,5604 ****
       passed bounds reducing overall protection level.  It's highly
       recommended to use linker with '-z bndplt' support.  In case such
       linker is not available it is adviced to always use
!      `-static-libmpxwrappers' for better protection level or use
!      `-static' to completely avoid external calls to dynamic libraries.
!      MPX-based instrumentation may be used for debugging and also may
!      be included in production code to increase program security.
       Depending on usage, you may have different requirements for the
!      runtime library.  The current version of the MPX runtime library
!      is more oriented for use as a debugging tool.  MPX runtime library
!      usage implies `-lpthread'.  See also `-static-libmpx'.  The
!      runtime library  behavior can be influenced using various
!      `CHKP_RT_*' environment variables.  See
!      `https://gcc.gnu.org/wiki/Intel%20MPX%20support%20in%20the%20GCC%20compiler'
       for more details.
  
!      Generated instrumentation may be controlled by various `-fchkp-*'
!      options and by the `bnd_variable_size' structure field attribute
!      (*note Type Attributes::) and `bnd_legacy', and `bnd_instrument'
       function attributes (*note Function Attributes::).  GCC also
!      provides a number of built-in functions for controlling the
!      Pointer Bounds Checker.  *Note Pointer Bounds Checker builtins::,
!      for more information.
  
! `-fchkp-check-incomplete-type'
       Generate pointer bounds checks for variables with incomplete type.
       Enabled by default.
  
! `-fchkp-narrow-bounds'
       Controls bounds used by Pointer Bounds Checker for pointers to
!      object fields.  If narrowing is enabled then field bounds are
!      used.  Otherwise object bounds are used.  See also
!      `-fchkp-narrow-to-innermost-array' and
!      `-fchkp-first-field-has-own-bounds'.  Enabled by default.
  
! `-fchkp-first-field-has-own-bounds'
       Forces Pointer Bounds Checker to use narrowed bounds for the
       address of the first field in the structure.  By default a pointer
       to the first field has the same bounds as a pointer to the whole
       structure.
  
! `-fchkp-narrow-to-innermost-array'
!      Forces Pointer Bounds Checker to use bounds of the innermost
!      arrays in case of nested static array access.  By default this
!      option is disabled and bounds of the outermost array are used.
  
! `-fchkp-optimize'
       Enables Pointer Bounds Checker optimizations.  Enabled by default
!      at optimization levels `-O', `-O2', `-O3'.
  
! `-fchkp-use-fast-string-functions'
!      Enables use of `*_nobnd' versions of string functions (not copying
       bounds) by Pointer Bounds Checker.  Disabled by default.
  
! `-fchkp-use-nochk-string-functions'
!      Enables use of `*_nochk' versions of string functions (not
!      checking bounds) by Pointer Bounds Checker.  Disabled by default.
  
! `-fchkp-use-static-bounds'
       Allow Pointer Bounds Checker to generate static bounds holding
       bounds of static variables.  Enabled by default.
  
! `-fchkp-use-static-const-bounds'
       Use statically-initialized bounds for constant bounds instead of
       generating them each time they are required.  By default enabled
!      when `-fchkp-use-static-bounds' is enabled.
  
! `-fchkp-treat-zero-dynamic-size-as-infinite'
       With this option, objects with incomplete type whose
       dynamically-obtained size is zero are treated as having infinite
!      size instead by Pointer Bounds Checker.  This option may be
!      helpful if a program is linked with a library missing size
!      information for some symbols.  Disabled by default.
  
! `-fchkp-check-read'
       Instructs Pointer Bounds Checker to generate checks for all read
       accesses to memory.  Enabled by default.
  
! `-fchkp-check-write'
       Instructs Pointer Bounds Checker to generate checks for all write
       accesses to memory.  Enabled by default.
  
! `-fchkp-store-bounds'
       Instructs Pointer Bounds Checker to generate bounds stores for
       pointer writes.  Enabled by default.
  
! `-fchkp-instrument-calls'
       Instructs Pointer Bounds Checker to pass pointer bounds to calls.
       Enabled by default.
  
! `-fchkp-instrument-marked-only'
       Instructs Pointer Bounds Checker to instrument only functions
!      marked with the `bnd_instrument' attribute (*note Function
       Attributes::).  Disabled by default.
  
! `-fchkp-use-wrappers'
       Allows Pointer Bounds Checker to replace calls to built-in
       functions with calls to wrapper functions.  When
!      `-fchkp-use-wrappers' is used to link a program, the GCC driver
!      automatically links against `libmpxwrappers'.  See also
!      `-static-libmpxwrappers'.  Enabled by default.
  
! `-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 compilation
       output file name.
  
! `-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
       side-effect compiler outputs to files or to the standard output.
       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.
  
! `-feliminate-dwarf2-dups'
       Compress DWARF 2 debugging information by eliminating duplicated
       information about each symbol.  This option only makes sense when
!      generating DWARF 2 debugging information with `-gdwarf-2'.
  
! `-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 2.
  
! `-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
--- 5413,5581 ----
       passed bounds reducing overall protection level.  It's highly
       recommended to use linker with '-z bndplt' support.  In case such
       linker is not available it is adviced to always use
!      '-static-libmpxwrappers' for better protection level or use
!      '-static' to completely avoid external calls to dynamic libraries.
!      MPX-based instrumentation may be used for debugging and also may be
!      included in production code to increase program security.
       Depending on usage, you may have different requirements for the
!      runtime library.  The current version of the MPX runtime library is
!      more oriented for use as a debugging tool.  MPX runtime library
!      usage implies '-lpthread'.  See also '-static-libmpx'.  The runtime
!      library behavior can be influenced using various 'CHKP_RT_*'
!      environment variables.  See
!      <https://gcc.gnu.org/wiki/Intel%20MPX%20support%20in%20the%20GCC%20compiler>
       for more details.
  
!      Generated instrumentation may be controlled by various '-fchkp-*'
!      options and by the 'bnd_variable_size' structure field attribute
!      (*note Type Attributes::) and 'bnd_legacy', and 'bnd_instrument'
       function attributes (*note Function Attributes::).  GCC also
!      provides a number of built-in functions for controlling the Pointer
!      Bounds Checker.  *Note Pointer Bounds Checker builtins::, for more
!      information.
  
! '-fchkp-check-incomplete-type'
       Generate pointer bounds checks for variables with incomplete type.
       Enabled by default.
  
! '-fchkp-narrow-bounds'
       Controls bounds used by Pointer Bounds Checker for pointers to
!      object fields.  If narrowing is enabled then field bounds are used.
!      Otherwise object bounds are used.  See also
!      '-fchkp-narrow-to-innermost-array' and
!      '-fchkp-first-field-has-own-bounds'.  Enabled by default.
  
! '-fchkp-first-field-has-own-bounds'
       Forces Pointer Bounds Checker to use narrowed bounds for the
       address of the first field in the structure.  By default a pointer
       to the first field has the same bounds as a pointer to the whole
       structure.
  
! '-fchkp-narrow-to-innermost-array'
!      Forces Pointer Bounds Checker to use bounds of the innermost arrays
!      in case of nested static array access.  By default this option is
!      disabled and bounds of the outermost array are used.
  
! '-fchkp-optimize'
       Enables Pointer Bounds Checker optimizations.  Enabled by default
!      at optimization levels '-O', '-O2', '-O3'.
  
! '-fchkp-use-fast-string-functions'
!      Enables use of '*_nobnd' versions of string functions (not copying
       bounds) by Pointer Bounds Checker.  Disabled by default.
  
! '-fchkp-use-nochk-string-functions'
!      Enables use of '*_nochk' versions of string functions (not checking
!      bounds) by Pointer Bounds Checker.  Disabled by default.
  
! '-fchkp-use-static-bounds'
       Allow Pointer Bounds Checker to generate static bounds holding
       bounds of static variables.  Enabled by default.
  
! '-fchkp-use-static-const-bounds'
       Use statically-initialized bounds for constant bounds instead of
       generating them each time they are required.  By default enabled
!      when '-fchkp-use-static-bounds' is enabled.
  
! '-fchkp-treat-zero-dynamic-size-as-infinite'
       With this option, objects with incomplete type whose
       dynamically-obtained size is zero are treated as having infinite
!      size instead by Pointer Bounds Checker.  This option may be helpful
!      if a program is linked with a library missing size information for
!      some symbols.  Disabled by default.
  
! '-fchkp-check-read'
       Instructs Pointer Bounds Checker to generate checks for all read
       accesses to memory.  Enabled by default.
  
! '-fchkp-check-write'
       Instructs Pointer Bounds Checker to generate checks for all write
       accesses to memory.  Enabled by default.
  
! '-fchkp-store-bounds'
       Instructs Pointer Bounds Checker to generate bounds stores for
       pointer writes.  Enabled by default.
  
! '-fchkp-instrument-calls'
       Instructs Pointer Bounds Checker to pass pointer bounds to calls.
       Enabled by default.
  
! '-fchkp-instrument-marked-only'
       Instructs Pointer Bounds Checker to instrument only functions
!      marked with the 'bnd_instrument' attribute (*note Function
       Attributes::).  Disabled by default.
  
! '-fchkp-use-wrappers'
       Allows Pointer Bounds Checker to replace calls to built-in
       functions with calls to wrapper functions.  When
!      '-fchkp-use-wrappers' is used to link a program, the GCC driver
!      automatically links against 'libmpxwrappers'.  See also
!      '-static-libmpxwrappers'.  Enabled by default.
  
! '-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 compilation
       output file name.
  
! '-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
       side-effect compiler outputs to files or to the standard output.
       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.
  
! '-feliminate-dwarf2-dups'
       Compress DWARF 2 debugging information by eliminating duplicated
       information about each symbol.  This option only makes sense when
!      generating DWARF 2 debugging information with '-gdwarf-2'.
  
! '-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 2.
  
! '-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
*************** program or GCC:
*** 5606,5870 ****
  
       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 2.
  
! `-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 2.
  
! `-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 in directory `OLD', record debugging
!      information describing them as in `NEW' instead.
  
! `-fno-dwarf2-cfi-asm'
!      Emit DWARF 2 unwind info as compiler generated `.eh_frame' section
!      instead of using GAS `.cfi_*' directives.
  
! `-p'
       Generate extra code to write profile information suitable for the
!      analysis program `prof'.  You must use this option when compiling
       the source files you want data about, and you must also use it when
       linking.
  
! `-pg'
       Generate extra code to write profile information suitable for the
!      analysis program `gprof'.  You must use this option when compiling
       the source files you want data about, and you must also use it when
       linking.
  
! `-Q'
       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 about the time consumed
!      by each pass when it finishes.
  
! `-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.
  
! `-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.
  
! `-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.  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 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.
  
!         * 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.  Also `fork' calls are
!           detected and correctly handled (double counting will not
!           happen).
  
          * 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
!      that these arcs are executed.  When an arc is the only exit or
!      only entrance to a block, the instrumentation code can be added to
!      the block; otherwise, a new basic block must be created to hold
!      the instrumentation code.
  
! `-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.
  
! `-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 upper bound.  COUNTER-VALUE-LIST is
       a comma-separated list of NAME:VALUE pairs which sets the upper
!      bound of each debug counter NAME to VALUE.  All debug counters
!      have the initial upper bound of `UINT_MAX'; thus `dbg_cnt' returns
!      true always unless the upper bound is set by this option.  For
!      example, with `-fdbg-cnt=dce:10,tail_call:0', `dbg_cnt(dce)'
!      returns true only for first 10 invocations.
  
- `-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 from 1.  RANGE-LIST 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 UID 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.
  
  
--- 5583,5843 ----
  
       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 2.
  
! '-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 2.
  
! '-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 in directory 'OLD', record debugging
!      information describing them as in 'NEW' instead.
  
! '-fno-dwarf2-cfi-asm'
!      Emit DWARF 2 unwind info as compiler generated '.eh_frame' section
!      instead of using GAS '.cfi_*' directives.
  
! '-p'
       Generate extra code to write profile information suitable for the
!      analysis program 'prof'.  You must use this option when compiling
       the source files you want data about, and you must also use it when
       linking.
  
! '-pg'
       Generate extra code to write profile information suitable for the
!      analysis program 'gprof'.  You must use this option when compiling
       the source files you want data about, and you must also use it when
       linking.
  
! '-Q'
       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 about the time consumed by
!      each pass when it finishes.
  
! '-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.
  
! '-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.
  
! '-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.  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
!      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.
  
!         * 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.  Also 'fork' calls are detected and
!           correctly handled (double counting will not happen).
  
          * 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
!      that these arcs are executed.  When an arc is the only exit or only
!      entrance to a block, the instrumentation code can be added to the
!      block; otherwise, a new basic block must be created to hold the
!      instrumentation code.
  
! '-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.
  
! '-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 upper bound.  COUNTER-VALUE-LIST is
       a comma-separated list of NAME:VALUE pairs which sets the upper
!      bound of each debug counter NAME to VALUE.  All debug counters have
!      the initial upper bound of 'UINT_MAX'; thus 'dbg_cnt' returns true
!      always unless the upper bound is set by this option.  For example,
!      with '-fdbg-cnt=dce:10,tail_call:0', 'dbg_cnt(dce)' returns true
!      only for first 10 invocations.
! 
! '-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
!           from 1.  RANGE-LIST 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 UID
!           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.
  
  
*************** program or GCC:
*** 5883,6217 ****
            # enable tree full unroll
               -fenable-tree-unroll
  
! `-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.  The file names for most of the dumps are made by
       appending a pass number and a word to the DUMPNAME, and the files
!      are created in the directory of the output file. In case of
!      `=FILENAME' option, the dump is output on the given file instead
!      of the pass numbered dump files. Note that the pass number is
       computed statically as passes get registered into the pass manager.
!      Thus the numbering is not related to the dynamic order of
!      execution of passes.  In particular, a pass installed by a plugin
!      could have a number over 200 even if it executed quite early.
!      DUMPNAME 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. These switches may have different
!      effects when `-E' is used for preprocessing.
  
!      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-sibling'
            Dump after sibling call optimizations.
  
!     `-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-unshare'
            Dump after all rtl has been unshared.
  
!     `-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 of each
            instruction is 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-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 temporary file if ICE in
       C/C++ compiler occured.
  
! `-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-translation-unit (C++ only)'
! `-fdump-translation-unit-OPTIONS (C++ only)'
       Dump a representation of the tree structure for the entire
       translation unit to a file.  The file name is made by appending
!      `.tu' to the source file name, and the file is created in the same
!      directory as the output file.  If the `-OPTIONS' form is used,
       OPTIONS controls the details of the dump as described for the
!      `-fdump-tree' options.
  
! `-fdump-class-hierarchy (C++ only)'
! `-fdump-class-hierarchy-OPTIONS (C++ only)'
       Dump a representation of each class's hierarchy and virtual
       function table layout to a file.  The file name is made by
!      appending `.class' to the source file name, and the file is
!      created in the same directory as the output file.  If the
!      `-OPTIONS' form is used, OPTIONS controls the details of the dump
!      as described for the `-fdump-tree' options.
  
! `-fdump-ipa-SWITCH'
       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.
  
! 
! `-fdump-passes'
       Dump 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-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.  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. In
!      case of `=FILENAME' option, the dump is output on the given file
!      instead of the auto named dump files.  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
--- 5856,6188 ----
            # enable tree full unroll
               -fenable-tree-unroll
  
! 
! '-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.  The file names for most of the dumps are made by
       appending a pass number and a word to the DUMPNAME, and the files
!      are created in the directory of the output file.  In case of
!      '=FILENAME' option, the dump is output on the given file instead of
!      the pass numbered dump files.  Note that the pass number is
       computed statically as passes get registered into the pass manager.
!      Thus the numbering is not related to the dynamic order of execution
!      of passes.  In particular, a pass installed by a plugin could have
!      a number over 200 even if it executed quite early.  DUMPNAME 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.  These switches may have different effects when '-E'
!      is used for preprocessing.
  
!      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-sibling'
            Dump after sibling call optimizations.
  
!      '-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-unshare'
            Dump after all rtl has been unshared.
  
!      '-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 of each
            instruction is 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-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 temporary file if ICE in
       C/C++ compiler occured.
  
! '-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-translation-unit (C++ only)'
! '-fdump-translation-unit-OPTIONS (C++ only)'
       Dump a representation of the tree structure for the entire
       translation unit to a file.  The file name is made by appending
!      '.tu' to the source file name, and the file is created in the same
!      directory as the output file.  If the '-OPTIONS' form is used,
       OPTIONS controls the details of the dump as described for the
!      '-fdump-tree' options.
  
! '-fdump-class-hierarchy (C++ only)'
! '-fdump-class-hierarchy-OPTIONS (C++ only)'
       Dump a representation of each class's hierarchy and virtual
       function table layout to a file.  The file name is made by
!      appending '.class' to the source file name, and the file is created
!      in the same directory as the output file.  If the '-OPTIONS' form
!      is used, OPTIONS controls the details of the dump as described for
!      the '-fdump-tree' options.
  
! '-fdump-ipa-SWITCH'
       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.
  
! '-fdump-passes'
       Dump 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-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.  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.  In
!      case of '=FILENAME' option, the dump is output on the given file
!      instead of the auto named dump files.  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
*************** program or GCC:
*** 6222,6490 ****
  
            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).
! 
!     `=FILENAME'
            Instead of an auto named dump file, output into the given file
!           name. The file names `stdout' and `stderr' are treated
            specially and are considered already open standard streams.
            For example,
  
                 gcc -O2 -ftree-vectorize -fdump-tree-vect-blocks=foo.dump
                      -fdump-tree-pre=stderr file.c
  
!           outputs vectorizer dump into `foo.dump', while the PRE dump is
!           output on to `stderr'. If two conflicting dump filenames are
            given for the same pass, then the latter option overrides the
            earlier one.
  
!     `all'
!           Turn on all options, except `raw', `slim', `verbose' and
!           `lineno'.
  
!     `optall'
!           Turn on all optimization options, i.e., `optimized',
!           `missed', and `note'.
  
       The following tree dumps are possible:
-     `original'
-           Dump before any tree based optimization, to `FILE.original'.
  
!     `optimized'
!           Dump after all tree based optimization, to `FILE.optimized'.
  
!     `gimple'
!           Dump each function before and after the gimplification pass
!           to a file.  The file name is made by appending `.gimple' to
!           the source file name.
  
!     `cfg'
            Dump the control flow graph of each function to a file.  The
!           file name is made by appending `.cfg' to the source file name.
  
!     `ch'
            Dump each function after copying loop headers.  The file name
!           is made by appending `.ch' to the source file name.
  
!     `ssa'
!           Dump SSA related information to a file.  The file name is
!           made by appending `.ssa' to the source file name.
  
!     `alias'
!           Dump aliasing information for each function.  The file name
!           is made by appending `.alias' to the source file name.
  
!     `ccp'
            Dump each function after CCP.  The file name is made by
!           appending `.ccp' to the source file name.
  
!     `storeccp'
            Dump each function after STORE-CCP.  The file name is made by
!           appending `.storeccp' to the source file name.
  
!     `pre'
            Dump trees after partial redundancy elimination.  The file
!           name is made by appending `.pre' to the source file name.
  
!     `fre'
            Dump trees after full redundancy elimination.  The file name
!           is made by appending `.fre' to the source file name.
  
!     `copyprop'
            Dump trees after copy propagation.  The file name is made by
!           appending `.copyprop' to the source file name.
  
!     `store_copyprop'
            Dump trees after store copy-propagation.  The file name is
!           made by appending `.store_copyprop' to the source file name.
  
!     `dce'
!           Dump each function after dead code elimination.  The file
!           name is made by appending `.dce' to the source file name.
  
!     `sra'
            Dump each function after performing scalar replacement of
!           aggregates.  The file name is made by appending `.sra' to the
            source file name.
  
!     `sink'
            Dump each function after performing code sinking.  The file
!           name is made by appending `.sink' to the source file name.
  
!     `dom'
            Dump each function after applying dominator tree
!           optimizations.  The file name is made by appending `.dom' to
            the source file name.
  
!     `dse'
!           Dump each function after applying dead store elimination.
!           The file name is made by appending `.dse' to the source file
!           name.
  
!     `phiopt'
            Dump each function after optimizing PHI nodes into
            straightline code.  The file name is made by appending
!           `.phiopt' to the source file name.
  
!     `forwprop'
            Dump each function after forward propagating single use
!           variables.  The file name is made by appending `.forwprop' to
            the source file name.
  
!     `copyrename'
            Dump each function after applying the copy rename
            optimization.  The file name is made by appending
!           `.copyrename' to the source file name.
  
!     `nrv'
            Dump each function after applying the named return value
            optimization on generic trees.  The file name is made by
!           appending `.nrv' to the source file name.
  
!     `vect'
!           Dump each function after applying vectorization of loops.
!           The file name is made by appending `.vect' to the source file
            name.
  
!     `slp'
            Dump each function after applying vectorization of basic
!           blocks.  The file name is made by appending `.slp' to the
            source file name.
  
!     `vrp'
!           Dump each function after Value Range Propagation (VRP).  The
!           file name is made by appending `.vrp' to the source file name.
  
!     `all'
!           Enable all the available tree dumps with the flags provided
!           in this option.
  
! `-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 two groups: options describing the
       verbosity of the dump, and options describing which optimizations
!      should be included. The options from both the groups 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.
  
       The following options control the dump verbosity:
  
!     `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'.
  
       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.
! 
!     `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 all info about successful optimizations from all the
       passes.
  
!      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
  
--- 6193,6438 ----
  
            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).
!      '=FILENAME'
            Instead of an auto named dump file, output into the given file
!           name.  The file names 'stdout' and 'stderr' are treated
            specially and are considered already open standard streams.
            For example,
  
                 gcc -O2 -ftree-vectorize -fdump-tree-vect-blocks=foo.dump
                      -fdump-tree-pre=stderr file.c
  
!           outputs vectorizer dump into 'foo.dump', while the PRE dump is
!           output on to 'stderr'.  If two conflicting dump filenames are
            given for the same pass, then the latter option overrides the
            earlier one.
  
!      'all'
!           Turn on all options, except 'raw', 'slim', 'verbose' and
!           'lineno'.
  
!      'optall'
!           Turn on all optimization options, i.e., 'optimized', 'missed',
!           and 'note'.
  
       The following tree dumps are possible:
  
!      'original'
!           Dump before any tree based optimization, to 'FILE.original'.
  
!      'optimized'
!           Dump after all tree based optimization, to 'FILE.optimized'.
  
!      'gimple'
!           Dump each function before and after the gimplification pass to
!           a file.  The file name is made by appending '.gimple' to the
!           source file name.
! 
!      'cfg'
            Dump the control flow graph of each function to a file.  The
!           file name is made by appending '.cfg' to the source file name.
  
!      'ch'
            Dump each function after copying loop headers.  The file name
!           is made by appending '.ch' to the source file name.
  
!      'ssa'
!           Dump SSA related information to a file.  The file name is made
!           by appending '.ssa' to the source file name.
  
!      'alias'
!           Dump aliasing information for each function.  The file name is
!           made by appending '.alias' to the source file name.
  
!      'ccp'
            Dump each function after CCP.  The file name is made by
!           appending '.ccp' to the source file name.
  
!      'storeccp'
            Dump each function after STORE-CCP.  The file name is made by
!           appending '.storeccp' to the source file name.
  
!      'pre'
            Dump trees after partial redundancy elimination.  The file
!           name is made by appending '.pre' to the source file name.
  
!      'fre'
            Dump trees after full redundancy elimination.  The file name
!           is made by appending '.fre' to the source file name.
  
!      'copyprop'
            Dump trees after copy propagation.  The file name is made by
!           appending '.copyprop' to the source file name.
  
!      'store_copyprop'
            Dump trees after store copy-propagation.  The file name is
!           made by appending '.store_copyprop' to the source file name.
  
!      'dce'
!           Dump each function after dead code elimination.  The file name
!           is made by appending '.dce' to the source file name.
  
!      'sra'
            Dump each function after performing scalar replacement of
!           aggregates.  The file name is made by appending '.sra' to the
            source file name.
  
!      'sink'
            Dump each function after performing code sinking.  The file
!           name is made by appending '.sink' to the source file name.
  
!      'dom'
            Dump each function after applying dominator tree
!           optimizations.  The file name is made by appending '.dom' to
            the source file name.
  
!      'dse'
!           Dump each function after applying dead store elimination.  The
!           file name is made by appending '.dse' to the source file name.
  
!      'phiopt'
            Dump each function after optimizing PHI nodes into
            straightline code.  The file name is made by appending
!           '.phiopt' to the source file name.
  
!      'forwprop'
            Dump each function after forward propagating single use
!           variables.  The file name is made by appending '.forwprop' to
            the source file name.
  
!      'copyrename'
            Dump each function after applying the copy rename
            optimization.  The file name is made by appending
!           '.copyrename' to the source file name.
  
!      'nrv'
            Dump each function after applying the named return value
            optimization on generic trees.  The file name is made by
!           appending '.nrv' to the source file name.
  
!      'vect'
!           Dump each function after applying vectorization of loops.  The
!           file name is made by appending '.vect' to the source file
            name.
  
!      'slp'
            Dump each function after applying vectorization of basic
!           blocks.  The file name is made by appending '.slp' to the
            source file name.
  
!      'vrp'
!           Dump each function after Value Range Propagation (VRP). The
!           file name is made by appending '.vrp' to the source file name.
  
!      'all'
!           Enable all the available tree dumps with the flags provided in
!           this option.
  
! '-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 two groups: options describing the
       verbosity of the dump, and options describing which optimizations
!      should be included.  The options from both the groups 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.
  
       The following options control the dump verbosity:
  
!      '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'.
  
       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.
!      '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 all info about successful optimizations from all the
       passes.
  
!      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
  
*************** program or GCC:
*** 6492,6527 ****
            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'.
  
       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.
  
! `-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
--- 6440,6475 ----
            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'.
  
       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.
  
! '-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
*************** program or GCC:
*** 6530,6584 ****
  
       The STRING should be different for every file you compile.
  
! `-fsched-verbose=N'
       On targets that use instruction scheduling, this option controls
       the amount of debugging output the scheduler prints.  This
       information is written to standard error, unless
!      `-fdump-rtl-sched1' or `-fdump-rtl-sched2' is specified, in which
!      case it is output to the usual dump listing file, `.sched1' or
!      `.sched2' respectively.  However for N greater than nine, the
       output is always printed to standard error.
  
!      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.
  
! `-save-temps'
! `-save-temps=cwd'
       Store the usual "temporary" intermediate files permanently; place
       them in the current directory and name them based on the source
!      file.  Thus, compiling `foo.c' with `-c -save-temps' produces files
!      `foo.i' and `foo.s', as well as `foo.o'.  This creates a
!      preprocessed `foo.i' output file even though the compiler now
       normally uses an integrated preprocessor.
  
!      When used in combination with the `-x' command-line option,
!      `-save-temps' is sensible enough to avoid over writing 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'.
  
       If you invoke GCC in parallel, compiling several different source
       files that share a common base name in different subdirectories or
       the same source file compiled for multiple output destinations, it
!      is likely that the different parallel compilers will interfere
!      with each other, and overwrite the temporary files.  For instance:
  
            gcc -save-temps -o outdir1/foo.o indir1/foo.c&
            gcc -save-temps -o outdir2/foo.o indir2/foo.c&
  
!      may result in `foo.i' and `foo.o' being written to simultaneously
       by both compilers.
  
! `-save-temps=obj'
       Store the usual "temporary" intermediate files permanently.  If the
!      `-o' option is used, the temporary files are based on the object
!      file.  If the `-o' option is not used, the `-save-temps=obj'
!      switch behaves like `-save-temps'.
  
       For example:
  
--- 6478,6532 ----
  
       The STRING should be different for every file you compile.
  
! '-fsched-verbose=N'
       On targets that use instruction scheduling, this option controls
       the amount of debugging output the scheduler prints.  This
       information is written to standard error, unless
!      '-fdump-rtl-sched1' or '-fdump-rtl-sched2' is specified, in which
!      case it is output to the usual dump listing file, '.sched1' or
!      '.sched2' respectively.  However for N greater than nine, the
       output is always printed to standard error.
  
!      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.
  
! '-save-temps'
! '-save-temps=cwd'
       Store the usual "temporary" intermediate files permanently; place
       them in the current directory and name them based on the source
!      file.  Thus, compiling 'foo.c' with '-c -save-temps' produces files
!      'foo.i' and 'foo.s', as well as 'foo.o'.  This creates a
!      preprocessed 'foo.i' output file even though the compiler now
       normally uses an integrated preprocessor.
  
!      When used in combination with the '-x' command-line option,
!      '-save-temps' is sensible enough to avoid over writing 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'.
  
       If you invoke GCC in parallel, compiling several different source
       files that share a common base name in different subdirectories or
       the same source file compiled for multiple output destinations, it
!      is likely that the different parallel compilers will interfere with
!      each other, and overwrite the temporary files.  For instance:
  
            gcc -save-temps -o outdir1/foo.o indir1/foo.c&
            gcc -save-temps -o outdir2/foo.o indir2/foo.c&
  
!      may result in 'foo.i' and 'foo.o' being written to simultaneously
       by both compilers.
  
! '-save-temps=obj'
       Store the usual "temporary" intermediate files permanently.  If the
!      '-o' option is used, the temporary files are based on the object
!      file.  If the '-o' option is not used, the '-save-temps=obj' switch
!      behaves like '-save-temps'.
  
       For example:
  
*************** program or GCC:
*** 6586,6595 ****
            gcc -save-temps=obj -c bar.c -o dir/xbar.o
            gcc -save-temps=obj foobar.c -o dir2/yfoobar
  
!      creates `foo.i', `foo.s', `dir/xbar.i', `dir/xbar.s',
!      `dir2/yfoobar.i', `dir2/yfoobar.s', and `dir2/yfoobar.o'.
  
! `-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).
--- 6534,6543 ----
            gcc -save-temps=obj -c bar.c -o dir/xbar.o
            gcc -save-temps=obj foobar.c -o dir2/yfoobar
  
!      creates 'foo.i', 'foo.s', 'dir/xbar.i', 'dir/xbar.s',
!      'dir2/yfoobar.i', 'dir2/yfoobar.s', and 'dir2/yfoobar.o'.
  
! '-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).
*************** program or GCC:
*** 6605,6612 ****
       time", time spent executing operating system routines on behalf of
       the program.  Both numbers are in seconds.
  
!      With the specification of an output file, the output is appended
!      to the named file, and it looks like this:
  
            0.12 0.01 cc1 OPTIONS
            0.00 0.01 as OPTIONS
--- 6553,6560 ----
       time", time spent executing operating system routines on behalf of
       the program.  Both numbers are in seconds.
  
!      With the specification of an output file, the output is appended to
!      the named file, and it looks like this:
  
            0.12 0.01 cc1 OPTIONS
            0.00 0.01 as OPTIONS
*************** program or GCC:
*** 6616,6735 ****
       one can later tell what file was being compiled, and with which
       options.
  
! `-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.
  
! `-fvar-tracking-assignments-toggle'
!      Toggle `-fvar-tracking-assignments', in the same way that
!      `-gtoggle' toggles `-g'.
  
! `-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')--and don't do
       anything else.
  
! `-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::.
  
! `-fno-eliminate-unused-debug-types'
!      Normally, when producing DWARF 2 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 if, in the debugger, you want to
!      cast a value to a type that is not actually used in your program
!      (but is declared).  More often, however, this results in a
!      significant amount of wasted space.
  
  
  File: gcc.info,  Node: Optimize Options,  Next: Preprocessor Options,  Prev: Debugging Options,  Up: Invoking GCC
--- 6564,6683 ----
       one can later tell what file was being compiled, and with which
       options.
  
! '-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.
  
! '-fvar-tracking-assignments-toggle'
!      Toggle '-fvar-tracking-assignments', in the same way that
!      '-gtoggle' toggles '-g'.
  
! '-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')--and don't do
       anything else.
  
! '-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::.
  
! '-fno-eliminate-unused-debug-types'
!      Normally, when producing DWARF 2 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 if, in the debugger, you want to cast
!      a value to a type that is not actually used in your program (but is
!      declared).  More often, however, this results in a significant
!      amount of wasted space.
  
  
  File: gcc.info,  Node: Optimize Options,  Next: Preprocessor Options,  Prev: Debugging Options,  Up: Invoking GCC
*************** between statements, you can then assign
*** 6746,6783 ****
  change the program counter to any other statement in the function and
  get exactly the results you expect from the source code.
  
!  Turning on optimization flags makes the compiler attempt to improve
! the performance and/or code size at the expense of compilation time and
  possibly the ability to debug the program.
  
   The compiler performs optimization based on the knowledge it has of the
  program.  Compiling multiple files at once to a single output file mode
! allows the compiler to use information gained from all of the files
! when compiling each of them.
  
   Not all optimizations are controlled directly by a flag.  Only
  optimizations that have a flag are listed in this section.
  
!  Most optimizations are only enabled if an `-O' level is set on the
  command line.  Otherwise they are disabled, even if individual
  optimization flags are specified.
  
   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' turns on the following optimization flags:
            -fauto-inc-dec
            -fbranch-count-reg
            -fcombine-stack-adjustments
--- 6694,6731 ----
  change the program counter to any other statement in the function and
  get exactly the results you expect from the source code.
  
!  Turning on optimization flags makes the compiler attempt to improve the
! performance and/or code size at the expense of compilation time and
  possibly the ability to debug the program.
  
   The compiler performs optimization based on the knowledge it has of the
  program.  Compiling multiple files at once to a single output file mode
! allows the compiler to use information gained from all of the files when
! compiling each of them.
  
   Not all optimizations are controlled directly by a flag.  Only
  optimizations that have a flag are listed in this section.
  
!  Most optimizations are only enabled if an '-O' level is set on the
  command line.  Otherwise they are disabled, even if individual
  optimization flags are specified.
  
   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' turns on the following optimization flags:
            -fauto-inc-dec
            -fbranch-count-reg
            -fcombine-stack-adjustments
*************** find out the exact set of optimizations
*** 6818,6833 ****
            -ftree-ter
            -funit-at-a-time
  
!      `-O' also turns on `-fomit-frame-pointer' on machines where doing
       so does not interfere with debugging.
  
! `-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 `-O'.  It also
       turns on the following optimization flags:
            -fthread-jumps
            -falign-functions  -falign-jumps
--- 6766,6781 ----
            -ftree-ter
            -funit-at-a-time
  
!      '-O' also turns on '-fomit-frame-pointer' on machines where doing
       so does not interfere with debugging.
  
! '-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 '-O'.  It also
       turns on the following optimization flags:
            -fthread-jumps
            -falign-functions  -falign-jumps
*************** find out the exact set of optimizations
*** 6863,7063 ****
            -ftree-vrp
            -fipa-ra
  
!      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 `-finline-functions',
!      `-funswitch-loops', `-fpredictive-commoning',
!      `-fgcse-after-reload', `-ftree-loop-vectorize',
!      `-ftree-loop-distribute-patterns', `-ftree-slp-vectorize',
!      `-fvect-cost-model', `-ftree-partial-pre' and `-fipa-cp-clone'
       options.
  
! `-O0'
       Reduce compilation time and make debugging produce the expected
       results.  This is the default.
  
! `-Os'
!      Optimize for size.  `-Os' enables all `-O2' optimizations that do
       not typically increase code size.  It also performs further
       optimizations designed to reduce code size.
  
!      `-Os' disables the following optimization flags:
            -falign-functions  -falign-jumps  -falign-loops
            -falign-labels  -freorder-blocks  -freorder-blocks-and-partition
            -fprefetch-loop-arrays
  
! `-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'
!      and the Fortran-specific `-fno-protect-parens' and
!      `-fstack-arrays'.
  
! `-Og'
!      Optimize debugging experience.  `-Og' enables optimizations that
!      do not interfere with debugging. It 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.
  
!      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'
       Always pop the arguments to each function call as soon as that
       function returns.  For machines that must pop arguments after a
       function call, the compiler normally lets arguments accumulate on
       the stack for several function calls and pops them all at once.
  
!      Disabled at levels `-O', `-O2', `-O3', `-Os'.
  
! `-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 `-O',
!      `-O2', `-O3', `-Os'.
  
! `-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 currently not implemented and treated equal to
!      `-ffp-contract=off'.
  
!      The default is `-ffp-contract=fast'.
  
! `-fomit-frame-pointer'
!      Don't keep the frame pointer in a register for functions that
!      don't need one.  This avoids the instructions to save, set up and
!      restore frame pointers; it also makes an extra register available
!      in many functions.  *It also makes debugging impossible on some
!      machines.*
  
       On some machines, such as the VAX, this flag has no effect, because
       the standard calling sequence automatically handles the frame
       pointer and nothing is saved by pretending it doesn't exist.  The
!      machine-description macro `FRAME_POINTER_REQUIRED' controls
!      whether a target machine supports this flag.  *Note Register
!      Usage: (gccint)Registers.
  
       The default setting (when not optimizing for size) for 32-bit
       GNU/Linux x86 and 32-bit Darwin x86 targets is
!      `-fomit-frame-pointer'.  You can configure GCC with the
!      `--enable-frame-pointer' configure option to change the default.
  
!      Enabled at levels `-O', `-O2', `-O3', `-Os'.
  
! `-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'.
  
! `-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 level `-O2'.
  
! `-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 level `-O2'.
  
! `-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 level `-O3'.
  
! `-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'.
  
! `-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,
--- 6811,7007 ----
            -ftree-vrp
            -fipa-ra
  
!      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 '-finline-functions',
!      '-funswitch-loops', '-fpredictive-commoning',
!      '-fgcse-after-reload', '-ftree-loop-vectorize',
!      '-ftree-loop-distribute-patterns', '-ftree-slp-vectorize',
!      '-fvect-cost-model', '-ftree-partial-pre' and '-fipa-cp-clone'
       options.
  
! '-O0'
       Reduce compilation time and make debugging produce the expected
       results.  This is the default.
  
! '-Os'
!      Optimize for size.  '-Os' enables all '-O2' optimizations that do
       not typically increase code size.  It also performs further
       optimizations designed to reduce code size.
  
!      '-Os' disables the following optimization flags:
            -falign-functions  -falign-jumps  -falign-loops
            -falign-labels  -freorder-blocks  -freorder-blocks-and-partition
            -fprefetch-loop-arrays
  
! '-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' and
!      the Fortran-specific '-fno-protect-parens' and '-fstack-arrays'.
  
! '-Og'
!      Optimize debugging experience.  '-Og' enables optimizations that do
!      not interfere with debugging.  It 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.
  
!      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'
       Always pop the arguments to each function call as soon as that
       function returns.  For machines that must pop arguments after a
       function call, the compiler normally lets arguments accumulate on
       the stack for several function calls and pops them all at once.
  
!      Disabled at levels '-O', '-O2', '-O3', '-Os'.
  
! '-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 '-O',
!      '-O2', '-O3', '-Os'.
  
! '-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 currently not implemented and treated equal to
!      '-ffp-contract=off'.
  
!      The default is '-ffp-contract=fast'.
  
! '-fomit-frame-pointer'
!      Don't keep the frame pointer in a register for functions that don't
!      need one.  This avoids the instructions to save, set up and restore
!      frame pointers; it also makes an extra register available in many
!      functions.  *It also makes debugging impossible on some machines.*
  
       On some machines, such as the VAX, this flag has no effect, because
       the standard calling sequence automatically handles the frame
       pointer and nothing is saved by pretending it doesn't exist.  The
!      machine-description macro 'FRAME_POINTER_REQUIRED' controls whether
!      a target machine supports this flag.  *Note Register Usage:
!      (gccint)Registers.
  
       The default setting (when not optimizing for size) for 32-bit
       GNU/Linux x86 and 32-bit Darwin x86 targets is
!      '-fomit-frame-pointer'.  You can configure GCC with the
!      '--enable-frame-pointer' configure option to change the default.
  
!      Enabled at levels '-O', '-O2', '-O3', '-Os'.
  
! '-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'.
  
! '-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 level '-O2'.
  
! '-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 level '-O2'.
  
! '-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 level '-O3'.
  
! '-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'.
  
! '-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
*** 7065,7126 ****
       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-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 `-O', `-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'
       Do not use "decrement and branch" instructions on a count register,
       but instead generate a sequence of instructions that decrement a
       register, compare it against zero, then branch based upon the
--- 7009,7070 ----
       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-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 '-O', '-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'
       Do not use "decrement and branch" instructions on a count register,
       but instead generate a sequence of instructions that decrement a
       register, compare it against zero, then branch based upon the
*************** optimizations to be performed is desired
*** 7128,7138 ****
       support such instructions, which include x86, PowerPC, IA-64 and
       S/390.
  
!      Enabled by default at `-O1' and higher.
  
!      The default is `-fbranch-count-reg'.
  
! `-fno-function-cse'
       Do not put function addresses in registers; make each instruction
       that calls a constant function contain the function's address
       explicitly.
--- 7072,7082 ----
       support such instructions, which include x86, PowerPC, IA-64 and
       S/390.
  
!      Enabled by default at '-O1' and higher.
  
!      The default is '-fbranch-count-reg'.
  
! '-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
*** 7141,7295 ****
       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.
  
       This option turns off this behavior because some programs
       explicitly rely on variables going to the data section--e.g., so
       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'.
  
! `-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 `-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 `-O', `-O2', `-O3', `-Os'.
  
! `-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.
  
! `-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.
  
! `-funsafe-loop-optimizations'
!      This option tells the loop optimizer to assume that loop indices
!      do not overflow, and that loops with nontrivial exit condition are
!      not infinite.  This enables a wider range of loop optimizations
!      even if the loop optimizer itself cannot prove that these
!      assumptions are valid.  If you use `-Wunsafe-loop-optimizations',
!      the compiler warns you if it finds this kind of loop.
  
! `-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 `-O' and
       higher on architectures that support this.
  
! `-fdce'
       Perform dead code elimination (DCE) on RTL.  Enabled by default at
!      `-O' and higher.
  
! `-fdse'
!      Perform dead store elimination (DSE) on RTL.  Enabled by default
!      at `-O' 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 `-O', `-O2', `-O3', `-Os'.
  
! `-fif-conversion2'
       Use conditional execution (where available) to transform
       conditional jumps into branch-less equivalents.
  
!      Enabled at levels `-O', `-O2', `-O3', `-Os'.
  
! `-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
--- 7085,7239 ----
       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.
  
       This option turns off this behavior because some programs
       explicitly rely on variables going to the data section--e.g., so
       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'.
  
! '-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 '-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 '-O', '-O2', '-O3', '-Os'.
  
! '-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.
  
! '-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.
  
! '-funsafe-loop-optimizations'
!      This option tells the loop optimizer to assume that loop indices do
!      not overflow, and that loops with nontrivial exit condition are not
!      infinite.  This enables a wider range of loop optimizations even if
!      the loop optimizer itself cannot prove that these assumptions are
!      valid.  If you use '-Wunsafe-loop-optimizations', the compiler
!      warns you if it finds this kind of loop.
  
! '-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 '-O' and
       higher on architectures that support this.
  
! '-fdce'
       Perform dead code elimination (DCE) on RTL.  Enabled by default at
!      '-O' and higher.
  
! '-fdse'
!      Perform dead store elimination (DSE) on RTL.  Enabled by default at
!      '-O' 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 '-O', '-O2', '-O3', '-Os'.
  
! '-fif-conversion2'
       Use conditional execution (where available) to transform
       conditional jumps into branch-less equivalents.
  
!      Enabled at levels '-O', '-O2', '-O3', '-Os'.
  
! '-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
*** 7298,7738 ****
       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 there.  This 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 if a pointer is 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.
  
       Some targets, especially embedded ones, disable this option at all
!      levels.  Otherwise it is enabled at all levels: `-O0', `-O1',
!      `-O2', `-O3', `-Os'.  Passes that use the 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 is small, preferably of size 1, change 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.
  
! `-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 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
       object are dead when the object is destroyed.  Normally dead store
!      elimination will take advantage of this; if your code relies on
!      the value of the object storage persisting beyond the lifetime of
!      the object, you can use this flag to disable this optimization.
  
! `-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.
  
! `-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.
  
! `-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 `-O', `-O2', `-O3', `-Os'.
  
! `-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.
  
!      Enabled at levels `-O2', `-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'
       Don't schedule instructions across basic blocks.  This is normally
       enabled by default when scheduling before register allocation, i.e.
!      with `-fschedule-insns' or at `-O2' or higher.
  
! `-fno-sched-spec'
       Don't allow speculative motion of non-load instructions.  This is
       normally enabled by default 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 all machine descriptions used by GCC model the CPU closely
!      enough 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 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
!      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
!      variable will be the same. The flag has no effect for functions
       explicitly declared inline (where it is never allowed for
       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.
  
! `-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 it seems to result in better code.
  
       This option is always enabled by default on certain machines,
       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'.
  
! `-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 `-O' 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 `-O' 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 `-O' and higher.
  
! `-ftree-phiprop'
       Perform hoisting of loads from conditional pointers on trees.  This
!      pass is enabled by default at `-O' 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
!      `-O' and higher.
  
! `-fipa-pure-const'
       Discover which functions are pure or constant.  Enabled by default
!      at `-O' and higher.
  
! `-fipa-reference'
       Discover which static variables do not escape the compilation unit.
!      Enabled by default at `-O' and higher.
  
! `-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 `-O' 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'.
  
! `-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
       ipcp-unit-growth=VALUE').  This flag is enabled by default at
!      `-O3'.
  
! `-fipa-cp-alignment'
       When enabled, this optimization propagates alignment of function
       parameters to support better vectorization and string operations.
  
!      This flag is enabled by default at `-O2' and `-Os'.  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
!      different name. The optimization works more effectively with link
       time optimization enabled.
  
       Nevertheless the behavior is similar to Gold Linker ICF
--- 7242,7681 ----
       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 there.  This 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 if a pointer is 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.
  
       Some targets, especially embedded ones, disable this option at all
!      levels.  Otherwise it is enabled at all levels: '-O0', '-O1',
!      '-O2', '-O3', '-Os'.  Passes that use the 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
!      is small, preferably of size 1, change 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.
  
! '-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 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
       object are dead when the object is destroyed.  Normally dead store
!      elimination will take advantage of this; if your code relies on the
!      value of the object storage persisting beyond the lifetime of the
!      object, you can use this flag to disable this optimization.
  
! '-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.
  
! '-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.
  
! '-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 '-O', '-O2', '-O3', '-Os'.
  
! '-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.
  
!      Enabled at levels '-O2', '-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'
       Don't schedule instructions across basic blocks.  This is normally
       enabled by default when scheduling before register allocation, i.e.
!      with '-fschedule-insns' or at '-O2' or higher.
  
! '-fno-sched-spec'
       Don't allow speculative motion of non-load instructions.  This is
       normally enabled by default 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
!      all machine descriptions used by GCC model the CPU closely enough
!      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
!      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
!      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
!      variable will be the same.  The flag has no effect for functions
       explicitly declared inline (where it is never allowed for
       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.
  
! '-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
!      it seems to result in better code.
  
       This option is always enabled by default on certain machines,
       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'.
  
! '-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
!      '-O' 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 '-O' 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 '-O' and higher.
  
! '-ftree-phiprop'
       Perform hoisting of loads from conditional pointers on trees.  This
!      pass is enabled by default at '-O' 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
!      '-O' and higher.
  
! '-fipa-pure-const'
       Discover which functions are pure or constant.  Enabled by default
!      at '-O' and higher.
  
! '-fipa-reference'
       Discover which static variables do not escape the compilation unit.
!      Enabled by default at '-O' and higher.
  
! '-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 '-O' 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'.
  
! '-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
       ipcp-unit-growth=VALUE').  This flag is enabled by default at
!      '-O3'.
  
! '-fipa-cp-alignment'
       When enabled, this optimization propagates alignment of function
       parameters to support better vectorization and string operations.
  
!      This flag is enabled by default at '-O2' and '-Os'.  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
!      different name.  The optimization works more effectively with link
       time optimization enabled.
  
       Nevertheless the behavior is similar to Gold Linker ICF
*************** optimizations to be performed is desired
*** 7740,7836 ****
       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'.
  
! `-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.
  
! `-fisolate-erroneous-paths-attribute'
       Detect paths that trigger erroneous or undefined behavior due 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 `-O' 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 `-O' and
!      higher.  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 `-O' and higher.
  
! `-fssa-phiopt'
       Perform pattern matching on SSA PHI nodes to optimize conditional
!      code.  This pass is enabled by default at `-O' and higher.
  
! `-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-dce'
!      Perform dead code elimination (DCE) on trees.  This flag is
!      enabled by default at `-O' 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
!      side-effect free.  This flag is enabled by default at `-O2' and
!      higher if `-Os' is not also specified.
  
! `-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 `-O' 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 `-O' 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 `-O' 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 `-O' and higher.
  
! `-ftree-loop-linear'
       Perform loop interchange transformations on tree.  Same as
!      `-floop-interchange'.  To use this code transformation, GCC has to
!      be configured with `--with-isl' to enable the Graphite loop
       transformation infrastructure.
  
! `-floop-interchange'
       Perform loop interchange transformations on loops.  Interchanging
       two nested loops switches the inner and outer loops.  For example,
       given a loop like:
--- 7683,7779 ----
       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'.
  
! '-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.
  
! '-fisolate-erroneous-paths-attribute'
       Detect paths that trigger erroneous or undefined behavior due 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 '-O' 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 '-O' and
!      higher.  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 '-O' and higher.
  
! '-fssa-phiopt'
       Perform pattern matching on SSA PHI nodes to optimize conditional
!      code.  This pass is enabled by default at '-O' and higher.
  
! '-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-dce'
!      Perform dead code elimination (DCE) on trees.  This flag is enabled
!      by default at '-O' 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
!      side-effect free.  This flag is enabled by default at '-O2' and
!      higher if '-Os' is not also specified.
  
! '-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 '-O' 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 '-O' 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 '-O' 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 '-O' and higher.
  
! '-ftree-loop-linear'
       Perform loop interchange transformations on tree.  Same as
!      '-floop-interchange'.  To use this code transformation, GCC has to
!      be configured with '--with-isl' to enable the Graphite loop
       transformation infrastructure.
  
! '-floop-interchange'
       Perform loop interchange transformations on loops.  Interchanging
       two nested loops switches the inner and outer loops.  For example,
       given a loop like:
*************** optimizations to be performed is desired
*** 7845,7865 ****
                A(J, I) = A(J, I) * C
              ENDDO
            ENDDO
!      which can be beneficial when `N' is larger than the caches,
!      because in Fortran, the elements of an array are stored in memory
       contiguously by column, and the original loop iterates over rows,
       potentially creating at each access a cache miss.  This
       optimization applies to all the languages supported by GCC and is
       not limited to Fortran.  To use this code transformation, GCC has
!      to be configured with `--with-isl' to enable the Graphite loop
       transformation infrastructure.
  
! `-floop-strip-mine'
       Perform loop strip mining transformations on loops.  Strip mining
       splits a loop into two nested loops.  The outer loop has strides
       equal to the strip size and the inner loop has strides of the
       original loop within a strip.  The strip length can be changed
!      using the `loop-block-tile-size' parameter.  For example, given a
       loop like:
            DO I = 1, N
              A(I) = A(I) + C
--- 7788,7808 ----
                A(J, I) = A(J, I) * C
              ENDDO
            ENDDO
!      which can be beneficial when 'N' is larger than the caches, because
!      in Fortran, the elements of an array are stored in memory
       contiguously by column, and the original loop iterates over rows,
       potentially creating at each access a cache miss.  This
       optimization applies to all the languages supported by GCC and is
       not limited to Fortran.  To use this code transformation, GCC has
!      to be configured with '--with-isl' to enable the Graphite loop
       transformation infrastructure.
  
! '-floop-strip-mine'
       Perform loop strip mining transformations on loops.  Strip mining
       splits a loop into two nested loops.  The outer loop has strides
       equal to the strip size and the inner loop has strides of the
       original loop within a strip.  The strip length can be changed
!      using the 'loop-block-tile-size' parameter.  For example, given a
       loop like:
            DO I = 1, N
              A(I) = A(I) + C
*************** optimizations to be performed is desired
*** 7870,7885 ****
                A(I) = A(I) + C
              ENDDO
            ENDDO
!      This optimization applies to all the languages supported by GCC
!      and is not limited to Fortran.  To use this code transformation,
!      GCC has to be configured with `--with-isl' to enable the Graphite
!      loop transformation infrastructure.
  
! `-floop-block'
       Perform loop blocking transformations on loops.  Blocking strip
       mines each loop in the loop nest such that the memory accesses of
       the element loops fit inside caches.  The strip length can be
!      changed using the `loop-block-tile-size' parameter.  For example,
       given a loop like:
            DO I = 1, N
              DO J = 1, M
--- 7813,7828 ----
                A(I) = A(I) + C
              ENDDO
            ENDDO
!      This optimization applies to all the languages supported by GCC and
!      is not limited to Fortran.  To use this code transformation, GCC
!      has to be configured with '--with-isl' to enable the Graphite loop
!      transformation infrastructure.
  
! '-floop-block'
       Perform loop blocking transformations on loops.  Blocking strip
       mines each loop in the loop nest such that the memory accesses of
       the element loops fit inside caches.  The strip length can be
!      changed using the 'loop-block-tile-size' parameter.  For example,
       given a loop like:
            DO I = 1, N
              DO J = 1, M
*************** optimizations to be performed is desired
*** 7896,7948 ****
                ENDDO
              ENDDO
            ENDDO
!      which can be beneficial when `M' is larger than the caches,
!      because the innermost loop iterates over a smaller amount of data
!      which can be kept in the caches.  This optimization applies to all
!      the languages supported by GCC and is not limited to Fortran.  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-unroll-and-jam'
       Enable unroll and jam for the ISL based loop nest optimizer.  The
!      unroll factor can be changed using the `loop-unroll-jam-size'
       parameter.  The unrolled dimension (counting from the most inner
!      one) can be changed using the `loop-unroll-jam-depth' parameter.
!                   .
  
! `-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.
  
! `-fcheck-data-deps'
       Compare the results of several data dependence analyzers.  This
       option is used for debugging the data dependence analyzers.
  
! `-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-if-convert-stores'
       Attempt to also if-convert conditional jumps containing memory
       writes.  This transformation can be unsafe for multi-threaded
       programs as it transforms conditional memory writes into
--- 7839,7890 ----
                ENDDO
              ENDDO
            ENDDO
!      which can be beneficial when 'M' is larger than the caches, because
!      the innermost loop iterates over a smaller amount of data which can
!      be kept in the caches.  This optimization applies to all the
!      languages supported by GCC and is not limited to Fortran.  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-unroll-and-jam'
       Enable unroll and jam for the ISL based loop nest optimizer.  The
!      unroll factor can be changed using the 'loop-unroll-jam-size'
       parameter.  The unrolled dimension (counting from the most inner
!      one) can be changed using the 'loop-unroll-jam-depth' parameter.  .
  
! '-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.
  
! '-fcheck-data-deps'
       Compare the results of several data dependence analyzers.  This
       option is used for debugging the data dependence analyzers.
  
! '-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-if-convert-stores'
       Attempt to also if-convert conditional jumps containing memory
       writes.  This transformation can be unsafe for multi-threaded
       programs as it transforms conditional memory writes into
*************** optimizations to be performed is desired
*** 7955,7965 ****
              A[i] = cond ? expr : A[i];
       potentially producing data races.
  
! `-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 loop
            DO I = 1, N
              A(I) = B(I) + C
              D(I) = E(I) * F
--- 7897,7907 ----
              A[i] = cond ? expr : A[i];
       potentially producing data races.
  
! '-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
!      loop
            DO I = 1, N
              A(I) = B(I) + C
              D(I) = E(I) * F
*************** optimizations to be performed is desired
*** 7972,7983 ****
               D(I) = E(I) * F
            ENDDO
  
! `-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 `-O3'.
  
!      This pass distributes the initialization loops and generates a
!      call to memset zero.  For example, the loop
            DO I = 1, N
              A(I) = 0
              B(I) = A(I) + I
--- 7914,7925 ----
               D(I) = E(I) * F
            ENDDO
  
! '-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 '-O3'.
  
!      This pass distributes the initialization loops and generates a call
!      to memset zero.  For example, the loop
            DO I = 1, N
              A(I) = 0
              B(I) = A(I) + I
*************** optimizations to be performed is desired
*** 7992,8152 ****
       and the initialization loop is transformed into a call to memset
       zero.
  
! `-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.
  
! `-fivopts'
       Perform induction variable optimizations (strength reduction,
       induction variable merging and induction variable elimination) on
       trees.
  
! `-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 `-O' and higher.
  
! `-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 `-O' and
       higher.
  
! `-ftree-copyrename'
       Perform copy renaming on trees.  This pass attempts to rename
       compiler temporaries to other variables at copy locations, usually
       resulting in variable names which more closely resemble the
!      original variables.  This flag is enabled by default at `-O' and
       higher.
  
! `-ftree-coalesce-inlined-vars'
!      Tell the copyrename pass (see `-ftree-copyrename') to attempt to
       combine small user-defined variables too, but only if they are
       inlined from other functions.  It is a more limited form of
!      `-ftree-coalesce-vars'.  This may harm debug information of such
       inlined variables, but it keeps variables of the inlined-into
       function apart from each other, such that they are more likely to
       contain the expected values in a debugging session.
  
! `-ftree-coalesce-vars'
!      Tell the copyrename pass (see `-ftree-copyrename') to attempt to
       combine small user-defined variables too, 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, including inlined ones.  This option is enabled by
       default.
  
! `-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 `-O' 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 `-O' 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 `-O3' and when `-ftree-vectorize' is enabled.
  
! `-ftree-slp-vectorize'
!      Perform basic block vectorization on trees. This flag is enabled
!      by default at `-O3' and when `-ftree-vectorize' is enabled.
  
! `-fvect-cost-model=MODEL'
       Alter the cost model used for vectorization.  The MODEL argument
!      should be one of `unlimited', `dynamic' or `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 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 or Cilk Plus 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-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 CSE pass.
  
       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.
  
! `-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 level `-O2'.
  
! `-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'.
  
! `-fprefetch-loop-arrays'
       If supported by the target machine, generate instructions to
       prefetch memory to improve the performance of loops that access
       large arrays.
--- 7934,8094 ----
       and the initialization loop is transformed into a call to memset
       zero.
  
! '-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.
  
! '-fivopts'
       Perform induction variable optimizations (strength reduction,
       induction variable merging and induction variable elimination) on
       trees.
  
! '-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 '-O' and higher.
  
! '-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 '-O' and
       higher.
  
! '-ftree-copyrename'
       Perform copy renaming on trees.  This pass attempts to rename
       compiler temporaries to other variables at copy locations, usually
       resulting in variable names which more closely resemble the
!      original variables.  This flag is enabled by default at '-O' and
       higher.
  
! '-ftree-coalesce-inlined-vars'
!      Tell the copyrename pass (see '-ftree-copyrename') to attempt to
       combine small user-defined variables too, but only if they are
       inlined from other functions.  It is a more limited form of
!      '-ftree-coalesce-vars'.  This may harm debug information of such
       inlined variables, but it keeps variables of the inlined-into
       function apart from each other, such that they are more likely to
       contain the expected values in a debugging session.
  
! '-ftree-coalesce-vars'
!      Tell the copyrename pass (see '-ftree-copyrename') to attempt to
       combine small user-defined variables too, 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, including inlined ones.  This option is enabled by
       default.
  
! '-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 '-O' 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 '-O' 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 '-O3' and when '-ftree-vectorize' is enabled.
  
! '-ftree-slp-vectorize'
!      Perform basic block vectorization on trees.  This flag is enabled
!      by default at '-O3' and when '-ftree-vectorize' is enabled.
  
! '-fvect-cost-model=MODEL'
       Alter the cost model used for vectorization.  The MODEL argument
!      should be one of 'unlimited', 'dynamic' or '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 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 or Cilk Plus 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-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
!      CSE pass.
  
       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.
  
! '-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 level '-O2'.
  
! '-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'.
  
! '-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
*** 8154,8229 ****
       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-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.
  
!      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 `-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
       exception handling, for linkonce sections, for functions with a
       user-defined section attribute and on any architecture that does
       not support named sections.
  
!      Enabled for x86 at levels `-O2', `-O3'.
  
! `-freorder-functions'
       Reorder functions in the object file in order to improve code
       locality.  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.
  
       Also profile feedback must be available to make this option
!      effective.  See `-fprofile-arcs' for details.
  
!      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:
            union a_union {
--- 8096,8171 ----
       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-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.
  
!      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 '-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
       exception handling, for linkonce sections, for functions with a
       user-defined section attribute and on any architecture that does
       not support named sections.
  
!      Enabled for x86 at levels '-O2', '-O3'.
  
! '-freorder-functions'
       Reorder functions in the object file in order to improve code
       locality.  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.
  
       Also profile feedback must be available to make this option
!      effective.  See '-fprofile-arcs' for details.
  
!      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:
            union a_union {
*************** optimizations to be performed is desired
*** 8238,8244 ****
            }
       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:
--- 8180,8186 ----
            }
       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
*** 8258,8275 ****
              return ((union a_union *) &d)->i;
            }
  
!      The `-fstrict-aliasing' option is enabled at levels `-O2', `-O3',
!      `-Os'.
  
! `-fstrict-overflow'
       Allow the compiler to assume strict signed overflow rules,
       depending on the language being compiled.  For C (and C++) this
       means that overflow when doing arithmetic with signed numbers is
       undefined, which means that the compiler may assume that it does
       not happen.  This permits various optimizations.  For example, the
!      compiler assumes that an expression like `i + 10 > i' is always
!      true for signed `i'.  This assumption is only valid if signed
!      overflow is undefined, as the expression is false if `i + 10'
       overflows when using twos complement arithmetic.  When this option
       is in effect any attempt to determine whether an operation on
       signed numbers overflows must be written carefully to not actually
--- 8200,8217 ----
              return ((union a_union *) &d)->i;
            }
  
!      The '-fstrict-aliasing' option is enabled at levels '-O2', '-O3',
!      '-Os'.
  
! '-fstrict-overflow'
       Allow the compiler to assume strict signed overflow rules,
       depending on the language being compiled.  For C (and C++) this
       means that overflow when doing arithmetic with signed numbers is
       undefined, which means that the compiler may assume that it does
       not happen.  This permits various optimizations.  For example, the
!      compiler assumes that an expression like 'i + 10 > i' is always
!      true for signed 'i'.  This assumption is only valid if signed
!      overflow is undefined, as the expression is false if 'i + 10'
       overflows when using twos complement arithmetic.  When this option
       is in effect any attempt to determine whether an operation on
       signed numbers overflows must be written carefully to not actually
*************** optimizations to be performed is desired
*** 8279,8383 ****
       semantics: given a pointer to an object, if adding an offset to
       that pointer does not produce a pointer to the same object, the
       addition is undefined.  This permits the compiler to conclude that
!      `p + u > p' is always true for a pointer `p' and unsigned integer
!      `u'.  This assumption is only valid because pointer wraparound is
!      undefined, as the expression is false if `p + u' overflows using
       twos complement arithmetic.
  
!      See also the `-fwrapv' option.  Using `-fwrapv' means that integer
!      signed overflow is fully defined: it wraps.  When `-fwrapv' is
!      used, there is no difference between `-fstrict-overflow' and
!      `-fno-strict-overflow' for integers.  With `-fwrapv' certain types
       of overflow are permitted.  For example, if the compiler gets an
       overflow when doing arithmetic on constants, the overflowed value
!      can still be used with `-fwrapv', but not otherwise.
  
!      The `-fstrict-overflow' option is enabled at levels `-O2', `-O3',
!      `-Os'.
  
! `-falign-functions'
! `-falign-functions=N'
       Align the start of functions to the next power-of-two greater than
!      N, skipping up to N bytes.  For instance, `-falign-functions=32'
       aligns functions to the next 32-byte boundary, but
!      `-falign-functions=24' aligns to the next 32-byte boundary only if
       this can be done by skipping 23 bytes or less.
  
!      `-fno-align-functions' and `-falign-functions=1' are equivalent
!      and mean that functions are not aligned.
  
!      Some assemblers only support this flag when N is a power of two;
!      in that case, it is rounded up.
  
       If N is not specified or is zero, use a machine-dependent default.
  
!      Enabled at levels `-O2', `-O3'.
  
! `-falign-labels'
! `-falign-labels=N'
       Align all branch targets to a power-of-two boundary, skipping up to
!      N bytes like `-falign-functions'.  This option can easily make
!      code slower, because it must insert dummy operations for when the
!      branch target is reached in the usual flow of the code.
  
!      `-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.
  
!      Enabled at levels `-O2', `-O3'.
  
! `-falign-loops'
! `-falign-loops=N'
!      Align loops to a power-of-two boundary, skipping up to N bytes
!      like `-falign-functions'.  If the loops are executed many times,
!      this makes up for any execution of the dummy operations.
  
!      `-fno-align-loops' and `-falign-loops=1' are equivalent and mean
       that loops are not aligned.
  
       If N is not specified or is zero, use a machine-dependent default.
  
!      Enabled at levels `-O2', `-O3'.
  
! `-falign-jumps'
! `-falign-jumps=N'
       Align branch targets to a power-of-two boundary, for branch targets
       where the targets can only be reached by jumping, skipping up to N
!      bytes like `-falign-functions'.  In this case, no dummy operations
       need be executed.
  
!      `-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.
  
!      Enabled at levels `-O2', `-O3'.
  
! `-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.
  
!      Enabled at level `-O0'.  When disabled explicitly, it also implies
!      `-fno-section-anchors', which is otherwise enabled at `-O0' on some
       targets.
  
! `-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
--- 8221,8325 ----
       semantics: given a pointer to an object, if adding an offset to
       that pointer does not produce a pointer to the same object, the
       addition is undefined.  This permits the compiler to conclude that
!      'p + u > p' is always true for a pointer 'p' and unsigned integer
!      'u'.  This assumption is only valid because pointer wraparound is
!      undefined, as the expression is false if 'p + u' overflows using
       twos complement arithmetic.
  
!      See also the '-fwrapv' option.  Using '-fwrapv' means that integer
!      signed overflow is fully defined: it wraps.  When '-fwrapv' is
!      used, there is no difference between '-fstrict-overflow' and
!      '-fno-strict-overflow' for integers.  With '-fwrapv' certain types
       of overflow are permitted.  For example, if the compiler gets an
       overflow when doing arithmetic on constants, the overflowed value
!      can still be used with '-fwrapv', but not otherwise.
  
!      The '-fstrict-overflow' option is enabled at levels '-O2', '-O3',
!      '-Os'.
  
! '-falign-functions'
! '-falign-functions=N'
       Align the start of functions to the next power-of-two greater than
!      N, skipping up to N bytes.  For instance, '-falign-functions=32'
       aligns functions to the next 32-byte boundary, but
!      '-falign-functions=24' aligns to the next 32-byte boundary only if
       this can be done by skipping 23 bytes or less.
  
!      '-fno-align-functions' and '-falign-functions=1' are equivalent and
!      mean that functions are not aligned.
  
!      Some assemblers only support this flag when N is a power of two; in
!      that case, it is rounded up.
  
       If N is not specified or is zero, use a machine-dependent default.
  
!      Enabled at levels '-O2', '-O3'.
  
! '-falign-labels'
! '-falign-labels=N'
       Align all branch targets to a power-of-two boundary, skipping up to
!      N bytes like '-falign-functions'.  This option can easily make code
!      slower, because it must insert dummy operations for when the branch
!      target is reached in the usual flow of the code.
  
!      '-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.
  
!      Enabled at levels '-O2', '-O3'.
  
! '-falign-loops'
! '-falign-loops=N'
!      Align loops to a power-of-two boundary, skipping up to N bytes like
!      '-falign-functions'.  If the loops are executed many times, this
!      makes up for any execution of the dummy operations.
  
!      '-fno-align-loops' and '-falign-loops=1' are equivalent and mean
       that loops are not aligned.
  
       If N is not specified or is zero, use a machine-dependent default.
  
!      Enabled at levels '-O2', '-O3'.
  
! '-falign-jumps'
! '-falign-jumps=N'
       Align branch targets to a power-of-two boundary, for branch targets
       where the targets can only be reached by jumping, skipping up to N
!      bytes like '-falign-functions'.  In this case, no dummy operations
       need be executed.
  
!      '-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.
  
!      Enabled at levels '-O2', '-O3'.
  
! '-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.
  
!      Enabled at level '-O0'.  When disabled explicitly, it also implies
!      '-fno-section-anchors', which is otherwise enabled at '-O0' on some
       targets.
  
! '-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
*** 8386,8405 ****
       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.
  
!      This option should not be used in combination with `-flto'.
       Instead relying on a linker plugin should provide safer and more
       precise information.
  
! `-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
--- 8328,8347 ----
       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.
  
!      This option should not be used in combination with '-flto'.
       Instead relying on a linker plugin should provide safer and more
       precise information.
  
! '-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
*** 8407,8469 ****
       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.
!      For example:
  
            gcc -c -O2 -flto foo.c
            gcc -c -O2 -flto bar.c
            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 only 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 then automatically performs link-time
       optimization if any of the objects involved were compiled with the
!      `-flto' command-line option.  You generally should specify the
       optimization options to be used for link-time optimization though
       GCC tries to be clever at guessing an optimization level to use
!      from the options used at compile-time if you fail to specify one
!      at link-time.  You can always override the automatic decision to
!      do link-time optimization at link-time 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 `-fuse-linker-plugin' is not enabled then, when a file is
!      compiled with `-flto', 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.
  
--- 8349,8411 ----
       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.  For
!      example:
  
            gcc -c -O2 -flto foo.c
            gcc -c -O2 -flto bar.c
            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 only 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 then automatically performs link-time
       optimization if any of the objects involved were compiled with the
!      '-flto' command-line option.  You generally should specify the
       optimization options to be used for link-time optimization though
       GCC tries to be clever at guessing an optimization level to use
!      from the options used at compile-time if you fail to specify one at
!      link-time.  You can always override the automatic decision to do
!      link-time optimization at link-time 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 '-fuse-linker-plugin' is not enabled then, when a file is
!      compiled with '-flto', 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.
  
*************** optimizations to be performed is desired
*** 8476,8519 ****
            gcc -o myprog -O3 foo.o bar.o
  
       This produces individual object files with unoptimized assembler
!      code, but the resulting binary `myprog' is optimized at `-O3'.
!      If, instead, the final binary is generated with `-fno-lto', then
!      `myprog' is not optimized.
  
       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.
  
       There are some code generation flags preserved by GCC when
       generating bytecodes, as they need to be used during the final link
       stage.  Generally options specified at link-time override those
       specified at compile-time.
  
!      If you do not specify an optimization level option `-O' at
       link-time then GCC computes one based on the optimization levels
       used when compiling the object files.  The highest optimization
       level wins here.
  
       Currently, the following options and their setting are take from
!      the first object file that explicitely specified it: `-fPIC',
!      `-fpic', `-fpie', `-fcommon', `-fexceptions',
!      `-fnon-call-exceptions', `-fgnu-tm' and all the `-m' target flags.
  
       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 linke-time.
  
       It is recommended that you compile all the files participating in
       the same link with the same options and also specify those options
--- 8418,8461 ----
            gcc -o myprog -O3 foo.o bar.o
  
       This produces individual object files with unoptimized assembler
!      code, but the resulting binary 'myprog' is optimized at '-O3'.  If,
!      instead, the final binary is generated with '-fno-lto', then
!      'myprog' is not optimized.
  
       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.
  
       There are some code generation flags preserved by GCC when
       generating bytecodes, as they need to be used during the final link
       stage.  Generally options specified at link-time override those
       specified at compile-time.
  
!      If you do not specify an optimization level option '-O' at
       link-time then GCC computes one based on the optimization levels
       used when compiling the object files.  The highest optimization
       level wins here.
  
       Currently, the following options and their setting are take from
!      the first object file that explicitely specified it: '-fPIC',
!      '-fpic', '-fpie', '-fcommon', '-fexceptions',
!      '-fnon-call-exceptions', '-fgnu-tm' and all the '-m' target flags.
  
       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 linke-time.
  
       It is recommended that you compile all the files participating in
       the same link with the same options and also specify those options
*************** optimizations to be performed is desired
*** 8534,8576 ****
            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 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
--- 8476,8518 ----
            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 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
*** 8579,8677 ****
       an older or newer version of GCC.
  
       Link-time optimization does not work well with generation of
!      debugging information.  Combining `-flto' with `-g' is currently
       experimental and expected to produce unexpected results.
  
!      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.  The default value for N is 1.
  
!      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.
  
! `-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.  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-odr-type-merging'
       Enable streaming of mangled types names of C++ types and their
       unification at linktime.  This increases size of LTO object files,
       but enable diagnostics about One Definition Rule violations.
  
! `-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').  Valid values
       are 0 (no compression) to 9 (maximum compression).  Values outside
       this range are clamped to either 0 or 9.  If the option is not
       given, a default balanced compression setting is used.
  
! `-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.
  
! `-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.
  
       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 `-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.
  
!      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.
--- 8521,8617 ----
       an older or newer version of GCC.
  
       Link-time optimization does not work well with generation of
!      debugging information.  Combining '-flto' with '-g' is currently
       experimental and expected to produce unexpected results.
  
!      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.  The default value
!      for N is 1.
  
!      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.
  
! '-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.  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-odr-type-merging'
       Enable streaming of mangled types names of C++ types and their
       unification at linktime.  This increases size of LTO object files,
       but enable diagnostics about One Definition Rule violations.
  
! '-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').  Valid values
       are 0 (no compression) to 9 (maximum compression).  Values outside
       this range are clamped to either 0 or 9.  If the option is not
       given, a default balanced compression setting is used.
  
! '-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.
  
! '-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.
  
       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 '-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.
  
!      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
*** 8681,8765 ****
       represent the comparison operation before register allocation is
       complete.
  
!      Enabled at levels `-O', `-O2', `-O3', `-Os'.
  
! `-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 `-O', `-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.
  
! `-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.
  
! `-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', `-fvpt'.
  
       If PATH is specified, GCC looks at the PATH to find the profile
!      feedback data files. See `-fprofile-dir'.
  
! `-fprofile-use'
! `-fprofile-use=PATH'
       Enable profile feedback-directed optimizations, and the following
       optimizations which are generally profitable only with profile
!      feedback available: `-fbranch-probabilities', `-fvpt',
!      `-funroll-loops', `-fpeel-loops', `-ftracer', `-ftree-vectorize',
!      and `ftree-loop-distribute-patterns'.
  
       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 `-Wcoverage-mismatch'.  Note this may result in
!      poorly optimized code.
  
       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 which are generally profitable only with
!      profile feedback available: `-fbranch-probabilities', `-fvpt',
!      `-funroll-loops', `-fpeel-loops', `-ftracer', `-ftree-vectorize',
!      `-finline-functions', `-fipa-cp', `-fipa-cp-clone',
!      `-fpredictive-commoning', `-funswitch-loops',
!      `-fgcse-after-reload', and `-ftree-loop-distribute-patterns'.
  
       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'.
  
       E.g.
            create_gcov --binary=your_program.unstripped --profile=perf.data \
--- 8621,8707 ----
       represent the comparison operation before register allocation is
       complete.
  
!      Enabled at levels '-O', '-O2', '-O3', '-Os'.
  
! '-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 '-O', '-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.
  
! '-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.
  
! '-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', '-fvpt'.
  
       If PATH is specified, GCC looks at the PATH to find the profile
!      feedback data files.  See '-fprofile-dir'.
  
! '-fprofile-use'
! '-fprofile-use=PATH'
       Enable profile feedback-directed optimizations, and the following
       optimizations which are generally profitable only with profile
!      feedback available: '-fbranch-probabilities', '-fvpt',
!      '-funroll-loops', '-fpeel-loops', '-ftracer', '-ftree-vectorize',
!      and 'ftree-loop-distribute-patterns'.
  
       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 '-Wcoverage-mismatch'.  Note this may result in poorly
!      optimized code.
  
       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 which are generally profitable only with
!      profile feedback available: '-fbranch-probabilities', '-fvpt',
!      '-funroll-loops', '-fpeel-loops', '-ftracer', '-ftree-vectorize',
!      '-finline-functions', '-fipa-cp', '-fipa-cp-clone',
!      '-fpredictive-commoning', '-funswitch-loops',
!      '-fgcse-after-reload', and '-ftree-loop-distribute-patterns'.
  
       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>.
  
       E.g.
            create_gcov --binary=your_program.unstripped --profile=perf.data \
*************** optimizations to be performed is desired
*** 8769,9033 ****
  floating-point arithmetic.  These options trade off between speed and
  correctness.  All must be specifically enabled.
  
! `-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 prevents undesirable excess precision on machines such
       as the 68000 where the floating registers (of the 68881) keep more
!      precision than a `double' is supposed to have.  Similarly for the
       x86 architecture.  For most programs, the excess precision does
       only good, but a few programs rely on the precise definition of
!      IEEE floating point.  Use `-ffloat-store' for such programs, after
       modifying them to store all pertinent intermediate computations
       into variables.
  
! `-fexcess-precision=STYLE'
       This option allows further control over excess precision on
       machines where floating-point registers have more precision than
!      the IEEE `float' and `double' types and the processor does not
       support operations rounding to those types.  By default,
!      `-fexcess-precision=fast' is in effect; this means that operations
       are carried out in the precision of the registers and that it is
       unpredictable when rounding to the types specified in the source
       code takes place.  When compiling C, if
!      `-fexcess-precision=standard' is specified then excess precision
       follows the rules specified in ISO C99; 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 if a strict conformance option such as
!      `-std=c99' is used.
  
!      `-fexcess-precision=standard' is not implemented for languages
!      other than C, and has no effect if `-funsafe-math-optimizations'
!      or `-ffast-math' is specified.  On the x86, it also 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.
  
! `-ffast-math'
!      Sets the options `-fno-math-errno', `-funsafe-math-optimizations',
!      `-ffinite-math-only', `-fno-rounding-math', `-fno-signaling-nans'
!      and `-fcx-limited-range'.
  
!      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 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
       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.
  
!      This option is not turned on by any `-O' option 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 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 should never be turned on by any `-O' option 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'.
  
! `-frounding-math'
       Disable transformations and optimizations that assume default
       floating-point rounding behavior.  This is round-to-zero for all
!      floating point to integer conversions, and round-to-nearest for
!      all other arithmetic truncations.  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.
  
!      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 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.
  
! `-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
!      Options for Debugging Your Program or `gcc': Debugging 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.
  
!      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.c', 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.
  
! `-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 with `-fprofile-generate' and `-fprofile-use'.
  
! `-fprofile-reorder-functions'
!      Function reordering based on profile instrumentation collects
!      first time of execution of a function and orders these functions
!      in ascending order.
  
!      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.
  
! `-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.
--- 8711,8977 ----
  floating-point arithmetic.  These options trade off between speed and
  correctness.  All must be specifically enabled.
  
! '-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 prevents undesirable excess precision on machines such
       as the 68000 where the floating registers (of the 68881) keep more
!      precision than a 'double' is supposed to have.  Similarly for the
       x86 architecture.  For most programs, the excess precision does
       only good, but a few programs rely on the precise definition of
!      IEEE floating point.  Use '-ffloat-store' for such programs, after
       modifying them to store all pertinent intermediate computations
       into variables.
  
! '-fexcess-precision=STYLE'
       This option allows further control over excess precision on
       machines where floating-point registers have more precision than
!      the IEEE 'float' and 'double' types and the processor does not
       support operations rounding to those types.  By default,
!      '-fexcess-precision=fast' is in effect; this means that operations
       are carried out in the precision of the registers and that it is
       unpredictable when rounding to the types specified in the source
       code takes place.  When compiling C, if
!      '-fexcess-precision=standard' is specified then excess precision
       follows the rules specified in ISO C99; 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 if a strict conformance option such as
!      '-std=c99' is used.
  
!      '-fexcess-precision=standard' is not implemented for languages
!      other than C, and has no effect if '-funsafe-math-optimizations' or
!      '-ffast-math' is specified.  On the x86, it also 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.
  
! '-ffast-math'
!      Sets the options '-fno-math-errno', '-funsafe-math-optimizations',
!      '-ffinite-math-only', '-fno-rounding-math', '-fno-signaling-nans'
!      and '-fcx-limited-range'.
  
!      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 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
       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.
  
!      This option is not turned on by any '-O' option 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 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 should never be turned on by any '-O' option 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'.
  
! '-frounding-math'
       Disable transformations and optimizations that assume default
       floating-point rounding behavior.  This is round-to-zero for all
!      floating point to integer conversions, and round-to-nearest for all
!      other arithmetic truncations.  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.
  
!      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 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.
  
! '-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
!      Options for Debugging Your Program or 'gcc': Debugging 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.
  
!      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.c', 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.
  
! '-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 with '-fprofile-generate' and '-fprofile-use'.
  
! '-fprofile-reorder-functions'
!      Function reordering based on profile instrumentation collects first
!      time of execution of a function and orders these functions in
!      ascending order.
  
!      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.
  
! '-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
*** 9035,9092 ****
       however, it can make debugging impossible, since variables no
       longer stay in a "home register".
  
!      Enabled by default with `-funroll-loops' and `-fpeel-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 with `-fprofile-use'.
  
! `-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 with `-fprofile-use'.
  
! `-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).  It also turns on complete loop
       peeling (i.e. complete removal of loops with small constant number
       of iterations).
  
!      Enabled with `-fprofile-use'.
  
! `-fmove-loop-invariants'
       Enables the loop invariant motion pass in the RTL loop optimizer.
!      Enabled at level `-O1'
  
! `-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).
  
! `-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
--- 8979,9036 ----
       however, it can make debugging impossible, since variables no
       longer stay in a "home register".
  
!      Enabled by default with '-funroll-loops' and '-fpeel-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 with '-fprofile-use'.
  
! '-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 with '-fprofile-use'.
  
! '-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).  It also turns on complete loop
       peeling (i.e. complete removal of loops with small constant number
       of iterations).
  
!      Enabled with '-fprofile-use'.
  
! '-fmove-loop-invariants'
       Enables the loop invariant motion pass in the RTL loop optimizer.
!      Enabled at level '-O1'
  
! '-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).
  
! '-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
*** 9100,9163 ****
  
       Only use these options when there are significant benefits from
       doing so.  When you specify these options, the assembler and linker
!      create larger object and executable files and are also slower.
!      You cannot use `gprof' on all systems if you specify this option,
!      and you may have problems with debugging if you specify both this
!      option and `-g'.
  
! `-fbranch-target-load-optimize'
       Perform branch target register load optimization before prologue /
       epilogue threading.  The use of target registers can typically be
       exposed only during reload, thus hoisting loads out of loops and
       doing inter-block scheduling needs a separate optimization pass.
  
! `-fbranch-target-load-optimize2'
       Perform branch target register load optimization after prologue /
       epilogue threading.
  
! `-fbtr-bb-exclusive'
       When performing branch target register load optimization, don't
       reuse branch target registers within any basic block.
  
! `-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 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.
  
! `-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.
  
! `-fstack-protector-explicit'
!      Like `-fstack-protector' but only protects those functions which
!      have the `stack_protect' attribute
  
! `-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):
  
            int foo (void)
--- 9044,9107 ----
  
       Only use these options when there are significant benefits from
       doing so.  When you specify these options, the assembler and linker
!      create larger object and executable files and are also slower.  You
!      cannot use 'gprof' on all systems if you specify this option, and
!      you may have problems with debugging if you specify both this
!      option and '-g'.
  
! '-fbranch-target-load-optimize'
       Perform branch target register load optimization before prologue /
       epilogue threading.  The use of target registers can typically be
       exposed only during reload, thus hoisting loads out of loops and
       doing inter-block scheduling needs a separate optimization pass.
  
! '-fbranch-target-load-optimize2'
       Perform branch target register load optimization after prologue /
       epilogue threading.
  
! '-fbtr-bb-exclusive'
       When performing branch target register load optimization, don't
       reuse branch target registers within any basic block.
  
! '-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 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.
  
! '-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.
  
! '-fstack-protector-explicit'
!      Like '-fstack-protector' but only protects those functions which
!      have the 'stack_protect' attribute
  
! '-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):
  
            int foo (void)
*************** includes experimental options that may p
*** 9168,9179 ****
  
       Not all targets support this option.
  
! `--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
--- 9112,9123 ----
  
       Not all targets support this option.
  
! '--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
*************** includes experimental options that may p
*** 9182,9213 ****
       In each case, the VALUE is an integer.  The allowable choices for
       NAME are:
  
!     `predictable-branch-outcome'
            When branch is predicted to be taken with probability lower
            than this threshold (in percent), then it is considered well
!           predictable. The default is 10.
  
!     `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.  The default value is 5.
  
!     `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.  The default value is 8.
  
!     `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
--- 9126,9157 ----
       In each case, the VALUE is an integer.  The allowable choices for
       NAME are:
  
!      'predictable-branch-outcome'
            When branch is predicted to be taken with probability lower
            than this threshold (in percent), then it is considered well
!           predictable.  The default is 10.
  
!      '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.  The default
!           value is 5.
  
!      '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.  The default value is 8.
  
!      '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
*** 9216,9222 ****
            than max-goto-duplication-insns are unfactored.  The default
            value is 8.
  
!     `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
--- 9160,9166 ----
            than max-goto-duplication-insns are unfactored.  The default
            value is 8.
  
!      '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
*** 9225,9413 ****
            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 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.
  
!     `max-gcse-memory'
!           The approximate maximum amount of memory 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.  The default value is
            20.
  
!     `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-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 tree inliner considers for inlining.  This only affects
            functions declared inline and methods implemented in a class
            declaration (C++).  The default value is 400.
  
!     `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.  The default value
            is 40.
  
!     `inline-min-speedup'
            When estimated performance improvement of caller + callee
            runtime exceeds this threshold (in precent), the function can
!           be inlined regardless 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.
!           The default value is 2700.
  
!     `large-function-growth'
            Specifies maximal growth of large function caused by inlining
            in percents.  The default value is 100 which 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 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 `--param large-unit-insns' before applying
!           `--param inline-unit-growth'.  The default is 10000.
  
!     `inline-unit-growth'
            Specifies maximal overall growth of the compilation unit
!           caused by inlining.  The default value is 20 which 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.
  
!     `ipcp-unit-growth'
            Specifies maximal overall growth of the compilation unit
            caused by interprocedural constant propagation.  The default
!           value is 10 which limits unit growth to 1.1 times the
!           original size.
  
!     `large-stack-frame'
            The limit specifying large stack frames.  While inlining the
!           algorithm is trying to not grow past this limit too much.
!           The default value is 256 bytes.
  
!     `large-stack-frame-growth'
            Specifies maximal growth of large stack frames caused by
            inlining in percents.  The default value is 1000 which 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.  The
!           default value is 450.
  
!     `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.  The
!           default value is 8.
  
!     `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 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).  The
            default value is 10.
  
!     `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.  The default value is 14.
  
!     `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.  The
            default value is 20.
  
!     `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.  The default value is 0.
  
!     `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.  The
            default value is 0.
  
!     `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.  The default value is 10.
  
!     `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
--- 9169,9355 ----
            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
!           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.
  
!      'max-gcse-memory'
!           The approximate maximum amount of memory 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.  The default value is
            20.
  
!      '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-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
!           tree inliner considers for inlining.  This only affects
            functions declared inline and methods implemented in a class
            declaration (C++).  The default value is 400.
  
!      '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.  The default value
            is 40.
  
!      'inline-min-speedup'
            When estimated performance improvement of caller + callee
            runtime exceeds this threshold (in precent), the function can
!           be inlined regardless 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.  The default value
!           is 2700.
  
!      'large-function-growth'
            Specifies maximal growth of large function caused by inlining
            in percents.  The default value is 100 which 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
!           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
!           '--param large-unit-insns' before applying '--param
!           inline-unit-growth'.  The default is 10000.
  
!      'inline-unit-growth'
            Specifies maximal overall growth of the compilation unit
!           caused by inlining.  The default value is 20 which 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.
  
!      'ipcp-unit-growth'
            Specifies maximal overall growth of the compilation unit
            caused by interprocedural constant propagation.  The default
!           value is 10 which limits unit growth to 1.1 times the original
!           size.
  
!      'large-stack-frame'
            The limit specifying large stack frames.  While inlining the
!           algorithm is trying to not grow past this limit too much.  The
!           default value is 256 bytes.
  
!      'large-stack-frame-growth'
            Specifies maximal growth of large stack frames caused by
            inlining in percents.  The default value is 1000 which 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.  The default value is 450.
  
!      '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.  The default value is 8.
  
!      '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 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).  The
            default value is 10.
  
!      '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.  The default value is 14.
  
!      '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.  The
            default value is 20.
  
!      '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.  The default value is 0.
  
!      '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.  The
            default value is 0.
  
!      '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.  The default value is 10.
  
!      '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
*** 9416,9565 ****
            allows all expressions to travel unrestricted distances.  The
            default value is 3.
  
!     `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.  The default
            value is 30.
  
!     `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.
!           The default value is 10.
  
!     `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.  The default value is 2.
  
!     `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-level'
            The maximum number of branches unswitched in a single loop.
  
!     `lim-expensive'
            The minimum cost of an expensive expression in the loop
            invariant motion.
  
!     `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.
  
!     `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.
  
!     `omega-max-vars'
            The maximum number of variables in an Omega constraint system.
            The default value is 128.
  
!     `omega-max-geqs'
            The maximum number of inequalities in an Omega constraint
            system.  The default value is 256.
  
!     `omega-max-eqs'
            The maximum number of equalities in an Omega constraint
            system.  The default value is 128.
  
!     `omega-max-wild-cards'
!           The maximum number of wildcard variables that the Omega
!           solver is able to insert.  The default value is 18.
  
!     `omega-hash-table-size'
            The size of the hash table in the Omega solver.  The default
            value is 550.
  
!     `omega-max-keys'
            The maximal number of keys used by the Omega solver.  The
            default value is 500.
  
!     `omega-eliminate-redundant-constraints'
            When set to 1, use expensive methods to eliminate all
            redundant constraints.  The default value is 0.
  
!     `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-ws-permille'
            A basic block profile count is considered hot if it
!           contributes to the given permillage (i.e. 0...1000) of the
            entire profiled execution.
  
!     `hot-bb-frequency-fraction'
            Select fraction of the entry block frequency of executions of
            basic block in function given basic block needs to have to be
            considered hot.
  
!     `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.
--- 9358,9507 ----
            allows all expressions to travel unrestricted distances.  The
            default value is 3.
  
!      '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.  The default
            value is 30.
  
!      '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.  The
!           default value is 10.
  
!      '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.  The default value is 2.
  
!      '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-level'
            The maximum number of branches unswitched in a single loop.
  
!      'lim-expensive'
            The minimum cost of an expensive expression in the loop
            invariant motion.
  
!      '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.
  
!      '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.
  
!      'omega-max-vars'
            The maximum number of variables in an Omega constraint system.
            The default value is 128.
  
!      'omega-max-geqs'
            The maximum number of inequalities in an Omega constraint
            system.  The default value is 256.
  
!      'omega-max-eqs'
            The maximum number of equalities in an Omega constraint
            system.  The default value is 128.
  
!      'omega-max-wild-cards'
!           The maximum number of wildcard variables that the Omega solver
!           is able to insert.  The default value is 18.
  
!      'omega-hash-table-size'
            The size of the hash table in the Omega solver.  The default
            value is 550.
  
!      'omega-max-keys'
            The maximal number of keys used by the Omega solver.  The
            default value is 500.
  
!      'omega-eliminate-redundant-constraints'
            When set to 1, use expensive methods to eliminate all
            redundant constraints.  The default value is 0.
  
!      '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-ws-permille'
            A basic block profile count is considered hot if it
!           contributes to the given permillage (i.e.  0...1000) of the
            entire profiled execution.
  
!      'hot-bb-frequency-fraction'
            Select fraction of the entry block frequency of executions of
            basic block in function given basic block needs to have to be
            considered hot.
  
!      '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
*** 9568,9629 ****
            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.  The default probability of 90 is obtained
            empirically.
  
!     `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-ratio'
!     `tracer-min-branch-ratio-feedback'
            Stop forward growth if the best edge has probability lower
            than this threshold.
  
!           Similarly to `tracer-dynamic-coverage' two values are
!           present, one for compilation for profile feedback and one for
            compilation without.  The value for compilation with profile
            feedback needs to be more conservative (higher) in order to
            make tracer effective.
  
!     `max-cse-path-length'
            The maximum number of basic blocks on path that CSE considers.
            The default is 10.
  
!     `max-cse-insns'
            The maximum number of instructions CSE processes before
            flushing.  The default is 1000.
  
!     `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's heap should be allowed to
--- 9510,9577 ----
            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.  The default probability of 90 is obtained
            empirically.
  
!      '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-ratio'
!      'tracer-min-branch-ratio-feedback'
! 
            Stop forward growth if the best edge has probability lower
            than this threshold.
  
!           Similarly to 'tracer-dynamic-coverage' two values are present,
!           one for compilation for profile feedback and one for
            compilation without.  The value for compilation with profile
            feedback needs to be more conservative (higher) in order to
            make tracer effective.
  
!      'max-cse-path-length'
! 
            The maximum number of basic blocks on path that CSE considers.
            The default is 10.
  
!      'max-cse-insns'
            The maximum number of instructions CSE processes before
            flushing.  The default is 1000.
  
!      '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's heap should be allowed to
*************** includes experimental options that may p
*** 9631,9650 ****
            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
--- 9579,9598 ----
            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
*** 9654,9821 ****
            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.  The default value
            is 100.
  
!     `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.  The default value is
!           500.
  
-     `reorder-blocks-duplicate'
-     `reorder-blocks-duplicate-feedback'
            Used by the basic block reordering pass to decide whether to
            use unconditional branch or duplicate the code on its
            destination.  Code is duplicated when its estimated size is
            smaller than this value multiplied by the estimated size of
            unconditional jump in the hot spots of the program.
  
!           The `reorder-block-duplicate-feedback' parameter is used only
            when profile feedback is available.  It may be set to higher
!           values than `reorder-block-duplicate' since information about
            the hot spots is more accurate.
  
!     `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.  The default value is 100.
  
!     `max-sched-region-blocks'
            The maximum number of blocks in a region to be considered for
            interblock scheduling.  The default value is 10.
  
!     `max-pipeline-region-blocks'
            The maximum number of blocks in a region to be considered for
            pipelining in the selective scheduler.  The default value is
            15.
  
!     `max-sched-region-insns'
            The maximum number of insns in a region to be considered for
            interblock scheduling.  The default value is 100.
  
!     `max-pipeline-region-insns'
            The maximum number of insns in a region to be considered for
            pipelining in the selective scheduler.  The default value is
            200.
  
!     `min-spec-prob'
            The minimum probability (in percents) of reaching a source
            block for interblock speculative scheduling.  The default
            value is 40.
  
!     `max-sched-extend-regions-iters'
            The maximum number of iterations through CFG to extend
            regions.  A value of 0 (the default) disables region
            extensions.
  
!     `max-sched-insn-conflict-delay'
            The maximum conflict delay for an insn to be considered for
            speculative motion.  The default value is 3.
  
!     `sched-spec-prob-cutoff'
            The minimal probability of speculation success (in percents),
!           so that speculative insns are scheduled.  The default value
!           is 40.
  
!     `sched-spec-state-edge-prob-cutoff'
!           The minimum probability an edge must have for the scheduler
!           to save its state across it.  The default value is 10.
  
!     `sched-mem-true-dep-cost'
            Minimal distance (in CPU cycles) between store and load
            targeting same memory locations.  The default value is 1.
  
!     `selsched-max-lookahead'
            The maximum size of the lookahead window of selective
            scheduling.  It is a depth of search for available
            instructions.  The default value is 50.
  
!     `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.
            The default value is 2.
  
!     `selsched-max-insns-to-rename'
!           The maximum number of best instructions in the ready list
!           that are considered for renaming in the selective scheduler.
!           The default value is 2.
  
!     `sms-min-sc'
            The minimum value of stage count that swing modulo scheduler
            generates.  The default value is 2.
  
!     `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.  The default is 10000.
  
!     `max-combine-insns'
            The maximum number of instructions the RTL combiner tries to
!           combine.  The default value is 2 at `-Og' and 4 otherwise.
  
!     `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.  The default value is 256.
  
!     `ssp-buffer-size'
            The minimum size of buffers (i.e. arrays) that receive stack
!           smashing protection when `-fstack-protection' is used.
  
!     `min-size-for-stack-sharing'
            The minimum size of variables taking part in stack slot
!           sharing when not optimizing. The default value is 32.
  
!     `max-jump-thread-duplication-stmts'
            Maximum number of statements allowed in a block that needs to
            be duplicated when threading jumps.
  
!     `max-fields-for-field-sensitive'
            Maximum number of fields in a structure treated in a field
            sensitive manner during pointer analysis.  The default is zero
!           for `-O0' and `-O1', and 100 for `-Os', `-O2', and `-O3'.
  
!     `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 cache, in bytes.
  
!     `l1-cache-size'
            The size of L1 cache, in kilobytes.
  
!     `l2-cache-size'
            The size of L2 cache, in kilobytes.
  
!     `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.
            By default, this should always be 1, which uses a more
            efficient internal mechanism for comparing types in C++ and
--- 9602,9769 ----
            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.  The default value
            is 100.
  
!      '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.  The default value is 500.
! 
!      'reorder-blocks-duplicate'
!      'reorder-blocks-duplicate-feedback'
  
            Used by the basic block reordering pass to decide whether to
            use unconditional branch or duplicate the code on its
            destination.  Code is duplicated when its estimated size is
            smaller than this value multiplied by the estimated size of
            unconditional jump in the hot spots of the program.
  
!           The 'reorder-block-duplicate-feedback' parameter is used only
            when profile feedback is available.  It may be set to higher
!           values than 'reorder-block-duplicate' since information about
            the hot spots is more accurate.
  
!      '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.  The default value is 100.
  
!      'max-sched-region-blocks'
            The maximum number of blocks in a region to be considered for
            interblock scheduling.  The default value is 10.
  
!      'max-pipeline-region-blocks'
            The maximum number of blocks in a region to be considered for
            pipelining in the selective scheduler.  The default value is
            15.
  
!      'max-sched-region-insns'
            The maximum number of insns in a region to be considered for
            interblock scheduling.  The default value is 100.
  
!      'max-pipeline-region-insns'
            The maximum number of insns in a region to be considered for
            pipelining in the selective scheduler.  The default value is
            200.
  
!      'min-spec-prob'
            The minimum probability (in percents) of reaching a source
            block for interblock speculative scheduling.  The default
            value is 40.
  
!      'max-sched-extend-regions-iters'
            The maximum number of iterations through CFG to extend
            regions.  A value of 0 (the default) disables region
            extensions.
  
!      'max-sched-insn-conflict-delay'
            The maximum conflict delay for an insn to be considered for
            speculative motion.  The default value is 3.
  
!      'sched-spec-prob-cutoff'
            The minimal probability of speculation success (in percents),
!           so that speculative insns are scheduled.  The default value is
!           40.
  
!      'sched-spec-state-edge-prob-cutoff'
!           The minimum probability an edge must have for the scheduler to
!           save its state across it.  The default value is 10.
  
!      'sched-mem-true-dep-cost'
            Minimal distance (in CPU cycles) between store and load
            targeting same memory locations.  The default value is 1.
  
!      'selsched-max-lookahead'
            The maximum size of the lookahead window of selective
            scheduling.  It is a depth of search for available
            instructions.  The default value is 50.
  
!      '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.
            The default value is 2.
  
!      'selsched-max-insns-to-rename'
!           The maximum number of best instructions in the ready list that
!           are considered for renaming in the selective scheduler.  The
!           default value is 2.
  
!      'sms-min-sc'
            The minimum value of stage count that swing modulo scheduler
            generates.  The default value is 2.
  
!      '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.  The default is 10000.
  
!      'max-combine-insns'
            The maximum number of instructions the RTL combiner tries to
!           combine.  The default value is 2 at '-Og' and 4 otherwise.
  
!      '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.  The
!           default value is 256.
  
!      'ssp-buffer-size'
            The minimum size of buffers (i.e. arrays) that receive stack
!           smashing protection when '-fstack-protection' is used.
  
!      'min-size-for-stack-sharing'
            The minimum size of variables taking part in stack slot
!           sharing when not optimizing.  The default value is 32.
  
!      'max-jump-thread-duplication-stmts'
            Maximum number of statements allowed in a block that needs to
            be duplicated when threading jumps.
  
!      'max-fields-for-field-sensitive'
            Maximum number of fields in a structure treated in a field
            sensitive manner during pointer analysis.  The default is zero
!           for '-O0' and '-O1', and 100 for '-Os', '-O2', and '-O3'.
  
!      '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 cache, in bytes.
  
!      'l1-cache-size'
            The size of L1 cache, in kilobytes.
  
!      'l2-cache-size'
            The size of L2 cache, in kilobytes.
  
!      '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.
            By default, this should always be 1, which uses a more
            efficient internal mechanism for comparing types in C++ and
*************** includes experimental options that may p
*** 9823,9837 ****
            are causing 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.
  
!     `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
--- 9771,9785 ----
            are causing 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.
  
!      '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
*** 9839,9867 ****
            prevents the runaway behavior.  Setting a value of 0 for this
            parameter allows an unlimited set length.
  
!     `sccvn-max-scc-size'
            Maximum size of a strongly connected component (SCC) during
            SCCVN processing.  If this limit is hit, SCCVN processing for
            the whole function is not done and optimizations depending on
            it are disabled.  The default maximum SCC size is 10000.
  
!     `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.  The default maxmimum
!           number of queries is 1000.
  
!     `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.  The default value of the parameter is 100.
  
!     `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
--- 9787,9815 ----
            prevents the runaway behavior.  Setting a value of 0 for this
            parameter allows an unlimited set length.
  
!      'sccvn-max-scc-size'
            Maximum size of a strongly connected component (SCC) during
            SCCVN processing.  If this limit is hit, SCCVN processing for
            the whole function is not done and optimizations depending on
            it are disabled.  The default maximum SCC size is 10000.
  
!      '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.  The default maxmimum number of queries is
!           1000.
  
!      '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.  The default value of the parameter is 100.
  
!      '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
*** 9871,9920 ****
            building a pseudo-register conflict table.  The default value
            of the parameter is 2000.
  
!     `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.  The default value of
!           the parameter is 2, which is the minimal number of registers
            needed by typical instructions.  This value is the best found
            from numerous experiments.
  
!     `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 of the
            parameter is 40.  The 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.  The default value of the parameter is
!           1000 for `-O1' and 10000 for `-O2' and above.
  
!     `loop-max-datarefs-for-datadeps'
            Building data dapendencies 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.  The default value is 1000.
  
!     `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
            enabled, analysis for that function is retried without it,
            after removing all debug insns from 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.
  
!     `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
--- 9819,9868 ----
            building a pseudo-register conflict table.  The default value
            of the parameter is 2000.
  
!      '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.  The default value of the
!           parameter is 2, which is the minimal number of registers
            needed by typical instructions.  This value is the best found
            from numerous experiments.
  
!      '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 of the
            parameter is 40.  The 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.  The default value of the parameter is 1000
!           for '-O1' and 10000 for '-O2' and above.
  
!      'loop-max-datarefs-for-datadeps'
            Building data dapendencies 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.  The default value is 1000.
  
!      '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
            enabled, analysis for that function is retried without it,
            after removing all debug insns from 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.
  
!      '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
*** 9924,10159 ****
            compiler to find more complex debug expressions, but compile
            time and memory use may grow.  The default is 12.
  
!     `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-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.
  
!     `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.
  
!     `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.  The default value is 10 parameters.  A variable
!           whose value is unknown at compilation time and defined
!           outside a SCoP is a parameter of the SCoP.
  
!     `graphite-max-bbs-per-function'
            To avoid exponential effects in the detection of SCoPs, the
            size of the functions analyzed by Graphite is bounded.  The
            default value is 100 basic blocks.
  
!     `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.  The default value is 51 iterations.
  
!     `loop-unroll-jam-size'
!           Specify the unroll factor for the `-floop-unroll-and-jam'
            option.  The default value is 4.
  
!     `loop-unroll-jam-depth'
            Specify the dimension to be unrolled (counting from the most
!           inner loop) for the  `-floop-unroll-and-jam'.  The default
            value is 2.
  
!     `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-recursion-penalty'
            Percentage penalty the recursive functions will receive when
            they are evaluated for cloning.
  
!     `ipa-cp-single-call-penalty'
            Percentage penalty functions containg 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-cp-array-index-hint-bonus'
!           When IPA-CP determines that a cloning candidate would make
!           the index of an array access known, it adds a bonus of
!           `ipa-cp-array-index-hint-bonus' to the profitability score of
            the candidate.
  
!     `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.
  
!     `lto-partitions'
            Specify desired number of partitions produced during WHOPR
            compilation.  The number of partitions should exceed the
            number of CPUs used for compilation.  The default value is 32.
  
!     `lto-minpartition'
            Size of minimal partition for WHOPR (in estimated
!           instructions).  This prevents expenses of splitting very
!           small programs into too many partitions.
  
!     `cxx-max-namespaces-for-diagnostic-help'
            The maximum number of namespaces to consult for suggestions
            when C++ name lookup fails for an identifier.  The default is
            1000.
  
!     `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.  The default
!           value is 75.  A small positive 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 stores paires that can be
!           sunk.  Set to 0 if either vectorization (`-ftree-vectorize')
!           or if-conversion (`-ftree-loop-if-convert') is disabled.  The
            default is 2.
  
!     `allow-store-data-races'
            Allow optimizers to introduce new data races on stores.  Set
            to 1 to allow, otherwise to 0.  This option is enabled by
!           default at optimization level `-Ofast'.
  
!     `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.  The default is 0.
  
!     `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.c' 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 `-fsanitize=address' option.
!           To disable use-after-return detection use `--param
            asan-use-after-return=0'.
  
!     `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'.
  
!     `chkp-max-ctor-size'
            Static constructors generated by Pointer Bounds Checker may
            become very large and significantly increase compile time at
!           optimization level `-O1' and higher.  This parameter is a
            maximum nubmer of statements in a single generated
            constructor.  Default value is 5000.
  
!     `max-fsm-thread-path-insns'
!           Maximum number of instructions to copy when duplicating
!           blocks on a finite state automaton jump thread path.  The
!           default is 100.
  
!     `max-fsm-thread-length'
            Maximum number of basic blocks on a finite state automaton
            jump thread path.  The default is 10.
  
!     `max-fsm-thread-paths'
!           Maximum number of new jump thread paths to create for a
!           finite state automaton.  The default is 50.
! 
  
  
  File: gcc.info,  Node: Preprocessor Options,  Next: Assembler Options,  Prev: Optimize Options,  Up: Invoking GCC
--- 9872,10103 ----
            compiler to find more complex debug expressions, but compile
            time and memory use may grow.  The default is 12.
  
!      '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-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.
  
!      '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.
  
!      '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.  The default value is 10 parameters.  A variable
!           whose value is unknown at compilation time and defined outside
!           a SCoP is a parameter of the SCoP.
  
!      'graphite-max-bbs-per-function'
            To avoid exponential effects in the detection of SCoPs, the
            size of the functions analyzed by Graphite is bounded.  The
            default value is 100 basic blocks.
  
!      '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.  The default value is 51 iterations.
  
!      'loop-unroll-jam-size'
!           Specify the unroll factor for the '-floop-unroll-and-jam'
            option.  The default value is 4.
  
!      'loop-unroll-jam-depth'
            Specify the dimension to be unrolled (counting from the most
!           inner loop) for the '-floop-unroll-and-jam'.  The default
            value is 2.
  
!      '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-recursion-penalty'
            Percentage penalty the recursive functions will receive when
            they are evaluated for cloning.
  
!      'ipa-cp-single-call-penalty'
            Percentage penalty functions containg 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-cp-array-index-hint-bonus'
!           When IPA-CP determines that a cloning candidate would make the
!           index of an array access known, it adds a bonus of
!           'ipa-cp-array-index-hint-bonus' to the profitability score of
            the candidate.
  
!      '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.
  
!      'lto-partitions'
            Specify desired number of partitions produced during WHOPR
            compilation.  The number of partitions should exceed the
            number of CPUs used for compilation.  The default value is 32.
  
!      'lto-minpartition'
            Size of minimal partition for WHOPR (in estimated
!           instructions).  This prevents expenses of splitting very small
!           programs into too many partitions.
  
!      'cxx-max-namespaces-for-diagnostic-help'
            The maximum number of namespaces to consult for suggestions
            when C++ name lookup fails for an identifier.  The default is
            1000.
  
!      '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.  The default value is 75.
!           A small positive 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 stores paires that can be
!           sunk.  Set to 0 if either vectorization ('-ftree-vectorize')
!           or if-conversion ('-ftree-loop-if-convert') is disabled.  The
            default is 2.
  
!      'allow-store-data-races'
            Allow optimizers to introduce new data races on stores.  Set
            to 1 to allow, otherwise to 0.  This option is enabled by
!           default at optimization level '-Ofast'.
  
!      '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.  The
!           default is 0.
  
!      '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.c' 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 '-fsanitize=address' option.
!           To disable use-after-return detection use '--param
            asan-use-after-return=0'.
  
!      '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'.
  
!      'chkp-max-ctor-size'
            Static constructors generated by Pointer Bounds Checker may
            become very large and significantly increase compile time at
!           optimization level '-O1' and higher.  This parameter is a
            maximum nubmer of statements in a single generated
            constructor.  Default value is 5000.
  
!      'max-fsm-thread-path-insns'
!           Maximum number of instructions to copy when duplicating blocks
!           on a finite state automaton jump thread path.  The default is
!           100.
  
!      'max-fsm-thread-length'
            Maximum number of basic blocks on a finite state automaton
            jump thread path.  The default is 10.
  
!      'max-fsm-thread-paths'
!           Maximum number of new jump thread paths to create for a finite
!           state automaton.  The default is 50.
  
  
  File: gcc.info,  Node: Preprocessor Options,  Next: Assembler Options,  Prev: Optimize Options,  Up: Invoking GCC
*************** File: gcc.info,  Node: Preprocessor Opti
*** 10164,10213 ****
  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.
  
! `-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.
  
! `-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 will be truncated by embedded
!      newline characters.
  
       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
--- 10108,10157 ----
  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.
  
! '-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.
  
! '-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 will be truncated by embedded newline
!      characters.
  
       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
*************** cause the preprocessor output to be unsu
*** 10216,10289 ****
       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 will 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.
  
! `-U NAME'
!      Cancel any previous definition of NAME, either built in or
!      provided with a `-D' option.
  
! `-undef'
       Do not predefine any system-specific or GCC-specific macros.  The
       standard predefined macros remain defined.
  
! `-I DIR'
!      Add the directory DIR to the list of directories to be searched
!      for header files.  Directories named by `-I' are searched before
!      the standard system include directories.  If the directory DIR is
!      a standard system include directory, the option is ignored to
!      ensure that the default search order for system directories and
!      the special treatment of system headers are not defeated .  If DIR
!      begins with `=', then the `=' will be replaced by the sysroot
!      prefix; see `--sysroot' and `-isysroot'.
  
! `-o FILE'
       Write output to FILE.  This is the same as specifying FILE as the
!      second non-option argument to `cpp'.  `gcc' has a different
       interpretation of a second non-option argument, so you must use
!      `-o' to specify the output file.
  
! `-Wall'
       Turns on all optional warnings which are desirable for normal code.
!      At present this is `-Wcomment', `-Wtrigraphs', `-Wmultichar' and a
!      warning about integer promotion causing a change of sign in `#if'
       expressions.  Note that many of the preprocessor's warnings are on
       by default and have no options to control them.
  
! `-Wcomment'
! `-Wcomments'
!      Warn whenever a comment-start sequence `/*' appears in a `/*'
!      comment, or whenever a backslash-newline appears in a `//' comment.
       (Both forms have the same effect.)
  
! `-Wtrigraphs'
       Most trigraphs in comments cannot affect the meaning of the
       program.  However, a trigraph that would form an escaped newline
!      (`??/' at the end of a line) can, by changing where the comment
       begins or ends.  Therefore, only trigraphs that would form escaped
       newlines produce warnings inside a comment.
  
!      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'.
  
! `-Wtraditional'
       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 problematic constructs which
       should be avoided.
  
! `-Wundef'
       Warn whenever an identifier which is not a macro is encountered in
!      an `#if' directive, outside of `defined'.  Such identifiers are
       replaced with zero.
  
! `-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 will also warn if the macro has not been
--- 10160,10233 ----
       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 will 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.
  
! '-U NAME'
!      Cancel any previous definition of NAME, either built in or provided
!      with a '-D' option.
  
! '-undef'
       Do not predefine any system-specific or GCC-specific macros.  The
       standard predefined macros remain defined.
  
! '-I DIR'
!      Add the directory DIR to the list of directories to be searched for
!      header files.  Directories named by '-I' are searched before the
!      standard system include directories.  If the directory DIR is a
!      standard system include directory, the option is ignored to ensure
!      that the default search order for system directories and the
!      special treatment of system headers are not defeated .  If DIR
!      begins with '=', then the '=' will be replaced by the sysroot
!      prefix; see '--sysroot' and '-isysroot'.
  
! '-o FILE'
       Write output to FILE.  This is the same as specifying FILE as the
!      second non-option argument to 'cpp'.  'gcc' has a different
       interpretation of a second non-option argument, so you must use
!      '-o' to specify the output file.
  
! '-Wall'
       Turns on all optional warnings which are desirable for normal code.
!      At present this is '-Wcomment', '-Wtrigraphs', '-Wmultichar' and a
!      warning about integer promotion causing a change of sign in '#if'
       expressions.  Note that many of the preprocessor's warnings are on
       by default and have no options to control them.
  
! '-Wcomment'
! '-Wcomments'
!      Warn whenever a comment-start sequence '/*' appears in a '/*'
!      comment, or whenever a backslash-newline appears in a '//' comment.
       (Both forms have the same effect.)
  
! '-Wtrigraphs'
       Most trigraphs in comments cannot affect the meaning of the
       program.  However, a trigraph that would form an escaped newline
!      ('??/' at the end of a line) can, by changing where the comment
       begins or ends.  Therefore, only trigraphs that would form escaped
       newlines produce warnings inside a comment.
  
!      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'.
  
! '-Wtraditional'
       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 problematic constructs which
       should be avoided.
  
! '-Wundef'
       Warn whenever an identifier which is not a macro is encountered in
!      an '#if' directive, outside of 'defined'.  Such identifiers are
       replaced with zero.
  
! '-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 will also warn if the macro has not been
*************** cause the preprocessor output to be unsu
*** 10302,10310 ****
            #if defined the_macro_causing_the_warning
            #endif
  
! `-Wendif-labels'
!      Warn whenever an `#else' or an `#endif' are followed by text.
!      This usually happens in code of the form
  
            #if FOO
            ...
--- 10246,10254 ----
            #if defined the_macro_causing_the_warning
            #endif
  
! '-Wendif-labels'
!      Warn whenever an '#else' or an '#endif' are followed by text.  This
!      usually happens in code of the form
  
            #if FOO
            ...
*************** cause the preprocessor output to be unsu
*** 10312,10403 ****
            ...
            #endif FOO
  
!      The second and third `FOO' should be in comments, but often are not
       in older programs.  This warning is on by default.
  
! `-Werror'
       Make all warnings into hard errors.  Source code which triggers
       warnings will be rejected.
  
! `-Wsystem-headers'
       Issue warnings for code in system headers.  These are normally
       unhelpful in finding bugs in your own code, therefore suppressed.
       If you are responsible for the system library, you may want to see
       them.
  
! `-w'
       Suppress all warnings, including those which GNU CPP issues by
       default.
  
! `-pedantic'
!      Issue all the mandatory diagnostics listed in the C standard.
!      Some of them are left out by default, since they trigger
!      frequently on harmless code.
  
! `-pedantic-errors'
       Issue all the mandatory diagnostics, and make all mandatory
       diagnostics into errors.  This includes mandatory diagnostics that
!      GCC issues without `-pedantic' but treats as warnings.
  
! `-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 will still be 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 will appear in `-MM' dependency output.  This is a slight
       change in semantics from GCC versions 3.0 and earlier.
  
! `-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 have sent preprocessed
       output.
  
!      When used with the driver options `-MD' or `-MMD', `-MF' overrides
       the default dependency output file.
  
! `-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.
  
! `-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:
  
--- 10256,10347 ----
            ...
            #endif FOO
  
!      The second and third 'FOO' should be in comments, but often are not
       in older programs.  This warning is on by default.
  
! '-Werror'
       Make all warnings into hard errors.  Source code which triggers
       warnings will be rejected.
  
! '-Wsystem-headers'
       Issue warnings for code in system headers.  These are normally
       unhelpful in finding bugs in your own code, therefore suppressed.
       If you are responsible for the system library, you may want to see
       them.
  
! '-w'
       Suppress all warnings, including those which GNU CPP issues by
       default.
  
! '-pedantic'
!      Issue all the mandatory diagnostics listed in the C standard.  Some
!      of them are left out by default, since they trigger frequently on
!      harmless code.
  
! '-pedantic-errors'
       Issue all the mandatory diagnostics, and make all mandatory
       diagnostics into errors.  This includes mandatory diagnostics that
!      GCC issues without '-pedantic' but treats as warnings.
  
! '-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 will still be 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 will appear in '-MM' dependency output.  This is a slight
       change in semantics from GCC versions 3.0 and earlier.
  
! '-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 have sent preprocessed
       output.
  
!      When used with the driver options '-MD' or '-MMD', '-MF' overrides
       the default dependency output file.
  
! '-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.
  
! '-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:
  
*************** cause the preprocessor output to be unsu
*** 10405,10454 ****
  
            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 will set 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.
  
! `-fpch-deps'
       When using precompiled headers (*note Precompiled Headers::), this
       flag will cause the dependency-output flags to also list the files
       from the precompiled header's dependencies.  If not specified only
--- 10349,10400 ----
  
            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 will set 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.
  
! '-fpch-deps'
       When using precompiled headers (*note Precompiled Headers::), this
       flag will cause the dependency-output flags to also list the files
       from the precompiled header's dependencies.  If not specified only
*************** cause the preprocessor output to be unsu
*** 10456,10878 ****
       used to 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.
  
! `-x c'
! `-x c++'
! `-x objective-c'
! `-x assembler-with-cpp'
       Specify the source language: C, C++, Objective-C, or assembly.
!      This has nothing to do with standards conformance or extensions;
!      it merely selects which base syntax to expect.  If you give none
!      of these options, cpp will deduce the language from the extension
!      of the source file: `.c', `.cc', `.m', or `.S'.  Some other common
       extensions for C++ and assembly are also recognized.  If cpp does
       not recognize the extension, it will treat the file as C; this is
       the most generic mode.
  
!      _Note:_ Previous versions of cpp accepted a `-lang' option which
       selected both the language and the standards conformance level.
!      This option has been removed, because it conflicts with the `-l'
       option.
  
! `-std=STANDARD'
! `-ansi'
       Specify the standard to which the code should conform.  Currently
       CPP knows about C and C++ standards; others may be added in the
       future.
  
       STANDARD may be one of:
!     `c90'
!     `c89'
!     `iso9899:1990'
!           The ISO C standard from 1990.  `c90' is the customary
            shorthand for this version of the standard.
  
!           The `-ansi' option is equivalent to `-std=c90'.
  
!     `iso9899:199409'
            The 1990 C standard, as amended in 1994.
  
!     `iso9899:1999'
!     `c99'
!     `iso9899:199x'
!     `c9x'
            The revised ISO C standard, published in December 1999.
            Before publication, this was known as C9X.
  
!     `iso9899:2011'
!     `c11'
!     `c1x'
            The revised ISO C standard, published in December 2011.
            Before publication, this was known as C1X.
  
!     `gnu90'
!     `gnu89'
            The 1990 C standard plus GNU extensions.  This is the default.
  
!     `gnu99'
!     `gnu9x'
            The 1999 C standard plus GNU extensions.
  
!     `gnu11'
!     `gnu1x'
            The 2011 C standard plus GNU extensions.
  
!     `c++98'
            The 1998 ISO C++ standard plus amendments.
  
!     `gnu++98'
!           The same as `-std=c++98' plus GNU extensions.  This is the
            default for C++ code.
  
! `-I-'
!      Split the include path.  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"'.
       This option has been deprecated.
  
! `-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.
  
! `-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.)
  
! `-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'.
  
! `-idirafter DIR'
       Search DIR for header 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 `=' will be replaced by the sysroot
!      prefix; see `--sysroot' and `-isysroot'.
  
! `-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.
  
! `-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 `=' will be replaced by the sysroot prefix; see
!      `--sysroot' and `-isysroot'.
  
! `-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 `=' will be replaced
!      by the sysroot prefix; see `--sysroot' and `-isysroot'.
  
! `-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 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.
  
! `-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'.
  
! `-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.
  
! `-fdebug-cpp'
!      This option is only useful for debugging GCC.  When used with
!      `-E', dumps debugging information about location maps.  Every
!      token in the output is preceded by the dump of the map its location
!      belongs to.  The dump of the map holding the location of a token
!      would be:
!           {`P':`/file/path';`F':`/includer/path';`L':LINE_NUM;`C':COL_NUM;`S':SYSTEM_HEADER_P;`M':MAP_ADDRESS;`E':MACRO_EXPANSION_P,`loc':LOCATION}
  
!      When used without `-E', this option has no effect.
  
! `-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 just as if no `-ftrack-macro-expansion' was present on the
!      command line. 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.
  
! `-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 UTF-32 or UTF-16, whichever
!      corresponds to the width of `wchar_t'.  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
       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'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
       will let the compiler know the current working directory at the
       time of preprocessing.  When this option is enabled, the
       preprocessor will emit, after the initial linemarker, a second
       linemarker with the current working directory followed by two
       slashes.  GCC will use 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 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.
  
! `-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'.
  
! `-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.
  
! `-dCHARS'
!      CHARS is a sequence of one or more of the following characters,
!      and must not be preceded by a space.  Other characters are
!      interpreted by the compiler proper, or reserved for future
!      versions of GCC, and so are silently ignored.  If you specify
!      characters whose behavior conflicts, the result is undefined.
  
!     `M'
!           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
  
            will show all the predefined macros.
  
!           If you use `-dM' without the `-E' option, `-dM' is
!           interpreted as a synonym for `-fdump-rtl-mach'.  *Note
!           Debugging Options: (gcc)Debugging Options.
  
!     `D'
!           Like `M' 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.
  
!     `N'
!           Like `D', but emit only the macro names, not their expansions.
  
!     `I'
!           Output `#include' directives in addition to the result of
            preprocessing.
  
!     `U'
!           Like `D' 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.
  
! `-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.
  
! `-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.
  
! `-traditional-cpp'
       Try to imitate the behavior of old-fashioned C preprocessors, as
       opposed to ISO C preprocessors.
  
! `-trigraphs'
       Process trigraph sequences.  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.  By default, GCC ignores
       trigraphs, but in standard-conforming modes it converts them.  See
!      the `-std' and `-ansi' options.
  
       The nine trigraphs and their replacements are
  
            Trigraph:       ??(  ??)  ??<  ??>  ??=  ??/  ??'  ??!  ??-
            Replacement:      [    ]    {    }    #    \    ^    |    ~
  
! `-remap'
       Enable special code to work around file systems which only permit
       very short file names, such as MS-DOS.
  
! `--help'
! `--target-help'
       Print text describing all the command-line options instead of
       preprocessing anything.
  
! `-v'
       Verbose mode.  Print out GNU CPP's version number at the beginning
       of execution, and report the final form of the include path.
  
! `-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 `...!' .
  
! `-version'
! `--version'
       Print out GNU CPP's version number.  With one dash, proceed to
       preprocess as normal.  With two dashes, exit immediately.
  
--- 10402,10818 ----
       used to 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.
  
! '-x c'
! '-x c++'
! '-x objective-c'
! '-x assembler-with-cpp'
       Specify the source language: C, C++, Objective-C, or assembly.
!      This has nothing to do with standards conformance or extensions; it
!      merely selects which base syntax to expect.  If you give none of
!      these options, cpp will deduce the language from the extension of
!      the source file: '.c', '.cc', '.m', or '.S'.  Some other common
       extensions for C++ and assembly are also recognized.  If cpp does
       not recognize the extension, it will treat the file as C; this is
       the most generic mode.
  
!      _Note:_ Previous versions of cpp accepted a '-lang' option which
       selected both the language and the standards conformance level.
!      This option has been removed, because it conflicts with the '-l'
       option.
  
! '-std=STANDARD'
! '-ansi'
       Specify the standard to which the code should conform.  Currently
       CPP knows about C and C++ standards; others may be added in the
       future.
  
       STANDARD may be one of:
!      'c90'
!      'c89'
!      'iso9899:1990'
!           The ISO C standard from 1990.  'c90' is the customary
            shorthand for this version of the standard.
  
!           The '-ansi' option is equivalent to '-std=c90'.
  
!      'iso9899:199409'
            The 1990 C standard, as amended in 1994.
  
!      'iso9899:1999'
!      'c99'
!      'iso9899:199x'
!      'c9x'
            The revised ISO C standard, published in December 1999.
            Before publication, this was known as C9X.
  
!      'iso9899:2011'
!      'c11'
!      'c1x'
            The revised ISO C standard, published in December 2011.
            Before publication, this was known as C1X.
  
!      'gnu90'
!      'gnu89'
            The 1990 C standard plus GNU extensions.  This is the default.
  
!      'gnu99'
!      'gnu9x'
            The 1999 C standard plus GNU extensions.
  
!      'gnu11'
!      'gnu1x'
            The 2011 C standard plus GNU extensions.
  
!      'c++98'
            The 1998 ISO C++ standard plus amendments.
  
!      'gnu++98'
!           The same as '-std=c++98' plus GNU extensions.  This is the
            default for C++ code.
  
! '-I-'
!      Split the include path.  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"'.
       This option has been deprecated.
  
! '-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.
  
! '-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.)
  
! '-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'.
  
! '-idirafter DIR'
       Search DIR for header 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 '=' will be replaced by the sysroot
!      prefix; see '--sysroot' and '-isysroot'.
  
! '-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.
  
! '-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 '=' will be replaced by the sysroot prefix; see
!      '--sysroot' and '-isysroot'.
  
! '-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 '=' will be replaced by the sysroot
!      prefix; see '--sysroot' and '-isysroot'.
  
! '-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 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.
  
! '-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'.
  
! '-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.
  
! '-fdebug-cpp'
!      This option is only useful for debugging GCC. When used with '-E',
!      dumps debugging information about location maps.  Every token in
!      the output is preceded by the dump of the map its location belongs
!      to.  The dump of the map holding the location of a token would be:
!           {'P':/file/path;'F':/includer/path;'L':LINE_NUM;'C':COL_NUM;'S':SYSTEM_HEADER_P;'M':MAP_ADDRESS;'E':MACRO_EXPANSION_P,'loc':LOCATION}
  
!      When used without '-E', this option has no effect.
  
! '-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 just as if
!      no '-ftrack-macro-expansion' was present on the command line.
!      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.
  
! '-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 UTF-32 or UTF-16, whichever
!      corresponds to the width of 'wchar_t'.  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
       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'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
       will let the compiler know the current working directory at the
       time of preprocessing.  When this option is enabled, the
       preprocessor will emit, after the initial linemarker, a second
       linemarker with the current working directory followed by two
       slashes.  GCC will use 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 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.
  
! '-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'.
  
! '-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.
  
! '-dCHARS'
!      CHARS is a sequence of one or more of the following characters, and
!      must not be preceded by a space.  Other characters are interpreted
!      by the compiler proper, or reserved for future versions of GCC, and
!      so are silently ignored.  If you specify characters whose behavior
!      conflicts, the result is undefined.
  
!      'M'
!           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
  
            will show all the predefined macros.
  
!           If you use '-dM' without the '-E' option, '-dM' is interpreted
!           as a synonym for '-fdump-rtl-mach'.  *Note (gcc)Debugging
!           Options::.
  
!      'D'
!           Like 'M' 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.
  
!      'N'
!           Like 'D', but emit only the macro names, not their expansions.
  
!      'I'
!           Output '#include' directives in addition to the result of
            preprocessing.
  
!      'U'
!           Like 'D' 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.
  
! '-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.
  
! '-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.
  
! '-traditional-cpp'
       Try to imitate the behavior of old-fashioned C preprocessors, as
       opposed to ISO C preprocessors.
  
! '-trigraphs'
       Process trigraph sequences.  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.  By default, GCC ignores
       trigraphs, but in standard-conforming modes it converts them.  See
!      the '-std' and '-ansi' options.
  
       The nine trigraphs and their replacements are
  
            Trigraph:       ??(  ??)  ??<  ??>  ??=  ??/  ??'  ??!  ??-
            Replacement:      [    ]    {    }    #    \    ^    |    ~
  
! '-remap'
       Enable special code to work around file systems which only permit
       very short file names, such as MS-DOS.
  
! '--help'
! '--target-help'
       Print text describing all the command-line options instead of
       preprocessing anything.
  
! '-v'
       Verbose mode.  Print out GNU CPP's version number at the beginning
       of execution, and report the final form of the include path.
  
! '-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 '...!' .
  
! '-version'
! '--version'
       Print out GNU CPP's version number.  With one dash, proceed to
       preprocess as normal.  With two dashes, exit immediately.
  
*************** File: gcc.info,  Node: Assembler Options
*** 10884,10901 ****
  
  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
--- 10824,10840 ----
  
  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
*** 10907,11189 ****
  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::.
  
! `-fuse-ld=bfd'
!      Use the `bfd' linker instead of the default linker.
  
! `-fuse-ld=gold'
!      Use the `gold' linker 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.)
  
       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.
  
       The linker searches a standard list of directories for the library,
!      which is actually a file named `libLIBRARY.a'.  The linker then
       uses this file as if it had been specified precisely by name.
  
       The directories searched include several standard system
!      directories plus any that you specify with `-L'.
  
       Normally the files found this way are library files--archive files
!      whose members are object files.  The linker handles an archive
!      file by scanning through it for members which define symbols that
!      have so far been referenced but not defined.  But if the file that
!      is found is an ordinary object file, it is linked in the usual
!      fashion.  The only difference between using an `-l' option and
!      specifying a file name is that `-l' surrounds LIBRARY with `lib'
!      and `.a' and searches several directories.
  
! `-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' 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.
  
! `-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.)
  
! `-pie'
       Produce a 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.
  
! `-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 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++ and GCJ drivers automatically add
!      `-shared-libgcc' whenever you build a shared library or a main
!      executable, because C++ and Java 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++ or GCJ driver, as
       appropriate for the languages used in the program, 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-libmpx'
!      When the `-fcheck-pointer bounds' and `-mmpx' options are used to
       link a program, the GCC driver automatically links against
!      `libmpx'.  If `libmpx' is available as a shared library, and the
!      `-static' option is not used, then this links against the shared
!      version of `libmpx'.  The `-static-libmpx' option directs the GCC
!      driver to link `libmpx' statically, without necessarily linking
       other libraries statically.
  
! `-static-libmpxwrappers'
!      When the `-fcheck-pointer bounds' and `-mmpx' options are used to
!      link a program without also using `-fno-chkp-use-wrappers', the
!      GCC driver automatically links against `libmpxwrappers'.  If
!      `libmpxwrappers' is available as a shared library, and the
!      `-static' option is not used, then this links against the shared
!      version of `libmpxwrappers'.  The `-static-libmpxwrappers' option
!      directs the GCC driver to link `libmpxwrappers' 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.
--- 10846,11124 ----
  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::.
  
! '-fuse-ld=bfd'
!      Use the 'bfd' linker instead of the default linker.
  
! '-fuse-ld=gold'
!      Use the 'gold' linker 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.)
  
       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.
  
       The linker searches a standard list of directories for the library,
!      which is actually a file named 'libLIBRARY.a'.  The linker then
       uses this file as if it had been specified precisely by name.
  
       The directories searched include several standard system
!      directories plus any that you specify with '-L'.
  
       Normally the files found this way are library files--archive files
!      whose members are object files.  The linker handles an archive file
!      by scanning through it for members which define symbols that have
!      so far been referenced but not defined.  But if the file that is
!      found is an ordinary object file, it is linked in the usual
!      fashion.  The only difference between using an '-l' option and
!      specifying a file name is that '-l' surrounds LIBRARY with 'lib'
!      and '.a' and searches several directories.
  
! '-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' 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.
  
! '-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.)
  
! '-pie'
       Produce a 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.
  
! '-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 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++ and GCJ drivers automatically add
!      '-shared-libgcc' whenever you build a shared library or a main
!      executable, because C++ and Java 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++ or GCJ driver, as
       appropriate for the languages used in the program, 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-libmpx'
!      When the '-fcheck-pointer bounds' and '-mmpx' options are used to
       link a program, the GCC driver automatically links against
!      'libmpx'.  If 'libmpx' is available as a shared library, and the
!      '-static' option is not used, then this links against the shared
!      version of 'libmpx'.  The '-static-libmpx' option directs the GCC
!      driver to link 'libmpx' statically, without necessarily linking
       other libraries statically.
  
! '-static-libmpxwrappers'
!      When the '-fcheck-pointer bounds' and '-mmpx' options are used to
!      link a program without also using '-fno-chkp-use-wrappers', the GCC
!      driver automatically links against 'libmpxwrappers'.  If
!      'libmpxwrappers' is available as a shared library, and the
!      '-static' option is not used, then this links against the shared
!      version of 'libmpxwrappers'.  The '-static-libmpxwrappers' option
!      directs the GCC driver to link 'libmpxwrappers' 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.
*************** File: gcc.info,  Node: Directory Options
*** 11197,11331 ****
  These options specify directories to search for header files, for
  libraries and for parts of the compiler:
  
! `-IDIR'
       Add the directory DIR to the head of the list of directories to be
       searched for header files.  This can be used to override a system
!      header file, substituting your own version, since these
!      directories are searched before the 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).  If you use more than one `-I' option, the
!      directories are scanned in left-to-right order; the standard
!      system directories come after.
  
       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.
  
! `-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.
  
! `-iquoteDIR'
       Add the directory DIR to the head of the list of directories to be
!      searched for header files only for the case of `#include "FILE"';
!      they are not searched for `#include <FILE>', otherwise just like
!      `-I'.
  
! `-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/'
       (*note Target Options::).
  
       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.
  
! `-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.
  
! `--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.
  
! `-I-'
!      This option has been deprecated.  Please use `-iquote' instead for
!      `-I' directories before the `-I-' and remove the `-I-' option.
!      Any directories you specify with `-I' options before the `-I-'
!      option are searched only for the case of `#include "FILE"'; they
!      are not searched for `#include <FILE>'.
  
!      If additional directories are specified with `-I' options after
!      the `-I-' option, these directories are searched for all `#include'
!      directives.  (Ordinarily _all_ `-I' directories are used this way.)
  
!      In addition, the `-I-' option inhibits the use of the current
       directory (where the current input file came from) as the first
!      search directory for `#include "FILE"'.  There is no way to
!      override this effect of `-I-'.  With `-I.' you can specify
       searching the directory that is current when the compiler is
       invoked.  That is not exactly the same as what the preprocessor
       does by default, but it is often satisfactory.
  
!      `-I-' does not inhibit the use of the standard system directories
!      for header files.  Thus, `-I-' and `-nostdinc' are independent.
  
  
  File: gcc.info,  Node: Spec Files,  Next: Target Options,  Prev: Directory Options,  Up: Invoking GCC
--- 11132,11264 ----
  These options specify directories to search for header files, for
  libraries and for parts of the compiler:
  
! '-IDIR'
       Add the directory DIR to the head of the list of directories to be
       searched for header files.  This can be used to override a system
!      header file, substituting your own version, since these directories
!      are searched before the 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).  If
!      you use more than one '-I' option, the directories are scanned in
!      left-to-right order; the standard system directories come after.
  
       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.
  
! '-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.
  
! '-iquoteDIR'
       Add the directory DIR to the head of the list of directories to be
!      searched for header files only for the case of '#include "FILE"';
!      they are not searched for '#include <FILE>', otherwise just like
!      '-I'.
  
! '-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/'
       (*note Target Options::).
  
       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.
  
! '-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.
  
! '--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.
  
! '-I-'
!      This option has been deprecated.  Please use '-iquote' instead for
!      '-I' directories before the '-I-' and remove the '-I-' option.  Any
!      directories you specify with '-I' options before the '-I-' option
!      are searched only for the case of '#include "FILE"'; they are not
!      searched for '#include <FILE>'.
  
!      If additional directories are specified with '-I' options after the
!      '-I-' option, these directories are searched for all '#include'
!      directives.  (Ordinarily _all_ '-I' directories are used this way.)
  
!      In addition, the '-I-' option inhibits the use of the current
       directory (where the current input file came from) as the first
!      search directory for '#include "FILE"'.  There is no way to
!      override this effect of '-I-'.  With '-I.' you can specify
       searching the directory that is current when the compiler is
       invoked.  That is not exactly the same as what the preprocessor
       does by default, but it is often satisfactory.
  
!      '-I-' does not inhibit the use of the standard system directories
!      for header files.  Thus, '-I-' and '-nostdinc' are independent.
  
  
  File: gcc.info,  Node: Spec Files,  Next: Target Options,  Prev: Directory Options,  Up: Invoking GCC
*************** File: gcc.info,  Node: Spec Files,  Next
*** 11333,11371 ****
  3.15 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 plaintext 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
--- 11266,11302 ----
  3.15 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 plaintext 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
*** 11374,11384 ****
       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
--- 11305,11315 ----
       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
*** 11388,11404 ****
            .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:
--- 11319,11335 ----
            .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
*** 11406,11412 ****
  
            Says that .ZZ files are, in fact, C++ source files.
  
!     `#NAME'
            This causes an error messages saying:
  
                 NAME compiler not installed on this system.
--- 11337,11343 ----
  
            Says that .ZZ files are, in fact, C++ source files.
  
!      '#NAME'
            This causes an error messages saying:
  
                 NAME compiler not installed on this system.
*************** character on the line, which can be one
*** 11417,11423 ****
       effectively possible to override earlier entries using this
       technique.
  
- 
   GCC has the following spec strings built into it.  Spec files can
  override these strings or create their own.  Note that individual
  targets can also add their own spec strings to this list.
--- 11348,11353 ----
*************** targets can also add their own spec stri
*** 11433,11439 ****
       libgcc       Decides which GCC support library to pass to the linker
       linker       Sets the name of the linker
       predefines   Defines to be passed to the C preprocessor
!      signed_char  Defines to pass to CPP to say whether `char' is signed
                    by default
       startfile    Object files to include at the start of the link
  
--- 11363,11369 ----
       libgcc       Decides which GCC support library to pass to the linker
       linker       Sets the name of the linker
       predefines   Defines to be passed to the C preprocessor
!      signed_char  Defines to pass to CPP to say whether char is signed
                    by default
       startfile    Object files to include at the start of the link
  
*************** targets can also add their own spec stri
*** 11444,11736 ****
       *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.
  
! `%i'
       Substitute the name of the input file being processed.
  
! `%b'
!      Substitute the basename of the input file being processed.  This
!      is the substring up to (and not including) the last period and not
       including the directory.
  
! `%B'
!      This is the same as `%b', but include the file suffix (text after
       the last period).
  
! `%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 `f/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.
  
! `%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'.
  
! `%p'
       Substitutes the standard macro predefinitions for the current
!      target machine.  Use this when running `cpp'.
  
! `%P'
!      Like `%p', but puts `__' before and after the name of each
!      predefined macro, except for macros that start with `__' or with
!      `_L', where L is an uppercase letter.  This is for ISO C.
  
! `%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.
  
! `%(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 `-Wl' or a `%x'
       spec string.
  
! `%Y'
!      Output the accumulated assembler options specified by `-Wa'.
  
! `%Z'
!      Output the accumulated preprocessor options specified by `-Wp'.
  
! `%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.
  
! `%: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
!      is processed as if it had appeared literally as part of the
!      current spec.
  
       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:
  
                 *startfile:
                 crt0%O%s %:if-exists(crti%O%s) \
                 %:if-exists-else(crtbeginT%O%s crtbegin%O%s)
  
!     ``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)
  
!     ``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
--- 11374,11665 ----
       *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.
  
! '%i'
       Substitute the name of the input file being processed.
  
! '%b'
!      Substitute the basename of the input file being processed.  This is
!      the substring up to (and not including) the last period and not
       including the directory.
  
! '%B'
!      This is the same as '%b', but include the file suffix (text after
       the last period).
  
! '%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 'f/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.
  
! '%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'.
  
! '%p'
       Substitutes the standard macro predefinitions for the current
!      target machine.  Use this when running 'cpp'.
  
! '%P'
!      Like '%p', but puts '__' before and after the name of each
!      predefined macro, except for macros that start with '__' or with
!      '_L', where L is an uppercase letter.  This is for ISO C.
  
! '%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.
  
! '%(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 '-Wl' or a '%x'
       spec string.
  
! '%Y'
!      Output the accumulated assembler options specified by '-Wa'.
  
! '%Z'
!      Output the accumulated preprocessor options specified by '-Wp'.
  
! '%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.
  
! '%: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
!      is processed as if it had appeared literally as part of the current
!      spec.
  
       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:
  
                 *startfile:
                 crt0%O%s %:if-exists(crti%O%s) \
                 %:if-exists-else(crtbeginT%O%s crtbegin%O%s)
  
!      '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)
  
!      '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
*** 11739,11815 ****
                 Use "-Wa,OPTION" to pass "OPTION" to the assembler.
  
            It is used to separate compiler options from assembler options
!           in the `--target-help' output.
  
! `%{`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'*}'
       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.
  
       For example, a spec string like this:
  
--- 11668,11744 ----
                 Use "-Wa,OPTION" to pass "OPTION" to the assembler.
  
            It is used to separate compiler options from assembler options
!           in the '--target-help' output.
  
! '%{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*}'
       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.
  
       For example, a spec string like this:
  
*************** or combine them with constant text in a
*** 11823,11851 ****
            -d fred.c     -foo -baz -boggle
            -d jim.d      -bar -baz -boggle
  
! `%{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 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
--- 11752,11780 ----
            -d fred.c     -foo -baz -boggle
            -d jim.d      -bar -baz -boggle
  
! '%{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 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
*** 11855,11861 ****
  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.
  
--- 11784,11790 ----
  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.
  
*************** File: gcc.info,  Node: Target Options,
*** 11865,11872 ****
  3.16 Specifying Target Machine and Compiler Version
  ===================================================
  
! 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
  version other than the one that was installed last.
  
  
--- 11794,11801 ----
  3.16 Specifying Target Machine and Compiler Version
  ===================================================
  
! 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
  version other than the one that was installed last.
  
  
*************** File: gcc.info,  Node: Submodel Options,
*** 11876,11882 ****
  =======================================
  
  Each target machine types can have its own special options, starting
! with `-m', to choose among various hardware models or
  configurations--for example, 68010 vs 68020, floating coprocessor or
  none.  A single installed version of the compiler can compile for any
  model or configuration, according to the options specified.
--- 11805,11811 ----
  =======================================
  
  Each target machine types can have its own special options, starting
! with '-m', to choose among various hardware models or
  configurations--for example, 68010 vs 68020, floating coprocessor or
  none.  A single installed version of the compiler can compile for any
  model or configuration, according to the options specified.
*************** File: gcc.info,  Node: AArch64 Options,
*** 11953,12033 ****
  
  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
!      pointer are 32-bit, and `lp64' for SysV-like data model where int
!      is 32-bit, but long int and pointer are 64-bit.
  
       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.
  
! `-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 registers.
  
! `-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 1GB of each other.
       Pointers are 64 bits.  Programs can be statically or dynamically
       linked.  This model is not fully implemented and mostly treated as
!      `small'.
  
! `-mcmodel=small'
       Generate code for the small code model.  The program and its
       statically defined symbols must be within 4GB of each other.
       Pointers are 64 bits.  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.  Pointers are 64 bits.
       Programs can be statically linked only.
  
! `-mstrict-align'
       Do not assume that unaligned memory references are handled by the
       system.
  
! `-momit-leaf-frame-pointer'
! `-mno-omit-leaf-frame-pointer'
       Omit or keep the frame pointer in leaf functions.  The former
       behaviour is the default.
  
! `-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.
  
! `-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
       instructions.
  
! `-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.
  
! `-march=NAME'
!      Specify the name of the target architecture, optionally suffixed
!      by one or more feature modifiers.  This option has the form
!      `-march=ARCH{+[no]FEATURE}*', where the only permissible value for
!      ARCH is `armv8-a'.  The permissible values for FEATURE are
       documented in the sub-section below.
  
       Where conflicting feature modifiers are specified, the right-most
--- 11882,11962 ----
  
  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 pointer
!      are 32-bit, and 'lp64' for SysV-like data model where int is
!      32-bit, but long int and pointer are 64-bit.
  
       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.
  
! '-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 registers.
  
! '-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 1GB of each other.
       Pointers are 64 bits.  Programs can be statically or dynamically
       linked.  This model is not fully implemented and mostly treated as
!      'small'.
  
! '-mcmodel=small'
       Generate code for the small code model.  The program and its
       statically defined symbols must be within 4GB of each other.
       Pointers are 64 bits.  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.  Pointers are 64 bits.
       Programs can be statically linked only.
  
! '-mstrict-align'
       Do not assume that unaligned memory references are handled by the
       system.
  
! '-momit-leaf-frame-pointer'
! '-mno-omit-leaf-frame-pointer'
       Omit or keep the frame pointer in leaf functions.  The former
       behaviour is the default.
  
! '-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.
  
! '-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
       instructions.
  
! '-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.
  
! '-march=NAME'
!      Specify the name of the target architecture, optionally suffixed by
!      one or more feature modifiers.  This option has the form
!      '-march=ARCH{+[no]FEATURE}*', where the only permissible value for
!      ARCH is 'armv8-a'.  The permissible values for FEATURE are
       documented in the sub-section below.
  
       Where conflicting feature modifiers are specified, the right-most
*************** These options are defined for AArch64 im
*** 12036,12066 ****
       GCC uses this name to determine what kind of instructions it can
       emit when generating assembly code.
  
!      Where `-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-a53', `cortex-a57', `cortex-a72',
!      `exynos-m1', `thunderx', `xgene1'.
  
       Additionally, this option can specify that GCC should tune the
       performance of the code for a big.LITTLE system.  Permissible
!      values for this option are: `cortex-a57.cortex-a53',
!      `cortex-a72.cortex-a53'.
  
!      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 below.
--- 11965,11995 ----
       GCC uses this name to determine what kind of instructions it can
       emit when generating assembly code.
  
!      Where '-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-a53', 'cortex-a57', 'cortex-a72',
!      'exynos-m1', 'thunderx', 'xgene1'.
  
       Additionally, this option can specify that GCC should tune the
       performance of the code for a big.LITTLE system.  Permissible
!      values for this option are: 'cortex-a57.cortex-a53',
!      'cortex-a72.cortex-a53'.
  
!      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 below.
*************** These options are defined for AArch64 im
*** 12069,12099 ****
       feature is used.
  
       GCC uses this 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.
  
! 3.17.1.1 `-march' and `-mcpu' Feature Modifiers
  ...............................................
  
! Feature modifiers used with `-march' and `-mcpu' can be one the
  following:
  
! `crc'
       Enable CRC extension.
! 
! `crypto'
       Enable Crypto extension.  This implies Advanced SIMD is enabled.
! 
! `fp'
       Enable floating-point instructions.
! 
! `simd'
       Enable Advanced SIMD instructions.  This implies floating-point
       instructions are enabled.  This is the default for all current
!      possible values for options `-march' and `-mcpu='.
  
  
  File: gcc.info,  Node: Adapteva Epiphany Options,  Next: ARC Options,  Prev: AArch64 Options,  Up: Submodel Options
--- 11998,12025 ----
       feature is used.
  
       GCC uses this 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.
  
! 3.17.1.1 '-march' and '-mcpu' Feature Modifiers
  ...............................................
  
! Feature modifiers used with '-march' and '-mcpu' can be one the
  following:
  
! 'crc'
       Enable CRC extension.
! 'crypto'
       Enable Crypto extension.  This implies Advanced SIMD is enabled.
! 'fp'
       Enable floating-point instructions.
! 'simd'
       Enable Advanced SIMD instructions.  This implies floating-point
       instructions are enabled.  This is the default for all current
!      possible values for options '-march' and '-mcpu='.
  
  
  File: gcc.info,  Node: Adapteva Epiphany Options,  Next: ARC Options,  Prev: AArch64 Options,  Up: Submodel Options
*************** File: gcc.info,  Node: Adapteva Epiphany
*** 12101,12141 ****
  3.17.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'
       Preferrentially 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
--- 12027,12067 ----
  3.17.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'
       Preferrentially 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
*** 12143,12238 ****
       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 predominantly need at function start can make your programs
!      smaller and faster by avoiding unnecessary mode switches.
  
       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
!           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.
  
!     `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'
  
! `-mnosplit-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: ARC Options,  Next: ARM Options,  Prev: Adapteva Epiphany Options,  Up: Submodel Options
--- 12069,12162 ----
       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
!      predominantly need at function start can make your programs smaller
!      and faster by avoiding unnecessary mode switches.
  
       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
!           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.
  
!      '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'
  
! '-mnosplit-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: ARC Options,  Next: ARM Options,  Prev: Adapteva Epiphany Options,  Up: Submodel Options
*************** File: gcc.info,  Node: ARC Options,  Nex
*** 12240,12497 ****
  3.17.3 ARC Options
  ------------------
  
! 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' is in effect.
  
! `-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'.
  
! `-mdpfp'
! `-mdpfp-compact'
       FPX: Generate Double Precision FPX instructions, tuned for the
       compact implementation.
  
! `-mdpfp-fast'
       FPX: 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.  This is
!      always enabled for `-mcpu=ARC700'.
  
! `-mno-mpy'
       Do not generate mpy instructions for ARC700.
  
! `-mmul32x16'
       Generate 32x16 bit multiply and mac instructions.
  
! `-mmul64'
       Generate mul64 and mulu64 instructions.  Only valid for
!      `-mcpu=ARC600'.
  
! `-mnorm'
!      Generate norm instruction.  This is the default if `-mcpu=ARC700'
       is in effect.
  
! `-mspfp'
! `-mspfp-compact'
       FPX: Generate Single Precision FPX instructions, tuned for the
       compact implementation.
  
! `-mspfp-fast'
       FPX: 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.
  
- 
   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'.
  
! `-mdvbf'
       Passed down to the assembler to enable the dual viterbi butterfly
!      extension.  Also sets the preprocessor symbol `__Xdvbf'.
  
! `-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'.
  
! `-mmac-24'
       Passed down to the assembler.  Also sets the preprocessor symbol
!      `__Xxmac_24'.
  
! `-mrtsc'
       Passed down to the assembler to enable the 64-bit Time-Stamp
       Counter extension instruction.  Also sets the preprocessor symbol
!      `__Xrtsc'.
  
! `-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'.
  
! `-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'
       Explain what alignment considerations lead to the decision to make
       an instruction short or long.
  
- 
   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:
  
! `-mepilogue-cfi'
       Enable generation of call frame information for epilogues.
  
! `-mno-epilogue-cfi'
       Disable generation of call frame information for epilogues.
  
! `-mlong-calls'
       Generate call insns 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.
  
! `-mno-sdata'
       Do not generate sdata references.  This is the default for tool
!      chains built for `arc-linux-uclibc' and `arceb-linux-uclibc'
       targets.
  
! `-mucb-mcount'
!      Instrument with mcount calls as used in UCB code.  I.e. do the
       counting in the callee, not the caller.  By default ARC
       instrumentation counts in the caller.
  
! `-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'
       Do alignment optimizations for call instructions.
  
! `-mauto-modify-reg'
       Enable the use of pre/post modify with register displacement.
  
! `-mbbit-peephole'
       Enable bbit peephole2.
  
! `-mno-brcc'
!      This option disables a target-specific pass in `arc_reorg' to
!      generate `BRcc' instructions.  It has no effect on `BRcc'
       generation driven by the combiner pass.
  
! `-mcase-vector-pcrel'
       Use pc-relative switch case tables - this enables case table
!      shortening.  This is the default for `-Os'.
  
! `-mcompact-casesi'
!      Enable compact casesi pattern.  This is the default for `-Os'.
  
! `-mno-cond-exec'
       Disable ARCompact specific pass to generate conditional execution
       instructions.  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 generating 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
!      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.
  
! `-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'
       Enable Local Register Allocation.  This is still experimental for
       ARC, so by default the compiler uses standard reload (i.e.
!      `-mno-lra').
  
! `-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 regsiter priority for r0..r3 / r12..r15.
  
! `-mno-millicode'
!      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
--- 12164,12416 ----
  3.17.3 ARC Options
  ------------------
  
! 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' is in effect.
  
! '-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'.
  
! '-mdpfp'
! '-mdpfp-compact'
       FPX: Generate Double Precision FPX instructions, tuned for the
       compact implementation.
  
! '-mdpfp-fast'
       FPX: 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.  This is always enabled
!      for '-mcpu=ARC700'.
  
! '-mno-mpy'
       Do not generate mpy instructions for ARC700.
  
! '-mmul32x16'
       Generate 32x16 bit multiply and mac instructions.
  
! '-mmul64'
       Generate mul64 and mulu64 instructions.  Only valid for
!      '-mcpu=ARC600'.
  
! '-mnorm'
!      Generate norm instruction.  This is the default if '-mcpu=ARC700'
       is in effect.
  
! '-mspfp'
! '-mspfp-compact'
       FPX: Generate Single Precision FPX instructions, tuned for the
       compact implementation.
  
! '-mspfp-fast'
       FPX: 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.
  
   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'.
  
! '-mdvbf'
       Passed down to the assembler to enable the dual viterbi butterfly
!      extension.  Also sets the preprocessor symbol '__Xdvbf'.
  
! '-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'.
  
! '-mmac-24'
       Passed down to the assembler.  Also sets the preprocessor symbol
!      '__Xxmac_24'.
  
! '-mrtsc'
       Passed down to the assembler to enable the 64-bit Time-Stamp
       Counter extension instruction.  Also sets the preprocessor symbol
!      '__Xrtsc'.
  
! '-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'.
  
! '-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'
       Explain what alignment considerations lead to the decision to make
       an instruction short or long.
  
   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:
  
! '-mepilogue-cfi'
       Enable generation of call frame information for epilogues.
  
! '-mno-epilogue-cfi'
       Disable generation of call frame information for epilogues.
  
! '-mlong-calls'
       Generate call insns 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.
  
! '-mno-sdata'
       Do not generate sdata references.  This is the default for tool
!      chains built for 'arc-linux-uclibc' and 'arceb-linux-uclibc'
       targets.
  
! '-mucb-mcount'
!      Instrument with mcount calls as used in UCB code.  I.e.  do the
       counting in the callee, not the caller.  By default ARC
       instrumentation counts in the caller.
  
! '-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'
       Do alignment optimizations for call instructions.
  
! '-mauto-modify-reg'
       Enable the use of pre/post modify with register displacement.
  
! '-mbbit-peephole'
       Enable bbit peephole2.
  
! '-mno-brcc'
!      This option disables a target-specific pass in 'arc_reorg' to
!      generate 'BRcc' instructions.  It has no effect on 'BRcc'
       generation driven by the combiner pass.
  
! '-mcase-vector-pcrel'
       Use pc-relative switch case tables - this enables case table
!      shortening.  This is the default for '-Os'.
  
! '-mcompact-casesi'
!      Enable compact casesi pattern.  This is the default for '-Os'.
  
! '-mno-cond-exec'
       Disable ARCompact specific pass to generate conditional execution
       instructions.  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 generating 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 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.
  
! '-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'
       Enable Local Register Allocation.  This is still experimental for
       ARC, so by default the compiler uses standard reload (i.e.
!      '-mno-lra').
  
! '-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 regsiter priority for r0..r3 / r12..r15.
  
! '-mno-millicode'
!      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.
*** 12499,12636 ****
       nonstandard way, this option is provided to turn off millicode call
       generation.
  
! `-mmixed-code'
       Tweak register allocation to help 16-bit instruction generation.
!      This generally has the effect of decreasing the average
!      instruction size while increasing the instruction count.
  
! `-mq-class'
       Enable 'q' instruction alternatives.  This is the default for
!      `-Os'.
  
! `-mRcq'
!      Enable Rcq constraint handling - most short code generation
!      depends on this.  This is the default.
  
! `-mRcw'
       Enable Rcw constraint handling - ccfsm condexec mostly depends on
       this.  This is the default.
  
! `-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.
  
! 
! `-mmultcost=NUM'
!      Cost to assume for a multiply instruction, with `4' being equal to
       a normal instruction.
  
! `-munalign-prob-threshold=PROBABILITY'
!      Set probability threshold for unaligning branches.  When tuning
!      for `ARC700' and optimizing for speed, branches without filled
!      delay slot are preferably emitted unaligned and long, unless
!      profiling indicates that the probability for the branch to be taken
!      is below PROBABILITY.  *Note Cross-profiling::.  The default is
       (REG_BR_PROB_BASE/2), i.e. 5000.
  
- 
   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.  Users wanting big-endian code, should use the
!      `arceb-elf32' and `arceb-linux-uclibc' targets when building the
       tool chain, for which big-endian is the default.
  
! `-mlittle-endian'
! `-EL'
       Compile code for little endian targets.  Use of these options is
       now deprecated.  Users wanting little-endian code should use the
!      `arc-elf32' and `arc-linux-uclibc' targets when building the tool
       chain, 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
--- 12418,12551 ----
       nonstandard way, this option is provided to turn off millicode call
       generation.
  
! '-mmixed-code'
       Tweak register allocation to help 16-bit instruction generation.
!      This generally has the effect of decreasing the average instruction
!      size while increasing the instruction count.
  
! '-mq-class'
       Enable 'q' instruction alternatives.  This is the default for
!      '-Os'.
  
! '-mRcq'
!      Enable Rcq constraint handling - most short code generation depends
!      on this.  This is the default.
  
! '-mRcw'
       Enable Rcw constraint handling - ccfsm condexec mostly depends on
       this.  This is the default.
  
! '-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.
  
! '-mmultcost=NUM'
!      Cost to assume for a multiply instruction, with '4' being equal to
       a normal instruction.
  
! '-munalign-prob-threshold=PROBABILITY'
!      Set probability threshold for unaligning branches.  When tuning for
!      'ARC700' and optimizing for speed, branches without filled delay
!      slot are preferably emitted unaligned and long, unless profiling
!      indicates that the probability for the branch to be taken is below
!      PROBABILITY.  *Note Cross-profiling::.  The default is
       (REG_BR_PROB_BASE/2), i.e. 5000.
  
   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.  Users wanting big-endian code, should use the
!      'arceb-elf32' and 'arceb-linux-uclibc' targets when building the
       tool chain, for which big-endian is the default.
  
! '-mlittle-endian'
! '-EL'
       Compile code for little endian targets.  Use of these options is
       now deprecated.  Users wanting little-endian code should use the
!      'arc-elf32' and 'arc-linux-uclibc' targets when building the tool
       chain, 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
*** 12638,12685 ****
  3.17.4 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.
  
--- 12553,12600 ----
  3.17.4 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
*** 12688,12876 ****
       you must compile your entire program with the same ABI, and link
       with a compatible set of libraries.
  
! `-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.
  
! `-march=NAME'
       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:
!      `armv2', `armv2a', `armv3', `armv3m', `armv4', `armv4t', `armv5',
!      `armv5t', `armv5e', `armv5te', `armv6', `armv6j', `armv6t2',
!      `armv6z', `armv6zk', `armv6-m', `armv7', `armv7-a', `armv7-r',
!      `armv7-m', `armv7e-m', `armv7ve', `armv8-a', `armv8-a+crc',
!      `iwmmxt', `iwmmxt2', `ep9312'.
  
!      `-march=armv7ve' is the armv7-a architecture with virtualization
       extensions.
  
!      `-march=armv8-a+crc' enables code generation for the ARMv8-A
       architecture together with the optional CRC32 extensions.
  
!      `-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.
  
! `-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: `arm2', `arm250', `arm3', `arm6',
!      `arm60', `arm600', `arm610', `arm620', `arm7', `arm7m', `arm7d',
!      `arm7dm', `arm7di', `arm7dmi', `arm70', `arm700', `arm700i',
!      `arm710', `arm710c', `arm7100', `arm720', `arm7500', `arm7500fe',
!      `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', `cortex-a5', `cortex-a7', `cortex-a8', `cortex-a9',
!      `cortex-a12', `cortex-a15', `cortex-a53', `cortex-a57',
!      `cortex-a72', `cortex-r4', `cortex-r4f', `cortex-r5', `cortex-r7',
!      `cortex-m7', `cortex-m4', `cortex-m3', `cortex-m1', `cortex-m0',
!      `cortex-m0plus', `cortex-m1.small-multiply',
!      `cortex-m0.small-multiply', `cortex-m0plus.small-multiply',
!      `exynos-m1', `marvell-pj4', `xscale', `iwmmxt', `iwmmxt2',
!      `ep9312', `fa526', `fa626', `fa606te', `fa626te', `fmp626',
!      `fa726te', `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-a57.cortex-a53',
!      `cortex-a72.cortex-a53'.
  
!      `-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
       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.
  
!      `-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'
!      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.
  
       Permissible names for this option are the same as those for
!      `-mtune'.
  
!      `-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.
  
! `-mfpu=NAME'
!      This specifies what floating-point hardware (or hardware
!      emulation) is available on the target.  Permissible names are:
!      `vfp', `vfpv3', `vfpv3-fp16', `vfpv3-d16', `vfpv3-d16-fp16',
!      `vfpv3xd', `vfpv3xd-fp16', `neon', `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'.
  
!      If `-msoft-float' is specified this specifies the format of
       floating-point values.
  
       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.
  
! `-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.
!      For the COFF targeted toolchain the default value is 8.  A value
!      of 64 is only allowed if the underlying ABI supports it.
  
!      Specifying a larger number can produce faster, more efficient
!      code, but can also increase the size of the program.  Different
!      values are potentially incompatible.  Code compiled with one value
!      cannot necessarily expect to work with code or libraries compiled
!      with another value, if they exchange information using structures
!      or unions.
  
! `-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
!      target function lies outside of the 64-megabyte addressing range
!      of the offset-based version of subroutine call instruction.
  
       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 each data segments are relative to text segment at
!      load time.  Therefore, it permits addressing data using
!      PC-relative operations.  This option is on by default for targets
!      other than VxWorks RTP.
  
! `-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:
--- 12603,12790 ----
       you must compile your entire program with the same ABI, and link
       with a compatible set of libraries.
  
! '-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.
  
! '-march=NAME'
       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:
!      'armv2', 'armv2a', 'armv3', 'armv3m', 'armv4', 'armv4t', 'armv5',
!      'armv5t', 'armv5e', 'armv5te', 'armv6', 'armv6j', 'armv6t2',
!      'armv6z', 'armv6zk', 'armv6-m', 'armv7', 'armv7-a', 'armv7-r',
!      'armv7-m', 'armv7e-m', 'armv7ve', 'armv8-a', 'armv8-a+crc',
!      'iwmmxt', 'iwmmxt2', 'ep9312'.
  
!      '-march=armv7ve' is the armv7-a architecture with virtualization
       extensions.
  
!      '-march=armv8-a+crc' enables code generation for the ARMv8-A
       architecture together with the optional CRC32 extensions.
  
!      '-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.
  
! '-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: 'arm2', 'arm250', 'arm3', 'arm6',
!      'arm60', 'arm600', 'arm610', 'arm620', 'arm7', 'arm7m', 'arm7d',
!      'arm7dm', 'arm7di', 'arm7dmi', 'arm70', 'arm700', 'arm700i',
!      'arm710', 'arm710c', 'arm7100', 'arm720', 'arm7500', 'arm7500fe',
!      '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', 'cortex-a5', 'cortex-a7', 'cortex-a8', 'cortex-a9',
!      'cortex-a12', 'cortex-a15', 'cortex-a53', 'cortex-a57',
!      'cortex-a72', 'cortex-r4', 'cortex-r4f', 'cortex-r5', 'cortex-r7',
!      'cortex-m7', 'cortex-m4', 'cortex-m3', 'cortex-m1', 'cortex-m0',
!      'cortex-m0plus', 'cortex-m1.small-multiply',
!      'cortex-m0.small-multiply', 'cortex-m0plus.small-multiply',
!      'exynos-m1', 'marvell-pj4', 'xscale', 'iwmmxt', 'iwmmxt2',
!      'ep9312', 'fa526', 'fa626', 'fa606te', 'fa626te', 'fmp626',
!      'fa726te', '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-a57.cortex-a53',
!      'cortex-a72.cortex-a53'.
  
!      '-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
       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.
  
!      '-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'
!      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.
  
       Permissible names for this option are the same as those for
!      '-mtune'.
  
!      '-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.
  
! '-mfpu=NAME'
!      This specifies what floating-point hardware (or hardware emulation)
!      is available on the target.  Permissible names are: 'vfp', 'vfpv3',
!      'vfpv3-fp16', 'vfpv3-d16', 'vfpv3-d16-fp16', 'vfpv3xd',
!      'vfpv3xd-fp16', 'neon', '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'.
  
!      If '-msoft-float' is specified this specifies the format of
       floating-point values.
  
       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.
  
! '-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.
!      For the COFF targeted toolchain the default value is 8.  A value of
!      64 is only allowed if the underlying ABI supports it.
  
!      Specifying a larger number can produce faster, more efficient code,
!      but can also increase the size of the program.  Different values
!      are potentially incompatible.  Code compiled with one value cannot
!      necessarily expect to work with code or libraries compiled with
!      another value, if they exchange information using structures or
!      unions.
  
! '-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
!      target function lies outside of the 64-megabyte addressing range of
!      the offset-based version of subroutine call instruction.
  
       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 each data segments are relative to text segment at load
!      time.  Therefore, it permits addressing data using PC-relative
!      operations.  This option is on by default for targets other than
!      VxWorks RTP.
  
! '-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
*** 12886,12963 ****
                     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.
  
! `-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 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.
  
! `-mtp=NAME'
!      Specify the access model for the thread local storage pointer.
!      The valid models are `soft', which generates calls to
!      `__aeabi_read_tp', `cp15', which fetches the thread pointer from
!      `cp15' directly (supported in the arm6k architecture), and `auto',
       which 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.
  
! `-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.
  
! `-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 and all ARMv6-M
--- 12800,12878 ----
                     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.
  
! '-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
!      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.
  
! '-mtp=NAME'
!      Specify the access model for the thread local storage pointer.  The
!      valid models are 'soft', which generates calls to
!      '__aeabi_read_tp', 'cp15', which fetches the thread pointer from
!      'cp15' directly (supported in the arm6k architecture), and 'auto',
       which 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.
  
! '-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.
  
! '-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 and all ARMv6-M
*************** These `-m' options are defined for the A
*** 12965,13000 ****
       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'
!      Enables using Neon to handle scalar 64-bits operations. This is
       disabled by default since the cost of moving data from core
       registers to Neon is high.
  
! `-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.
  
! `-masm-syntax-unified'
       Assume inline assembler is using unified asm syntax.  The default
       is currently off which implies divided syntax.  Currently this
       option is available only for Thumb1 and has no effect on ARM state
       and 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.
       IT blocks can only contain a single 16-bit instruction from a
!      select set of instructions. This option is on by default for ARMv8
       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
--- 12880,12915 ----
       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'
!      Enables using Neon to handle scalar 64-bits operations.  This is
       disabled by default since the cost of moving data from core
       registers to Neon is high.
  
! '-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.
  
! '-masm-syntax-unified'
       Assume inline assembler is using unified asm syntax.  The default
       is currently off which implies divided syntax.  Currently this
       option is available only for Thumb1 and has no effect on ARM state
       and 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.
       IT blocks can only contain a single 16-bit instruction from a
!      select set of instructions.  This option is on by default for ARMv8
       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
*************** File: gcc.info,  Node: AVR Options,  Nex
*** 13008,13152 ****
  
  These options are defined for AVR implementations:
  
! `-mmcu=MCU'
       Specify Atmel AVR instruction set architectures (ISA) or MCU type.
  
!      The default for this option is `avr2'.
  
       GCC supports the following AVR devices and ISAs:
  
!     `avr2'
            "Classic" devices with up to 8 KiB of program memory.
!           MCU = `attiny22', `attiny26', `at90c8534', `at90s2313',
!           `at90s2323', `at90s2333', `at90s2343', `at90s4414',
!           `at90s4433', `at90s4434', `at90s8515', `at90s8535'.
  
!     `avr25'
            "Classic" devices with up to 8 KiB of program memory and with
!           the `MOVW' instruction.
!           MCU = `ata5272', `ata6616c', `attiny13', `attiny13a',
!           `attiny2313', `attiny2313a', `attiny24', `attiny24a',
!           `attiny25', `attiny261', `attiny261a', `attiny43u',
!           `attiny4313', `attiny44', `attiny44a', `attiny441',
!           `attiny45', `attiny461', `attiny461a', `attiny48',
!           `attiny828', `attiny84', `attiny84a', `attiny841',
!           `attiny85', `attiny861', `attiny861a', `attiny87',
!           `attiny88', `at86rf401'.
  
!     `avr3'
!           "Classic" devices with 16 KiB up to 64 KiB of  program memory.
!           MCU = `at43usb355', `at76c711'.
  
!     `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 = `ata5505', `ata6617c', `ata664251', `atmega16u2',
!           `atmega32u2', `atmega8u2', `attiny1634', `attiny167',
!           `at90usb162', `at90usb82'.
  
!     `avr4'
            "Enhanced" devices with up to 8 KiB of program memory.
!           MCU = `ata6285', `ata6286', `ata6289', `ata6612c',
!           `atmega48', `atmega48a', `atmega48p', `atmega48pa',
!           `atmega8', `atmega8a', `atmega8hva', `atmega8515',
!           `atmega8535', `atmega88', `atmega88a', `atmega88p',
!           `atmega88pa', `at90pwm1', `at90pwm2', `at90pwm2b',
!           `at90pwm3', `at90pwm3b', `at90pwm81'.
  
!     `avr5'
            "Enhanced" devices with 16 KiB up to 64 KiB of program memory.
-           MCU = `ata5702m322', `ata5782', `ata5790', `ata5790n',
-           `ata5795', `ata5831', `ata6613c', `ata6614q', `atmega16',
-           `atmega16a', `atmega16hva', `atmega16hva2', `atmega16hvb',
-           `atmega16hvbrevb', `atmega16m1', `atmega16u4', `atmega161',
-           `atmega162', `atmega163', `atmega164a', `atmega164p',
-           `atmega164pa', `atmega165', `atmega165a', `atmega165p',
-           `atmega165pa', `atmega168', `atmega168a', `atmega168p',
-           `atmega168pa', `atmega169', `atmega169a', `atmega169p',
-           `atmega169pa', `atmega32', `atmega32a', `atmega32c1',
-           `atmega32hvb', `atmega32hvbrevb', `atmega32m1', `atmega32u4',
-           `atmega32u6', `atmega323', `atmega324a', `atmega324p',
-           `atmega324pa', `atmega325', `atmega325a', `atmega325p',
-           `atmega325pa', `atmega3250', `atmega3250a', `atmega3250p',
-           `atmega3250pa', `atmega328', `atmega328p', `atmega329',
-           `atmega329a', `atmega329p', `atmega329pa', `atmega3290',
-           `atmega3290a', `atmega3290p', `atmega3290pa', `atmega406',
-           `atmega64', `atmega64a', `atmega64c1', `atmega64hve',
-           `atmega64hve2', `atmega64m1', `atmega64rfr2', `atmega640',
-           `atmega644', `atmega644a', `atmega644p', `atmega644pa',
-           `atmega644rfr2', `atmega645', `atmega645a', `atmega645p',
-           `atmega6450', `atmega6450a', `atmega6450p', `atmega649',
-           `atmega649a', `atmega649p', `atmega6490', `atmega6490a',
-           `atmega6490p', `at90can32', `at90can64', `at90pwm161',
-           `at90pwm216', `at90pwm316', `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 = `atxmega16a4', `atxmega16a4u', `atxmega16c4',
!           `atxmega16d4', `atxmega16e5', `atxmega32a4', `atxmega32a4u',
!           `atxmega32c3', `atxmega32c4', `atxmega32d3', `atxmega32d4',
!           `atxmega32e5', `atxmega8e5'.
  
!     `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'.
  
!     `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'
            "TINY" Tiny core devices with 512 B up to 4 KiB of program
            memory.
!           MCU = `attiny10', `attiny20', `attiny4', `attiny40',
!           `attiny5', `attiny9'.
  
!     `avr1'
            This ISA is implemented by the minimal AVR core and supported
            for assembler only.
!           MCU = `attiny11', `attiny12', `attiny15', `attiny28',
!           `at90s1200'.
! 
  
! `-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
--- 12923,13066 ----
  
  These options are defined for AVR implementations:
  
! '-mmcu=MCU'
       Specify Atmel AVR instruction set architectures (ISA) or MCU type.
  
!      The default for this option is 'avr2'.
  
       GCC supports the following AVR devices and ISAs:
  
!      'avr2'
            "Classic" devices with up to 8 KiB of program memory.
!           MCU = 'attiny22', 'attiny26', 'at90c8534', 'at90s2313',
!           'at90s2323', 'at90s2333', 'at90s2343', 'at90s4414',
!           'at90s4433', 'at90s4434', 'at90s8515', 'at90s8535'.
  
!      'avr25'
            "Classic" devices with up to 8 KiB of program memory and with
!           the 'MOVW' instruction.
!           MCU = 'ata5272', 'ata6616c', 'attiny13', 'attiny13a',
!           'attiny2313', 'attiny2313a', 'attiny24', 'attiny24a',
!           'attiny25', 'attiny261', 'attiny261a', 'attiny43u',
!           'attiny4313', 'attiny44', 'attiny44a', 'attiny441',
!           'attiny45', 'attiny461', 'attiny461a', 'attiny48',
!           'attiny828', 'attiny84', 'attiny84a', 'attiny841', 'attiny85',
!           'attiny861', 'attiny861a', 'attiny87', 'attiny88',
!           'at86rf401'.
  
!      'avr3'
!           "Classic" devices with 16 KiB up to 64 KiB of program memory.
!           MCU = 'at43usb355', 'at76c711'.
  
!      '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 = 'ata5505', 'ata6617c', 'ata664251', 'atmega16u2',
!           'atmega32u2', 'atmega8u2', 'attiny1634', 'attiny167',
!           'at90usb162', 'at90usb82'.
  
!      'avr4'
            "Enhanced" devices with up to 8 KiB of program memory.
!           MCU = 'ata6285', 'ata6286', 'ata6289', 'ata6612c', 'atmega48',
!           'atmega48a', 'atmega48p', 'atmega48pa', 'atmega8', 'atmega8a',
!           'atmega8hva', 'atmega8515', 'atmega8535', 'atmega88',
!           'atmega88a', 'atmega88p', 'atmega88pa', 'at90pwm1',
!           'at90pwm2', 'at90pwm2b', 'at90pwm3', 'at90pwm3b', 'at90pwm81'.
  
!      'avr5'
            "Enhanced" devices with 16 KiB up to 64 KiB of program memory.
  
!           MCU = 'ata5702m322', 'ata5782', 'ata5790', 'ata5790n',
!           'ata5795', 'ata5831', 'ata6613c', 'ata6614q', 'atmega16',
!           'atmega16a', 'atmega16hva', 'atmega16hva2', 'atmega16hvb',
!           'atmega16hvbrevb', 'atmega16m1', 'atmega16u4', 'atmega161',
!           'atmega162', 'atmega163', 'atmega164a', 'atmega164p',
!           'atmega164pa', 'atmega165', 'atmega165a', 'atmega165p',
!           'atmega165pa', 'atmega168', 'atmega168a', 'atmega168p',
!           'atmega168pa', 'atmega169', 'atmega169a', 'atmega169p',
!           'atmega169pa', 'atmega32', 'atmega32a', 'atmega32c1',
!           'atmega32hvb', 'atmega32hvbrevb', 'atmega32m1', 'atmega32u4',
!           'atmega32u6', 'atmega323', 'atmega324a', 'atmega324p',
!           'atmega324pa', 'atmega325', 'atmega325a', 'atmega325p',
!           'atmega325pa', 'atmega3250', 'atmega3250a', 'atmega3250p',
!           'atmega3250pa', 'atmega328', 'atmega328p', 'atmega329',
!           'atmega329a', 'atmega329p', 'atmega329pa', 'atmega3290',
!           'atmega3290a', 'atmega3290p', 'atmega3290pa', 'atmega406',
!           'atmega64', 'atmega64a', 'atmega64c1', 'atmega64hve',
!           'atmega64hve2', 'atmega64m1', 'atmega64rfr2', 'atmega640',
!           'atmega644', 'atmega644a', 'atmega644p', 'atmega644pa',
!           'atmega644rfr2', 'atmega645', 'atmega645a', 'atmega645p',
!           'atmega6450', 'atmega6450a', 'atmega6450p', 'atmega649',
!           'atmega649a', 'atmega649p', 'atmega6490', 'atmega6490a',
!           'atmega6490p', 'at90can32', 'at90can64', 'at90pwm161',
!           'at90pwm216', 'at90pwm316', '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 = 'atxmega16a4', 'atxmega16a4u', 'atxmega16c4',
!           'atxmega16d4', 'atxmega16e5', 'atxmega32a4', 'atxmega32a4u',
!           'atxmega32c3', 'atxmega32c4', 'atxmega32d3', 'atxmega32d4',
!           'atxmega32e5', 'atxmega8e5'.
  
!      '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'.
  
!      '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'
            "TINY" Tiny core devices with 512 B up to 4 KiB of program
            memory.
!           MCU = 'attiny10', 'attiny20', 'attiny4', 'attiny40',
!           'attiny5', 'attiny9'.
  
!      'avr1'
            This ISA is implemented by the minimal AVR core and supported
            for assembler only.
!           MCU = 'attiny11', 'attiny12', 'attiny15', 'attiny28',
!           'at90s1200'.
  
! '-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
*************** These options are defined for AVR implem
*** 13154,13245 ****
  
       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 to be removed from the
!      stack after such a function call.
  
       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.
  
! `-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.
  
! `-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.
  
! `-mn-flash=NUM'
       Assume that the flash memory has a size of NUM times 64 KiB.
  
! `-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
       generated by the compiler is the same, but the instructions in the
       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.
  
! `-mrmw'
       Assume that the device supports the Read-Modify-Write instructions
!      `XCH', `LAC', `LAS' and `LAT'.
  
! `-msp8'
       Treat the stack pointer register as an 8-bit register, i.e. assume
       the high byte of the stack pointer is zero.  In general, you don't
       need to set this option by hand.
  
       This option is used internally by the compiler to select and build
!      multilibs for architectures `avr2' and `avr25'.  These
!      architectures mix devices with and without `SPH'.  For any setting
!      other than `-mmcu=avr2' or `-mmcu=avr25' the compiler driver adds
       or removes this option from the compiler proper's command line,
       because the compiler then knows if the device or architecture has
!      an 8-bit stack pointer and thus no `SPH' register or not.
  
! `-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
  
! `-mtiny-stack'
       Only change the lower 8 bits of the stack pointer.
  
! `-nodevicelib'
!      Don't link against AVR-LibC's device specific library `libdev.a'.
  
! `-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.
  
! 3.17.5.1 `EIND' and Devices with More Than 128 Ki Bytes of Flash
  ................................................................
  
  Pointers in the implementation are 16 bits wide.  The address of a
--- 13068,13163 ----
  
       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 to be removed from the stack
!      after such a function call.
  
       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.
  
! '-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.
  
! '-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.
  
! '-mn-flash=NUM'
       Assume that the flash memory has a size of NUM times 64 KiB.
  
! '-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
       generated by the compiler is the same, but the instructions in the
       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.
  
! '-mrmw'
       Assume that the device supports the Read-Modify-Write instructions
!      'XCH', 'LAC', 'LAS' and 'LAT'.
  
! '-msp8'
       Treat the stack pointer register as an 8-bit register, i.e. assume
       the high byte of the stack pointer is zero.  In general, you don't
       need to set this option by hand.
  
       This option is used internally by the compiler to select and build
!      multilibs for architectures 'avr2' and 'avr25'.  These
!      architectures mix devices with and without 'SPH'.  For any setting
!      other than '-mmcu=avr2' or '-mmcu=avr25' the compiler driver adds
       or removes this option from the compiler proper's command line,
       because the compiler then knows if the device or architecture has
!      an 8-bit stack pointer and thus no 'SPH' register or not.
  
! '-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
  
! '-mtiny-stack'
       Only change the lower 8 bits of the stack pointer.
  
! '-nodevicelib'
!      Don't link against AVR-LibC's device specific library 'lib<mcu>.a'.
  
! '-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.
! 
! 3.17.5.1 '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
*** 13248,13297 ****
  
   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' implicitely 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 (http://nongnu.org/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>
  
--- 13166,13215 ----
  
   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' implicitely 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 (http://nongnu.org/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>
  
*************** the compiler and are subject to some lim
*** 13303,13337 ****
                              "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:
  
--- 13221,13250 ----
                              "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:
  
*************** the compiler and are subject to some lim
*** 13342,13348 ****
            }
  
       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)
            {
--- 13255,13261 ----
            }
  
       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)
            {
*************** the compiler and are subject to some lim
*** 13352,13391 ****
                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.17.5.2 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 contentent 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.17.5.3 AVR Built-in Macros
  ............................
--- 13265,13303 ----
                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.17.5.2 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 contentent 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.17.5.3 AVR Built-in Macros
  ............................
*************** together with direct addressing.
*** 13393,13523 ****
  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', `104', `105', `106', `107'
  
!      for MCU=`avrtiny', `avrxmega2', `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_XMEGA__'
       The device / architecture belongs to the XMEGA family of devices.
  
! `__AVR_HAVE_ELPM__'
!      The device has the the `ELPM' instruction.
  
! `__AVR_HAVE_ELPMX__'
!      The device has the `ELPM RN,Z' and `ELPM RN,Z+' instructions.
  
! `__AVR_HAVE_MOVW__'
!      The device has the `MOVW' instruction to perform 16-bit
       register-register moves.
  
! `__AVR_HAVE_LPMX__'
!      The device has the `LPM RN,Z' and `LPM RN,Z+' instructions.
  
! `__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 at least 16 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.
  
! `__WITH_AVRLIBC__'
       The compiler is configured to be used together with AVR-Libc.  See
!      the `--with-avrlibc' configure option.
! 
  
  
  File: gcc.info,  Node: Blackfin Options,  Next: C6X Options,  Prev: AVR Options,  Up: Submodel Options
--- 13305,13434 ----
  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', '104', '105', '106', '107'
  
!      for MCU='avrtiny', 'avrxmega2', '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_XMEGA__'
       The device / architecture belongs to the XMEGA family of devices.
  
! '__AVR_HAVE_ELPM__'
!      The device has the the 'ELPM' instruction.
  
! '__AVR_HAVE_ELPMX__'
!      The device has the 'ELPM RN,Z' and 'ELPM RN,Z+' instructions.
  
! '__AVR_HAVE_MOVW__'
!      The device has the 'MOVW' instruction to perform 16-bit
       register-register moves.
  
! '__AVR_HAVE_LPMX__'
!      The device has the 'LPM RN,Z' and 'LPM RN,Z+' instructions.
  
! '__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 at least 16 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.
  
! '__WITH_AVRLIBC__'
       The compiler is configured to be used together with AVR-Libc.  See
!      the '--with-avrlibc' configure option.
  
  
  File: gcc.info,  Node: Blackfin Options,  Next: C6X Options,  Prev: AVR Options,  Up: Submodel Options
*************** File: gcc.info,  Node: Blackfin Options,
*** 13525,13645 ****
  3.17.6 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.
!      The option `-fomit-frame-pointer' removes the frame pointer for
!      all functions, which might make debugging harder.
  
! `-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.
  
! `-mlow-64k'
       When enabled, the compiler is free to take advantage of the
       knowledge that the entire program fits into the low 64k of memory.
  
! `-mno-low-64k'
       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
--- 13436,13555 ----
  3.17.6 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.
!      The option '-fomit-frame-pointer' removes the frame pointer for all
!      functions, which might make debugging harder.
  
! '-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.
  
! '-mlow-64k'
       When enabled, the compiler is free to take advantage of the
       knowledge that the entire program fits into the low 64k of memory.
  
! '-mno-low-64k'
       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,
*** 13647,13702 ****
       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
--- 13557,13612 ----
       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
*** 13708,13747 ****
  3.17.7 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: CR16 Options,  Prev: C6X Options,  Up: Submodel Options
--- 13618,13657 ----
  3.17.7 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: CR16 Options,  Prev: C6X Options,  Up: Submodel Options
*************** File: gcc.info,  Node: CRIS Options,  Ne
*** 13751,13850 ****
  
  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' except for
!      cris-axis-linux-gnu, where the default is `v10'.
  
! `-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 active 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
!      code: no warnings or errors are generated when call-saved
!      registers must be saved, or storage for local variables needs to
!      be allocated.
  
! `-mno-gotplt'
! `-mgotplt'
!      With `-fpic' and `-fPIC', don't generate (do generate) instruction
       sequences that load addresses for functions from the PLT part of
       the GOT rather than (traditional on other architectures) calls to
!      the PLT.  The default is `-mgotplt'.
  
! `-melf'
       Legacy no-op option only recognized with the cris-axis-elf and
       cris-axis-linux-gnu targets.
  
! `-mlinux'
       Legacy no-op option only recognized with the cris-axis-linux-gnu
       target.
  
! `-sim'
       This option, recognized for the cris-axis-elf, 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.
  
  
--- 13661,13759 ----
  
  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' except for
!      cris-axis-linux-gnu, where the default is 'v10'.
  
! '-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 active 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
!      code: no warnings or errors are generated when call-saved registers
!      must be saved, or storage for local variables needs to be
!      allocated.
  
! '-mno-gotplt'
! '-mgotplt'
!      With '-fpic' and '-fPIC', don't generate (do generate) instruction
       sequences that load addresses for functions from the PLT part of
       the GOT rather than (traditional on other architectures) calls to
!      the PLT.  The default is '-mgotplt'.
  
! '-melf'
       Legacy no-op option only recognized with the cris-axis-elf and
       cris-axis-linux-gnu targets.
  
! '-mlinux'
       Legacy no-op option only recognized with the cris-axis-linux-gnu
       target.
  
! '-sim'
       This option, recognized for the cris-axis-elf, 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: CR16 Options,  Ne
*** 13855,13883 ****
  
  These options are defined specifically for the CR16 ports.
  
! `-mmac'
!      Enable the use of multiply-accumulate instructions. Disabled by
       default.
  
! `-mcr16cplus'
! `-mcr16c'
!      Generate code for CR16C or CR16C+ architecture. CR16C+ architecture
!      is default.
  
! `-msim'
       Links the library libsim.a which is in compatible with simulator.
       Applicable to ELF compiler only.
  
! `-mint32'
       Choose integer type as 32-bit wide.
  
! `-mbit-ops'
!      Generates `sbit'/`cbit' instructions for bit manipulations.
  
! `-mdata-model=MODEL'
!      Choose a data model. The choices for MODEL are `near', `far' or
!      `medium'. `medium' is default.  However, `far' is not valid with
!      `-mcr16c', as the CR16C architecture does not support the far data
       model.
  
  
--- 13764,13792 ----
  
  These options are defined specifically for the CR16 ports.
  
! '-mmac'
!      Enable the use of multiply-accumulate instructions.  Disabled by
       default.
  
! '-mcr16cplus'
! '-mcr16c'
!      Generate code for CR16C or CR16C+ architecture.  CR16C+
!      architecture is default.
  
! '-msim'
       Links the library libsim.a which is in compatible with simulator.
       Applicable to ELF compiler only.
  
! '-mint32'
       Choose integer type as 32-bit wide.
  
! '-mbit-ops'
!      Generates 'sbit'/'cbit' instructions for bit manipulations.
  
! '-mdata-model=MODEL'
!      Choose a data model.  The choices for MODEL are 'near', 'far' or
!      'medium'.  'medium' is default.  However, 'far' is not valid with
!      '-mcr16c', as the CR16C architecture does not support the far data
       model.
  
  
*************** operating system.
*** 13891,13929 ****
  
   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
--- 13800,13838 ----
  
   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
*************** the executable the most restrictive subt
*** 13931,14081 ****
       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.
  
! `-mmacosx-version-min=VERSION'
!      The earliest version of MacOS X that this executable will run on
!      is VERSION.  Typical values of VERSION include `10.1', `10.2', and
!      `10.3.9'.
  
       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.
  
! `-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.
  
--- 13840,13990 ----
       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.
  
! '-mmacosx-version-min=VERSION'
!      The earliest version of MacOS X that this executable will run on is
!      VERSION.  Typical values of VERSION include '10.1', '10.2', and
!      '10.3.9'.
  
       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.
  
! '-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
*** 14085,14227 ****
  3.17.11 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
!      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.
  
       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
!      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:
  
!     `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
       and generates code to load it from the data segment at run time.
  
--- 13994,14136 ----
  3.17.11 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
!      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.
  
       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
!      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:
  
!      '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
       and generates code to load it from the data segment at run time.
  
*************** These `-m' options are defined for the D
*** 14234,14372 ****
       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.
  
! `-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
       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.
  
! `-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
!      processor you specify.  If you do not specify a processor type,
!      GCC defaults to the processor on which the compiler was built.
  
       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 the size of the external cache on the machine.
  
       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
            memory.  Note that L3 is only valid for EV5.
  
- 
  
  File: gcc.info,  Node: FR30 Options,  Next: FRV Options,  Prev: DEC Alpha Options,  Up: Submodel Options
  
--- 14143,14280 ----
       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.
  
! '-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
       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.
  
! '-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
!      processor you specify.  If you do not specify a processor type, GCC
!      defaults to the processor on which the compiler was built.
  
       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
!      the size of the external cache on the machine.
  
       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
            memory.  Note that L3 is only valid for EV5.
  
  
  File: gcc.info,  Node: FR30 Options,  Next: FRV Options,  Prev: DEC Alpha Options,  Up: Submodel Options
  
*************** File: gcc.info,  Node: FR30 Options,  Ne
*** 14375,14607 ****
  
  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: FRV Options,  Next: GNU/Linux Options,  Prev: FR30 Options,  Up: Submodel Options
  
  3.17.13 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
--- 14283,14560 ----
  
  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: FRV Options,  Next: GNU/Linux Options,  Prev: FR30 Options,  Up: Submodel Options
  
  3.17.13 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
*** 14609,14691 ****
  3.17.14 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*' and `*-*-linux-*android*' targets.
  
! `-muclibc'
!      Use uClibc C library.  This is the default on `*-*-linux-*uclibc*'
       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,  Next: HPPA Options,  Prev: GNU/Linux Options,  Up: Submodel Options
  
  3.17.15 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.
  
--- 14562,14643 ----
  3.17.14 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*' and '*-*-linux-*android*' targets.
  
! '-muclibc'
!      Use uClibc C library.  This is the default on '*-*-linux-*uclibc*'
       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,  Next: HPPA Options,  Prev: GNU/Linux Options,  Up: Submodel Options
  
  3.17.15 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
*** 14695,14835 ****
  3.17.16 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.
  
! `-mjump-in-delay'
       This option is ignored and provided for compatibility purposes
       only.
  
! `-mdisable-fpregs'
       Prevent floating-point registers from being used in any manner.
       This is necessary for compiling kernels that perform lazy context
       switching of floating-point registers.  If you use this option and
       attempt to perform floating-point operations, the compiler aborts.
  
! `-mdisable-indexing'
       Prevent the compiler from using indexing address modes.  This
       avoids some rather obscure problems when compiling MIG generated
       code under MACH.
  
! `-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.
  
! `-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.
  
! `-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.
  
! `-mportable-runtime'
       Use the portable calling conventions proposed by HP for ELF
       systems.
  
! `-mgas'
       Enable the use of assembler directives only GAS understands.
  
! `-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'.
  
! `-mlinker-opt'
       Enable the optimization pass in the HP-UX linker.  Note this makes
!      symbolic debugging impossible.  It also triggers a bug in the
!      HP-UX 8 and HP-UX 9 linkers in which they give bogus error
!      messages when linking some programs.
  
! `-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 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.
  
!      `-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.
  
! `-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.
  
! `-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*'.
  
! `-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 to the beginning 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.
  
       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
--- 14647,14787 ----
  3.17.16 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.
  
! '-mjump-in-delay'
       This option is ignored and provided for compatibility purposes
       only.
  
! '-mdisable-fpregs'
       Prevent floating-point registers from being used in any manner.
       This is necessary for compiling kernels that perform lazy context
       switching of floating-point registers.  If you use this option and
       attempt to perform floating-point operations, the compiler aborts.
  
! '-mdisable-indexing'
       Prevent the compiler from using indexing address modes.  This
       avoids some rather obscure problems when compiling MIG generated
       code under MACH.
  
! '-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.
  
! '-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.
  
! '-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.
  
! '-mportable-runtime'
       Use the portable calling conventions proposed by HP for ELF
       systems.
  
! '-mgas'
       Enable the use of assembler directives only GAS understands.
  
! '-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'.
  
! '-mlinker-opt'
       Enable the optimization pass in the HP-UX linker.  Note this makes
!      symbolic debugging impossible.  It also triggers a bug in the HP-UX
!      8 and HP-UX 9 linkers in which they give bogus error messages when
!      linking some programs.
  
! '-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
!      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.
  
!      '-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.
  
! '-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.
  
! '-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*'.
  
! '-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
!      to the beginning 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.
  
       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
*** 14843,14892 ****
       However, an indirect call is used on 32-bit ELF systems in pic code
       and it is quite long.
  
! `-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
!      behavior of the C library.  Thus, _extreme_ care is needed in
!      using this option.
  
       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.
--- 14795,14844 ----
       However, an indirect call is used on 32-bit ELF systems in pic code
       and it is quite long.
  
! '-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
!      behavior of the C library.  Thus, _extreme_ care is needed in using
!      this option.
  
       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
*** 14897,15161 ****
  3.17.17 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 2 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 is 'disable'.
  
! `-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 is 'enable'.
  
! `-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 is
       'disable'.
  
! `-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
!      is 'enable'.
  
! `-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
!      is 'enable'.
  
! `-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 is 'enable'.
  
! `-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
!      is 'disable'.
  
! `-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 is 'disable'.
  
! `-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 is 'disable'.
  
! `-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
       still be scheduled.
  
- 
  
  File: gcc.info,  Node: LM32 Options,  Next: M32C Options,  Prev: IA-64 Options,  Up: Submodel Options
  
  3.17.18 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: M32C Options,  Next: M32R/D Options,  Prev: LM32 Options,  Up: Submodel Options
  
  3.17.19 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 generating programs that will run on real hardware; you must
       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
--- 14849,15111 ----
  3.17.17 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 2 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 is 'disable'.
  
! '-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 is 'enable'.
  
! '-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 is
       'disable'.
  
! '-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 is
!      'enable'.
  
! '-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 is
!      'enable'.
  
! '-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 is 'enable'.
  
! '-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 is
!      'disable'.
  
! '-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 is 'disable'.
  
! '-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 is 'disable'.
  
! '-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
       still be scheduled.
  
  
  File: gcc.info,  Node: LM32 Options,  Next: M32C Options,  Prev: IA-64 Options,  Up: Submodel Options
  
  3.17.18 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: M32C Options,  Next: M32R/D Options,  Prev: LM32 Options,  Up: Submodel Options
  
  3.17.19 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
!      generating programs that will run on real hardware; you must
       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: M32C Options,  Ne
*** 15165,15514 ****
       that, you must not use this option with GCC's default runtime
       libraries.
  
- 
  
  File: gcc.info,  Node: M32R/D Options,  Next: M680x0 Options,  Prev: M32C Options,  Up: Submodel Options
  
  3.17.20 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,  Next: MCore Options,  Prev: M32R/D Options,  Up: Submodel Options
  
  3.17.21 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.
--- 15115,15458 ----
       that, you must not use this option with GCC's default runtime
       libraries.
  
  
  File: gcc.info,  Node: M32R/D Options,  Next: M680x0 Options,  Prev: M32C Options,  Up: Submodel Options
  
  3.17.20 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,  Next: MCore Options,  Prev: M32R/D Options,  Up: Submodel Options
  
  3.17.21 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.
*** 15518,15595 ****
       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.
  
! `-mno-rtd'
!      Do not use the calling conventions selected by `-mrtd'.  This is
       the default.
  
! `-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.
  
! `-mpcrel'
       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
--- 15462,15539 ----
       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.
  
! '-mno-rtd'
!      Do not use the calling conventions selected by '-mrtd'.  This is
       the default.
  
! '-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.
  
! '-mpcrel'
       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.
*** 15598,15805 ****
  
            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.
  
- 
  
  File: gcc.info,  Node: MCore Options,  Next: MeP Options,  Prev: M680x0 Options,  Up: Submodel Options
  
  3.17.22 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
       also trigger a segmentation fault if the stack is extended too
       much.  The default value is 0x1000.
  
- 
  
  File: gcc.info,  Node: MeP Options,  Next: MicroBlaze Options,  Prev: MCore Options,  Up: Submodel Options
  
  3.17.23 MeP Options
  -------------------
  
! `-mabsdiff'
!      Enables the `abs' instruction, which is the absolute difference
       between two registers.
  
! `-mall-opts'
       Enables all the optional instructions--average, multiply, divide,
       bit operations, leading zero, absolute difference, min/max, clip,
       and saturation.
  
! `-maverage'
!      Enables the `ave' instruction, which computes the average of two
       registers.
  
! `-mbased=N'
!      Variables of size N bytes or smaller are placed in the `.based'
!      section by default.  Based variables use the `$tp' register as a
!      base register, and there is a 128-byte limit to the `.based'
       section.
  
! `-mbitops'
!      Enables the bit operation instructions--bit test (`btstm'), set
!      (`bsetm'), clear (`bclrm'), invert (`bnotm'), and test-and-set
!      (`tas').
  
! `-mc=NAME'
       Selects which section constant data is placed in.  NAME may be
!      `tiny', `near', or `far'.
  
! `-mclip'
!      Enables the `clip' instruction.  Note that `-mclip' is not useful
!      unless you also provide `-mminmax'.
  
! `-mconfig=NAME'
       Selects one of the built-in core configurations.  Each MeP chip has
!      one or more modules in it; each module has a core CPU and a
!      variety of coprocessors, optional instructions, and peripherals.
!      The `MeP-Integrator' tool, not part of GCC, provides these
       configurations through this option; using this option is the same
       as using all the corresponding command-line options.  The default
!      configuration is `default'.
  
! `-mcop'
       Enables the coprocessor instructions.  By default, this is a 32-bit
       coprocessor.  Note that the coprocessor is normally enabled via the
!      `-mconfig=' option.
  
! `-mcop32'
       Enables the 32-bit coprocessor's instructions.
  
! `-mcop64'
       Enables the 64-bit coprocessor's instructions.
  
! `-mivc2'
       Enables IVC2 scheduling.  IVC2 is a 64-bit VLIW coprocessor.
  
! `-mdc'
!      Causes constant variables to be placed in the `.near' section.
  
! `-mdiv'
!      Enables the `div' and `divu' instructions.
  
! `-meb'
       Generate big-endian code.
  
! `-mel'
       Generate little-endian code.
  
! `-mio-volatile'
!      Tells the compiler that any variable marked with the `io'
!      attribute is to be considered volatile.
  
! `-ml'
!      Causes variables to be assigned to the `.far' section by default.
  
! `-mleadz'
!      Enables the `leadz' (leading zero) instruction.
  
! `-mm'
!      Causes variables to be assigned to the `.near' section by default.
  
! `-mminmax'
!      Enables the `min' and `max' instructions.
  
! `-mmult'
       Enables the multiplication and multiply-accumulate instructions.
  
! `-mno-opts'
!      Disables all the optional instructions enabled by `-mall-opts'.
  
! `-mrepeat'
!      Enables the `repeat' and `erepeat' instructions, used for
       low-overhead looping.
  
! `-ms'
!      Causes all variables to default to the `.tiny' section.  Note that
       there is a 65536-byte limit to this section.  Accesses to these
!      variables use the `%gp' base register.
  
! `-msatur'
       Enables the saturation instructions.  Note that the compiler does
       not currently generate these itself, but this option is included
!      for compatibility with other tools, like `as'.
  
! `-msdram'
       Link the SDRAM-based runtime instead of the default ROM-based
       runtime.
  
! `-msim'
       Link the simulator run-time libraries.
  
! `-msimnovec'
       Link the simulator runtime libraries, excluding built-in support
       for reset and exception vectors and tables.
  
! `-mtf'
!      Causes all functions to default to the `.far' section.  Without
!      this option, functions default to the `.near' section.
! 
! `-mtiny=N'
!      Variables that are N bytes or smaller are allocated to the `.tiny'
!      section.  These variables use the `$gp' base register.  The
!      default for this option is 4, but note that there's a 65536-byte
!      limit to the `.tiny' section.
  
  
  
  File: gcc.info,  Node: MicroBlaze Options,  Next: MIPS Options,  Prev: MeP Options,  Up: Submodel Options
--- 15542,15746 ----
  
            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.
  
  
  File: gcc.info,  Node: MCore Options,  Next: MeP Options,  Prev: M680x0 Options,  Up: Submodel Options
  
  3.17.22 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
       also trigger a segmentation fault if the stack is extended too
       much.  The default value is 0x1000.
  
  
  File: gcc.info,  Node: MeP Options,  Next: MicroBlaze Options,  Prev: MCore Options,  Up: Submodel Options
  
  3.17.23 MeP Options
  -------------------
  
! '-mabsdiff'
!      Enables the 'abs' instruction, which is the absolute difference
       between two registers.
  
! '-mall-opts'
       Enables all the optional instructions--average, multiply, divide,
       bit operations, leading zero, absolute difference, min/max, clip,
       and saturation.
  
! '-maverage'
!      Enables the 'ave' instruction, which computes the average of two
       registers.
  
! '-mbased=N'
!      Variables of size N bytes or smaller are placed in the '.based'
!      section by default.  Based variables use the '$tp' register as a
!      base register, and there is a 128-byte limit to the '.based'
       section.
  
! '-mbitops'
!      Enables the bit operation instructions--bit test ('btstm'), set
!      ('bsetm'), clear ('bclrm'), invert ('bnotm'), and test-and-set
!      ('tas').
  
! '-mc=NAME'
       Selects which section constant data is placed in.  NAME may be
!      'tiny', 'near', or 'far'.
  
! '-mclip'
!      Enables the 'clip' instruction.  Note that '-mclip' is not useful
!      unless you also provide '-mminmax'.
  
! '-mconfig=NAME'
       Selects one of the built-in core configurations.  Each MeP chip has
!      one or more modules in it; each module has a core CPU and a variety
!      of coprocessors, optional instructions, and peripherals.  The
!      'MeP-Integrator' tool, not part of GCC, provides these
       configurations through this option; using this option is the same
       as using all the corresponding command-line options.  The default
!      configuration is 'default'.
  
! '-mcop'
       Enables the coprocessor instructions.  By default, this is a 32-bit
       coprocessor.  Note that the coprocessor is normally enabled via the
!      '-mconfig=' option.
  
! '-mcop32'
       Enables the 32-bit coprocessor's instructions.
  
! '-mcop64'
       Enables the 64-bit coprocessor's instructions.
  
! '-mivc2'
       Enables IVC2 scheduling.  IVC2 is a 64-bit VLIW coprocessor.
  
! '-mdc'
!      Causes constant variables to be placed in the '.near' section.
  
! '-mdiv'
!      Enables the 'div' and 'divu' instructions.
  
! '-meb'
       Generate big-endian code.
  
! '-mel'
       Generate little-endian code.
  
! '-mio-volatile'
!      Tells the compiler that any variable marked with the 'io' attribute
!      is to be considered volatile.
  
! '-ml'
!      Causes variables to be assigned to the '.far' section by default.
  
! '-mleadz'
!      Enables the 'leadz' (leading zero) instruction.
  
! '-mm'
!      Causes variables to be assigned to the '.near' section by default.
  
! '-mminmax'
!      Enables the 'min' and 'max' instructions.
  
! '-mmult'
       Enables the multiplication and multiply-accumulate instructions.
  
! '-mno-opts'
!      Disables all the optional instructions enabled by '-mall-opts'.
  
! '-mrepeat'
!      Enables the 'repeat' and 'erepeat' instructions, used for
       low-overhead looping.
  
! '-ms'
!      Causes all variables to default to the '.tiny' section.  Note that
       there is a 65536-byte limit to this section.  Accesses to these
!      variables use the '%gp' base register.
  
! '-msatur'
       Enables the saturation instructions.  Note that the compiler does
       not currently generate these itself, but this option is included
!      for compatibility with other tools, like 'as'.
  
! '-msdram'
       Link the SDRAM-based runtime instead of the default ROM-based
       runtime.
  
! '-msim'
       Link the simulator run-time libraries.
  
! '-msimnovec'
       Link the simulator runtime libraries, excluding built-in support
       for reset and exception vectors and tables.
  
! '-mtf'
!      Causes all functions to default to the '.far' section.  Without
!      this option, functions default to the '.near' section.
  
+ '-mtiny=N'
+      Variables that are N bytes or smaller are allocated to the '.tiny'
+      section.  These variables use the '$gp' base register.  The default
+      for this option is 4, but note that there's a 65536-byte limit to
+      the '.tiny' section.
  
  
  File: gcc.info,  Node: MicroBlaze Options,  Next: MIPS Options,  Prev: MeP Options,  Up: Submodel Options
*************** File: gcc.info,  Node: MicroBlaze Option
*** 15807,15898 ****
  3.17.24 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', `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'.
! 
  
  
  File: gcc.info,  Node: MIPS Options,  Next: MMIX Options,  Prev: MicroBlaze Options,  Up: Submodel Options
--- 15748,15838 ----
  3.17.24 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', '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'.
  
  
  File: gcc.info,  Node: MIPS Options,  Next: MMIX Options,  Prev: MicroBlaze Options,  Up: Submodel Options
*************** File: gcc.info,  Node: MIPS Options,  Ne
*** 15900,16130 ****
  3.17.25 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', `loongson2e', `loongson2f', `loongson3a',
!      `m4k', `m14k', `m14kc', `m14ke', `m14kec', `octeon', `octeon+',
!      `octeon2', `octeon3', `orion', `p5600', `r2000', `r3000', `r3900',
!      `r4000', `r4400', `r4600', `r4650', `r4700', `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.
  
! `-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
!      `http://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.
  
--- 15840,16066 ----
  3.17.25 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', 'loongson2e', 'loongson2f', 'loongson3a', 'm4k',
!      'm14k', 'm14kc', 'm14ke', 'm14kec', 'octeon', 'octeon+', 'octeon2',
!      'octeon3', 'orion', 'p5600', 'r2000', 'r3000', 'r3900', 'r4000',
!      'r4400', 'r4600', 'r4650', 'r4700', '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.
  
! '-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
!      <http://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
*** 16135,16418 ****
  
            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 signalling 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 Application Specific
       instructions.
  
! `-mxpa'
! `-mno-xpa'
       Use (do not use) the MIPS eXtended Physical Address (XPA)
       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
--- 16071,16353 ----
  
            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 signalling 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 Application Specific
       instructions.
  
! '-mxpa'
! '-mno-xpa'
       Use (do not use) the MIPS eXtended Physical Address (XPA)
       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
*** 16421,16585 ****
            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'
! `-mno-explicit-relocs'
       Use (do not use) assembler relocation operators when dealing with
       symbolic addresses.  The alternative, selected by
!      `-mno-explicit-relocs', is to use assembler macros instead.
  
!      `-mexplicit-relocs' is the default if GCC was configured to use an
       assembler that supports relocation operators.
  
! `-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'.
  
! `-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 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.
  
! `-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-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.
  
--- 16356,16512 ----
            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'
! '-mno-explicit-relocs'
       Use (do not use) assembler relocation operators when dealing with
       symbolic addresses.  The alternative, selected by
!      '-mno-explicit-relocs', is to use assembler macros instead.
  
!      '-mexplicit-relocs' is the default if GCC was configured to use an
       assembler that supports relocation operators.
  
! '-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'.
  
! '-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
!      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.
  
! '-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-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
*** 16591,16609 ****
  
       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.
  
!      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:
  
         1. the memory occupied by the current function's stack frame;
  
--- 16518,16536 ----
  
       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.
  
!      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:
  
         1. the memory occupied by the current function's stack frame;
  
*************** File: gcc.info,  Node: MIPS Options,  Ne
*** 16619,16663 ****
  
            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
--- 16546,16590 ----
  
            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
*** 16667,16674 ****
       default because the MIPS32 and MIPS64 architectures specifically
       deprecate their use.
  
! `-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.
--- 16594,16601 ----
       default because the MIPS32 and MIPS64 architectures specifically
       deprecate their use.
  
! '-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
*** 16677,16684 ****
       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
--- 16604,16611 ----
       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
*** 16686,16735 ****
  
       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'.
! 
  
  
  File: gcc.info,  Node: MMIX Options,  Next: MN10300 Options,  Prev: MIPS Options,  Up: Submodel Options
--- 16613,16659 ----
  
       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'.
  
  
  File: gcc.info,  Node: MMIX Options,  Next: MN10300 Options,  Prev: MIPS Options,  Up: Submodel Options
*************** File: gcc.info,  Node: MMIX Options,  Ne
*** 16739,16790 ****
  
  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
--- 16663,16713 ----
  
  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:
*** 16792,16802 ****
       requests within the range 0 to 255 from the value held in the
       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.
  
--- 16715,16725 ----
       requests within the range 0 to 255 from the value held in the
       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,
*** 16806,16878 ****
  3.17.27 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 line for the final link step.
  
       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__'.
  
! `-mnoliw'
       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__'.
  
! `-mnosetlb'
       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
--- 16729,16800 ----
  3.17.27 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
!      line for the final link step.
  
       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__'.
  
! '-mnoliw'
       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__'.
  
! '-mnosetlb'
       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
*** 16880,16900 ****
  3.17.28 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,  Next: NDS32 Options,  Prev: Moxie Options,  Up: Submodel Options
  
--- 16802,16821 ----
  3.17.28 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,  Next: NDS32 Options,  Prev: Moxie Options,  Up: Submodel Options
  
*************** File: gcc.info,  Node: MSP430 Options,
*** 16903,16969 ****
  
  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'.
  
       This option is also passed on to the assembler.
  
! `-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, 32-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 then `32bit'
!      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
--- 16824,16889 ----
  
  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'.
  
       This option is also passed on to the assembler.
  
! '-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, 32-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 then '32bit' 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
*** 16971,16984 ****
       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.
  
- 
  
  File: gcc.info,  Node: NDS32 Options,  Next: Nios II Options,  Prev: MSP430 Options,  Up: Submodel Options
  
--- 16891,16903 ----
       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.
  
  
  File: gcc.info,  Node: NDS32 Options,  Next: Nios II Options,  Prev: MSP430 Options,  Up: Submodel Options
  
*************** File: gcc.info,  Node: NDS32 Options,  N
*** 16987,17061 ****
  
  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.
  
! `-mperf-ext'
       Generate performance extension instructions.
  
! `-mno-perf-ext'
       Do not generate performance 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: Nios II Options,  Next: Nvidia PTX Options,  Prev: NDS32 Options,  Up: Submodel Options
  
--- 16906,16977 ----
  
  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.
  
! '-mperf-ext'
       Generate performance extension instructions.
  
! '-mno-perf-ext'
       Do not generate performance 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: Nios II Options,  Next: Nvidia PTX Options,  Prev: NDS32 Options,  Up: Submodel Options
  
*************** File: gcc.info,  Node: Nios II Options,
*** 17064,17104 ****
  
  These are the options defined for the Altera Nios II processor.
  
! `-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.
  
! `-mgpopt=OPTION'
! 
! `-mgpopt'
! `-mno-gpopt'
       Generate (do not generate) GP-relative accesses.  The following
       OPTION names are recognized:
  
!     `none'
            Do not generate GP-relative accesses.
  
!     `local'
            Generate GP-relative accesses for small data objects that are
            not external or weak.  Also use GP-relative addressing for
            objects that have been explicitly placed in a small data
!           section via a `section' attribute.
  
!     `global'
!           As for `local', but also generate GP-relative accesses for
!           small data objects that are external or weak.  If you use
!           this option, you must ensure that all parts of your program
!           (including libraries) are compiled with the same `-G' setting.
  
!     `data'
            Generate GP-relative accesses for all data objects in the
            program.  If you use this option, the entire data and BSS
            segments of your program must fit in 64K of memory and you
            must use an appropriate linker script to allocate them within
            the addressible range of the global pointer.
  
!     `all'
            Generate GP-relative addresses for function pointers as well
            as data pointers.  If you use this option, the entire text,
            data, and BSS segments of your program must fit in 64K of
--- 16980,17019 ----
  
  These are the options defined for the Altera Nios II processor.
  
! '-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.
  
! '-mgpopt=OPTION'
! '-mgpopt'
! '-mno-gpopt'
       Generate (do not generate) GP-relative accesses.  The following
       OPTION names are recognized:
  
!      'none'
            Do not generate GP-relative accesses.
  
!      'local'
            Generate GP-relative accesses for small data objects that are
            not external or weak.  Also use GP-relative addressing for
            objects that have been explicitly placed in a small data
!           section via a 'section' attribute.
  
!      'global'
!           As for 'local', but also generate GP-relative accesses for
!           small data objects that are external or weak.  If you use this
!           option, you must ensure that all parts of your program
!           (including libraries) are compiled with the same '-G' setting.
  
!      'data'
            Generate GP-relative accesses for all data objects in the
            program.  If you use this option, the entire data and BSS
            segments of your program must fit in 64K of memory and you
            must use an appropriate linker script to allocate them within
            the addressible range of the global pointer.
  
!      'all'
            Generate GP-relative addresses for function pointers as well
            as data pointers.  If you use this option, the entire text,
            data, and BSS segments of your program must fit in 64K of
*************** These are the options defined for the Al
*** 17106,17163 ****
            allocate them within the addressible range of the global
            pointer.
  
  
!      `-mgpopt' is equivalent to `-mgpopt=local', and `-mno-gpopt' is
!      equivalent to `-mgpopt=none'.
! 
!      The default is `-mgpopt' except when `-fpic' or `-fPIC' is
       specified to generate position-independent code.  Note that the
       Nios II ABI does not permit GP-relative accesses from shared
       libraries.
  
!      You may need to specify `-mno-gpopt' explicitly when building
       programs that include large amounts of small data, including large
       GOT data sections.  In this case, the 16-bit offset for GP-relative
       addressing may not be large enough to allow access to the entire
       small data section.
  
! `-mel'
! `-meb'
       Generate little-endian (default) or big-endian (experimental) code,
       respectively.
  
! `-mbypass-cache'
! `-mno-bypass-cache'
       Force all load and store instructions to always bypass cache by
!      using I/O variants of the instructions. The default is not to
       bypass the cache.
  
! `-mno-cache-volatile'
! `-mcache-volatile'
       Volatile memory access bypass the cache using the I/O variants of
!      the load and store instructions. The default is not to bypass the
       cache.
  
! `-mno-fast-sw-div'
! `-mfast-sw-div'
!      Do not use table-based fast divide for small numbers. The default
!      is to use the fast divide at `-O3' and above.
  
! `-mno-hw-mul'
! `-mhw-mul'
! `-mno-hw-mulx'
! `-mhw-mulx'
! `-mno-hw-div'
! `-mhw-div'
!      Enable or disable emitting `mul', `mulx' and `div' family of
!      instructions by the compiler. The default is to emit `mul' and not
!      emit `div' and `mulx'.
  
! `-mcustom-INSN=N'
! `-mno-custom-INSN'
!      Each `-mcustom-INSN=N' option enables use of a custom instruction
       with encoding N when generating code that uses INSN.  For example,
!      `-mcustom-fadds=253' generates custom instruction 253 for
       single-precision floating-point add operations instead of the
       default behavior of using a library call.
  
--- 17021,17077 ----
            allocate them within the addressible range of the global
            pointer.
  
+      '-mgpopt' is equivalent to '-mgpopt=local', and '-mno-gpopt' is
+      equivalent to '-mgpopt=none'.
  
!      The default is '-mgpopt' except when '-fpic' or '-fPIC' is
       specified to generate position-independent code.  Note that the
       Nios II ABI does not permit GP-relative accesses from shared
       libraries.
  
!      You may need to specify '-mno-gpopt' explicitly when building
       programs that include large amounts of small data, including large
       GOT data sections.  In this case, the 16-bit offset for GP-relative
       addressing may not be large enough to allow access to the entire
       small data section.
  
! '-mel'
! '-meb'
       Generate little-endian (default) or big-endian (experimental) code,
       respectively.
  
! '-mbypass-cache'
! '-mno-bypass-cache'
       Force all load and store instructions to always bypass cache by
!      using I/O variants of the instructions.  The default is not to
       bypass the cache.
  
! '-mno-cache-volatile'
! '-mcache-volatile'
       Volatile memory access bypass the cache using the I/O variants of
!      the load and store instructions.  The default is not to bypass the
       cache.
  
! '-mno-fast-sw-div'
! '-mfast-sw-div'
!      Do not use table-based fast divide for small numbers.  The default
!      is to use the fast divide at '-O3' and above.
  
! '-mno-hw-mul'
! '-mhw-mul'
! '-mno-hw-mulx'
! '-mhw-mulx'
! '-mno-hw-div'
! '-mhw-div'
!      Enable or disable emitting 'mul', 'mulx' and 'div' family of
!      instructions by the compiler.  The default is to emit 'mul' and not
!      emit 'div' and 'mulx'.
  
! '-mcustom-INSN=N'
! '-mno-custom-INSN'
!      Each '-mcustom-INSN=N' option enables use of a custom instruction
       with encoding N when generating code that uses INSN.  For example,
!      '-mcustom-fadds=253' generates custom instruction 253 for
       single-precision floating-point add operations instead of the
       default behavior of using a library call.
  
*************** These are the options defined for the Al
*** 17168,17299 ****
       Builtins::).
  
       Single-precision floating point:
!     `fadds', `fsubs', `fdivs', `fmuls'
            Binary arithmetic operations.
  
!     `fnegs'
            Unary negation.
  
!     `fabss'
            Unary absolute value.
  
!     `fcmpeqs', `fcmpges', `fcmpgts', `fcmples', `fcmplts', `fcmpnes'
            Comparison operations.
  
!     `fmins', `fmaxs'
            Floating-point minimum and maximum.  These instructions are
!           only generated if `-ffinite-math-only' is specified.
  
!     `fsqrts'
            Unary square root operation.
  
!     `fcoss', `fsins', `ftans', `fatans', `fexps', `flogs'
!           Floating-point trigonometric and exponential functions.
!           These instructions are only generated if
!           `-funsafe-math-optimizations' is also specified.
! 
  
       Double-precision floating point:
!     `faddd', `fsubd', `fdivd', `fmuld'
            Binary arithmetic operations.
  
!     `fnegd'
            Unary negation.
  
!     `fabsd'
            Unary absolute value.
  
!     `fcmpeqd', `fcmpged', `fcmpgtd', `fcmpled', `fcmpltd', `fcmpned'
            Comparison operations.
  
!     `fmind', `fmaxd'
            Double-precision minimum and maximum.  These instructions are
!           only generated if `-ffinite-math-only' is specified.
  
!     `fsqrtd'
            Unary square root operation.
  
!     `fcosd', `fsind', `ftand', `fatand', `fexpd', `flogd'
            Double-precision trigonometric and exponential functions.
            These instructions are only generated if
!           `-funsafe-math-optimizations' is also specified.
! 
  
       Conversions:
!     `fextsd'
            Conversion from single precision to double precision.
  
!     `ftruncds'
            Conversion from double precision to single precision.
  
!     `fixsi', `fixsu', `fixdi', `fixdu'
            Conversion from floating point to signed or unsigned integer
            types, with truncation towards zero.
  
!     `round'
            Conversion from single-precision floating point to signed
            integer, rounding to the nearest integer and ties away from
!           zero.  This corresponds to the `__builtin_lroundf' function
!           when `-fno-math-errno' is used.
  
!     `floatis', `floatus', `floatid', `floatud'
            Conversion from signed or unsigned integer types to
            floating-point types.
  
- 
       In addition, all of the following transfer instructions for
       internal registers X and Y must be provided to use any of the
       double-precision floating-point instructions.  Custom instructions
       taking two double-precision source operands expect the first
!      operand in the 64-bit register X.  The other operand (or only
       operand of a unary operation) is given to the custom arithmetic
!      instruction with the least significant half in source register
!      SRC1 and the most significant half in SRC2.  A custom instruction
!      that returns a double-precision result returns the most
!      significant 32 bits in the destination register and the other half
!      in 32-bit register Y.  GCC automatically generates the necessary
!      code sequences to write register X and/or read register Y when
       double-precision floating-point instructions are used.
  
!     `fwrx'
            Write SRC1 into the least significant half of X and SRC2 into
            the most significant half of X.
  
!     `fwry'
            Write SRC1 into Y.
  
!     `frdxhi', `frdxlo'
            Read the most or least (respectively) significant half of X
            and store it in DEST.
  
!     `frdy'
            Read the value of Y and store it into DEST.
  
       Note that you can gain more local control over generation of Nios
!      II custom instructions by using the `target("custom-INSN=N")' and
!      `target("no-custom-INSN")' function attributes (*note Function
       Attributes::) or pragmas (*note Function Specific Option
       Pragmas::).
  
! `-mcustom-fpu-cfg=NAME'
       This option enables a predefined, named set of custom instruction
!      encodings (see `-mcustom-INSN' above).  Currently, the following
       sets are defined:
  
!      `-mcustom-fpu-cfg=60-1' is equivalent to:
            -mcustom-fmuls=252
            -mcustom-fadds=253
            -mcustom-fsubs=254
            -fsingle-precision-constant
  
!      `-mcustom-fpu-cfg=60-2' is equivalent to:
            -mcustom-fmuls=252
            -mcustom-fadds=253
            -mcustom-fsubs=254
            -mcustom-fdivs=255
            -fsingle-precision-constant
  
!      `-mcustom-fpu-cfg=72-3' is equivalent to:
            -mcustom-floatus=243
            -mcustom-fixsi=244
            -mcustom-floatis=245
--- 17082,17213 ----
       Builtins::).
  
       Single-precision floating point:
! 
!      'fadds', 'fsubs', 'fdivs', 'fmuls'
            Binary arithmetic operations.
  
!      'fnegs'
            Unary negation.
  
!      'fabss'
            Unary absolute value.
  
!      'fcmpeqs', 'fcmpges', 'fcmpgts', 'fcmples', 'fcmplts', 'fcmpnes'
            Comparison operations.
  
!      'fmins', 'fmaxs'
            Floating-point minimum and maximum.  These instructions are
!           only generated if '-ffinite-math-only' is specified.
  
!      'fsqrts'
            Unary square root operation.
  
!      'fcoss', 'fsins', 'ftans', 'fatans', 'fexps', 'flogs'
!           Floating-point trigonometric and exponential functions.  These
!           instructions are only generated if
!           '-funsafe-math-optimizations' is also specified.
  
       Double-precision floating point:
! 
!      'faddd', 'fsubd', 'fdivd', 'fmuld'
            Binary arithmetic operations.
  
!      'fnegd'
            Unary negation.
  
!      'fabsd'
            Unary absolute value.
  
!      'fcmpeqd', 'fcmpged', 'fcmpgtd', 'fcmpled', 'fcmpltd', 'fcmpned'
            Comparison operations.
  
!      'fmind', 'fmaxd'
            Double-precision minimum and maximum.  These instructions are
!           only generated if '-ffinite-math-only' is specified.
  
!      'fsqrtd'
            Unary square root operation.
  
!      'fcosd', 'fsind', 'ftand', 'fatand', 'fexpd', 'flogd'
            Double-precision trigonometric and exponential functions.
            These instructions are only generated if
!           '-funsafe-math-optimizations' is also specified.
  
       Conversions:
!      'fextsd'
            Conversion from single precision to double precision.
  
!      'ftruncds'
            Conversion from double precision to single precision.
  
!      'fixsi', 'fixsu', 'fixdi', 'fixdu'
            Conversion from floating point to signed or unsigned integer
            types, with truncation towards zero.
  
!      'round'
            Conversion from single-precision floating point to signed
            integer, rounding to the nearest integer and ties away from
!           zero.  This corresponds to the '__builtin_lroundf' function
!           when '-fno-math-errno' is used.
  
!      'floatis', 'floatus', 'floatid', 'floatud'
            Conversion from signed or unsigned integer types to
            floating-point types.
  
       In addition, all of the following transfer instructions for
       internal registers X and Y must be provided to use any of the
       double-precision floating-point instructions.  Custom instructions
       taking two double-precision source operands expect the first
!      operand in the 64-bit register X. The other operand (or only
       operand of a unary operation) is given to the custom arithmetic
!      instruction with the least significant half in source register SRC1
!      and the most significant half in SRC2.  A custom instruction that
!      returns a double-precision result returns the most significant 32
!      bits in the destination register and the other half in 32-bit
!      register Y. GCC automatically generates the necessary code
!      sequences to write register X and/or read register Y when
       double-precision floating-point instructions are used.
  
!      'fwrx'
            Write SRC1 into the least significant half of X and SRC2 into
            the most significant half of X.
  
!      'fwry'
            Write SRC1 into Y.
  
!      'frdxhi', 'frdxlo'
            Read the most or least (respectively) significant half of X
            and store it in DEST.
  
!      'frdy'
            Read the value of Y and store it into DEST.
  
       Note that you can gain more local control over generation of Nios
!      II custom instructions by using the 'target("custom-INSN=N")' and
!      'target("no-custom-INSN")' function attributes (*note Function
       Attributes::) or pragmas (*note Function Specific Option
       Pragmas::).
  
! '-mcustom-fpu-cfg=NAME'
! 
       This option enables a predefined, named set of custom instruction
!      encodings (see '-mcustom-INSN' above).  Currently, the following
       sets are defined:
  
!      '-mcustom-fpu-cfg=60-1' is equivalent to:
            -mcustom-fmuls=252
            -mcustom-fadds=253
            -mcustom-fsubs=254
            -fsingle-precision-constant
  
!      '-mcustom-fpu-cfg=60-2' is equivalent to:
            -mcustom-fmuls=252
            -mcustom-fadds=253
            -mcustom-fsubs=254
            -mcustom-fdivs=255
            -fsingle-precision-constant
  
!      '-mcustom-fpu-cfg=72-3' is equivalent to:
            -mcustom-floatus=243
            -mcustom-fixsi=244
            -mcustom-floatis=245
*************** These are the options defined for the Al
*** 17307,17347 ****
            -mcustom-fdivs=255
            -fsingle-precision-constant
  
!      Custom instruction assignments given by individual
!      `-mcustom-INSN=' options override those given by
!      `-mcustom-fpu-cfg=', regardless of the order of the options on the
!      command line.
  
       Note that you can gain more local control over selection of a FPU
!      configuration by using the `target("custom-fpu-cfg=NAME")'
!      function attribute (*note Function Attributes::) or pragma (*note
!      Function Specific Option Pragmas::).
! 
  
!  These additional `-m' options are available for the Altera Nios II ELF
  (bare-metal) target:
  
! `-mhal'
!      Link with HAL BSP.  This suppresses linking with the GCC-provided
!      C runtime startup and termination code, and is typically used in
!      conjunction with `-msys-crt0=' to specify the location of the
       alternate startup code provided by the HAL BSP.
  
! `-msmallc'
!      Link with a limited version of the C library, `-lsmallc', rather
       than Newlib.
  
! `-msys-crt0=STARTFILE'
       STARTFILE is the file name of the startfile (crt0) to use when
!      linking.  This option is only useful in conjunction with `-mhal'.
  
! `-msys-lib=SYSTEMLIB'
       SYSTEMLIB is the library name of the library that provides
!      low-level system calls required by the C library, e.g. `read' and
!      `write'.  This option is typically used to link with a library
       provided by a HAL BSP.
  
- 
  
  File: gcc.info,  Node: Nvidia PTX Options,  Next: PDP-11 Options,  Prev: Nios II Options,  Up: Submodel Options
  
--- 17221,17258 ----
            -mcustom-fdivs=255
            -fsingle-precision-constant
  
!      Custom instruction assignments given by individual '-mcustom-INSN='
!      options override those given by '-mcustom-fpu-cfg=', regardless of
!      the order of the options on the command line.
  
       Note that you can gain more local control over selection of a FPU
!      configuration by using the 'target("custom-fpu-cfg=NAME")' function
!      attribute (*note Function Attributes::) or pragma (*note Function
!      Specific Option Pragmas::).
  
!  These additional '-m' options are available for the Altera Nios II ELF
  (bare-metal) target:
  
! '-mhal'
!      Link with HAL BSP. This suppresses linking with the GCC-provided C
!      runtime startup and termination code, and is typically used in
!      conjunction with '-msys-crt0=' to specify the location of the
       alternate startup code provided by the HAL BSP.
  
! '-msmallc'
!      Link with a limited version of the C library, '-lsmallc', rather
       than Newlib.
  
! '-msys-crt0=STARTFILE'
       STARTFILE is the file name of the startfile (crt0) to use when
!      linking.  This option is only useful in conjunction with '-mhal'.
  
! '-msys-lib=SYSTEMLIB'
       SYSTEMLIB is the library name of the library that provides
!      low-level system calls required by the C library, e.g.  'read' and
!      'write'.  This option is typically used to link with a library
       provided by a HAL BSP.
  
  
  File: gcc.info,  Node: Nvidia PTX Options,  Next: PDP-11 Options,  Prev: Nios II Options,  Up: Submodel Options
  
*************** File: gcc.info,  Node: Nvidia PTX Option
*** 17350,17364 ****
  
  These options are defined for Nvidia PTX:
  
! `-m32'
! `-m64'
       Generate code for 32-bit or 64-bit ABI.
  
! `-mmainkernel'
       Link in code for a __main kernel.  This is for stand-alone instead
       of offloading execution.
  
- 
  
  File: gcc.info,  Node: PDP-11 Options,  Next: picoChip Options,  Prev: Nvidia PTX Options,  Up: Submodel Options
  
--- 17261,17274 ----
  
  These options are defined for Nvidia PTX:
  
! '-m32'
! '-m64'
       Generate code for 32-bit or 64-bit ABI.
  
! '-mmainkernel'
       Link in code for a __main kernel.  This is for stand-alone instead
       of offloading execution.
  
  
  File: gcc.info,  Node: PDP-11 Options,  Next: picoChip Options,  Prev: Nvidia PTX Options,  Up: Submodel Options
  
*************** File: gcc.info,  Node: PDP-11 Options,
*** 17367,17438 ****
  
  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.)
  
! `-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.
  
! `-m45'
       Generate code for a PDP-11/45.  This is the default.
  
! `-m10'
       Generate code for a PDP-11/10.
  
! `-mbcopy-builtin'
!      Use inline `movmemhi' patterns for copying memory.  This is the
       default.
  
! `-mbcopy'
!      Do not use inline `movmemhi' patterns for copying memory.
  
! `-mint16'
! `-mno-int32'
!      Use 16-bit `int'.  This is the default.
  
! `-mint32'
! `-mno-int16'
!      Use 32-bit `int'.
  
! `-mfloat64'
! `-mno-float32'
!      Use 64-bit `float'.  This is the default.
  
! `-mfloat32'
! `-mno-float64'
!      Use 32-bit `float'.
  
! `-mabshi'
!      Use `abshi2' pattern.  This is the default.
  
! `-mno-abshi'
!      Do not use `abshi2' pattern.
  
! `-mbranch-expensive'
       Pretend that branches are expensive.  This is for experimenting
       with code generation only.
  
! `-mbranch-cheap'
       Do not pretend that branches are expensive.  This is the default.
  
! `-munix-asm'
       Use Unix assembler syntax.  This is the default when configured for
!      `pdp11-*-bsd'.
  
! `-mdec-asm'
       Use DEC assembler syntax.  This is the default when configured for
!      any PDP-11 target other than `pdp11-*-bsd'.
  
  
  File: gcc.info,  Node: picoChip Options,  Next: PowerPC Options,  Prev: PDP-11 Options,  Up: Submodel Options
--- 17277,17348 ----
  
  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.)
  
! '-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.
  
! '-m45'
       Generate code for a PDP-11/45.  This is the default.
  
! '-m10'
       Generate code for a PDP-11/10.
  
! '-mbcopy-builtin'
!      Use inline 'movmemhi' patterns for copying memory.  This is the
       default.
  
! '-mbcopy'
!      Do not use inline 'movmemhi' patterns for copying memory.
  
! '-mint16'
! '-mno-int32'
!      Use 16-bit 'int'.  This is the default.
  
! '-mint32'
! '-mno-int16'
!      Use 32-bit 'int'.
  
! '-mfloat64'
! '-mno-float32'
!      Use 64-bit 'float'.  This is the default.
  
! '-mfloat32'
! '-mno-float64'
!      Use 32-bit 'float'.
  
! '-mabshi'
!      Use 'abshi2' pattern.  This is the default.
  
! '-mno-abshi'
!      Do not use 'abshi2' pattern.
  
! '-mbranch-expensive'
       Pretend that branches are expensive.  This is for experimenting
       with code generation only.
  
! '-mbranch-cheap'
       Do not pretend that branches are expensive.  This is the default.
  
! '-munix-asm'
       Use Unix assembler syntax.  This is the default when configured for
!      'pdp11-*-bsd'.
  
! '-mdec-asm'
       Use DEC assembler syntax.  This is the default when configured for
!      any PDP-11 target other than 'pdp11-*-bsd'.
  
  
  File: gcc.info,  Node: picoChip Options,  Next: PowerPC Options,  Prev: PDP-11 Options,  Up: Submodel Options
*************** File: gcc.info,  Node: picoChip Options,
*** 17440,17485 ****
  3.17.34 picoChip Options
  ------------------------
  
! These `-m' options are defined for picoChip implementations:
  
! `-mae=AE_TYPE'
       Set the instruction set, register set, and instruction scheduling
       parameters for array element type AE_TYPE.  Supported values for
!      AE_TYPE are `ANY', `MUL', and `MAC'.
  
!      `-mae=ANY' selects a completely generic AE type.  Code generated
       with this option runs on any of the other AE types.  The code is
!      not as efficient as it would be if compiled for a specific AE
!      type, and some types of operation (e.g., multiplication) do not
!      work properly on all types of AE.
  
!      `-mae=MUL' selects a MUL AE type.  This is the most useful AE type
       for compiled code, and is the default.
  
!      `-mae=MAC' selects a DSP-style MAC AE.  Code compiled with this
       option may suffer from poor performance of byte (char)
       manipulation, since the DSP AE does not provide hardware support
       for byte load/stores.
  
! `-msymbol-as-address'
       Enable the compiler to directly use a symbol name as an address in
!      a load/store instruction, without first loading it into a
!      register.  Typically, the use of this option generates larger
!      programs, which run faster than when the option isn't used.
!      However, the results vary from program to program, so it is left
!      as a user option, rather than being permanently enabled.
  
! `-mno-inefficient-warnings'
       Disables warnings about the generation of inefficient code.  These
       warnings can be generated, for example, when compiling code that
       performs byte-level memory operations on the MAC AE type.  The MAC
!      AE has no hardware support for byte-level memory operations, so
!      all byte load/stores must be synthesized from word load/store
       operations.  This is inefficient and a warning is generated to
!      indicate that you should rewrite the code to avoid byte
!      operations, or to target an AE type that has the necessary
!      hardware support.  This option disables these warnings.
! 
  
  
  File: gcc.info,  Node: PowerPC Options,  Next: RL78 Options,  Prev: picoChip Options,  Up: Submodel Options
--- 17350,17394 ----
  3.17.34 picoChip Options
  ------------------------
  
! These '-m' options are defined for picoChip implementations:
  
! '-mae=AE_TYPE'
       Set the instruction set, register set, and instruction scheduling
       parameters for array element type AE_TYPE.  Supported values for
!      AE_TYPE are 'ANY', 'MUL', and 'MAC'.
  
!      '-mae=ANY' selects a completely generic AE type.  Code generated
       with this option runs on any of the other AE types.  The code is
!      not as efficient as it would be if compiled for a specific AE type,
!      and some types of operation (e.g., multiplication) do not work
!      properly on all types of AE.
  
!      '-mae=MUL' selects a MUL AE type.  This is the most useful AE type
       for compiled code, and is the default.
  
!      '-mae=MAC' selects a DSP-style MAC AE. Code compiled with this
       option may suffer from poor performance of byte (char)
       manipulation, since the DSP AE does not provide hardware support
       for byte load/stores.
  
! '-msymbol-as-address'
       Enable the compiler to directly use a symbol name as an address in
!      a load/store instruction, without first loading it into a register.
!      Typically, the use of this option generates larger programs, which
!      run faster than when the option isn't used.  However, the results
!      vary from program to program, so it is left as a user option,
!      rather than being permanently enabled.
  
! '-mno-inefficient-warnings'
       Disables warnings about the generation of inefficient code.  These
       warnings can be generated, for example, when compiling code that
       performs byte-level memory operations on the MAC AE type.  The MAC
!      AE has no hardware support for byte-level memory operations, so all
!      byte load/stores must be synthesized from word load/store
       operations.  This is inefficient and a warning is generated to
!      indicate that you should rewrite the code to avoid byte operations,
!      or to target an AE type that has the necessary hardware support.
!      This option disables these warnings.
  
  
  File: gcc.info,  Node: PowerPC Options,  Next: RL78 Options,  Prev: picoChip Options,  Up: Submodel Options
*************** File: gcc.info,  Node: RL78 Options,  Ne
*** 17495,17520 ****
  3.17.36 RL78 Options
  --------------------
  
! `-msim'
       Links in additional target libraries to support operation within a
       simulator.
  
! `-mmul=none'
! `-mmul=g13'
! `-mmul=rl78'
       Specifies the type of hardware multiplication support to be used.
!      The default is `none', which uses software multiplication
!      functions.  The `g13' option is for the hardware multiply/divide
!      peripheral only on the RL78/G13 targets.  The `rl78' option is for
       the standard hardware multiplication defined in the RL78 software
       manual.
  
! `-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'.
! 
  
  
  File: gcc.info,  Node: RS/6000 and PowerPC Options,  Next: RX Options,  Prev: RL78 Options,  Up: Submodel Options
--- 17404,17428 ----
  3.17.36 RL78 Options
  --------------------
  
! '-msim'
       Links in additional target libraries to support operation within a
       simulator.
  
! '-mmul=none'
! '-mmul=g13'
! '-mmul=rl78'
       Specifies the type of hardware multiplication support to be used.
!      The default is 'none', which uses software multiplication
!      functions.  The 'g13' option is for the hardware multiply/divide
!      peripheral only on the RL78/G13 targets.  The 'rl78' option is for
       the standard hardware multiplication defined in the RL78 software
       manual.
  
! '-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'.
  
  
  File: gcc.info,  Node: RS/6000 and PowerPC Options,  Next: RX Options,  Prev: RL78 Options,  Up: Submodel Options
*************** File: gcc.info,  Node: RS/6000 and Power
*** 17522,17837 ****
  3.17.37 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'
! `-mmfpgpr'
! `-mno-mfpgpr'
! `-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
!      `-mmfpgpr' option allows GCC to generate the FP move to/from
       general-purpose register instructions implemented on the POWER6X
       processor and other processors that support the extended 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', `powerpc', `powerpc64',
!      `powerpc64le', and `rs64'.
  
!      `-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.
  
       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
            -mpopcntb -mpopcntd  -mpowerpc64
            -mpowerpc-gpopt  -mpowerpc-gfxopt  -msingle-float -mdouble-float
            -msimple-fpu -mstring  -mmulhw  -mdlmzb  -mmfpgpr -mvsx
!           -mcrypto -mdirect-move -mpower8-fusion -mpower8-vector
            -mquad-memory -mquad-memory-atomic
  
       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'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.
  
! `-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, rather than `-maltivec=le' or
!      `-maltivec=be', 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.
  
! `-maltivec=be'
       Generate Altivec instructions using big-endian element order,
       regardless of whether the target is big- or little-endian.  This is
       the default when targeting a big-endian platform.
  
       The element order is used to interpret element numbers in Altivec
!      intrinsics such as `vec_splat', `vec_extract', and `vec_insert'.
       By default, these match array element order corresponding to the
       endianness for the target.
  
! `-maltivec=le'
       Generate Altivec instructions using little-endian element order,
       regardless of whether the target is big- or little-endian.  This is
       the default when targeting a little-endian platform.  This option
       is currently ignored when targeting a big-endian platform.
  
       The element order is used to interpret element numbers in Altivec
!      intrinsics such as `vec_splat', `vec_extract', and `vec_insert'.
       By default, these match array element order corresponding to the
       endianness for the target.
  
! `-mvrsave'
! `-mno-vrsave'
       Generate VRSAVE instructions when generating AltiVec code.
  
! `-mgen-cell-microcode'
       Generate Cell microcode instructions.
  
! `-mwarn-cell-microcode'
!      Warn when a Cell microcode instruction is emitted.  An example of
!      a Cell microcode instruction is a variable shift.
  
! `-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.
  
! `-misel'
! `-mno-isel'
       This switch enables or disables the generation of ISEL
       instructions.
  
! `-misel=YES/NO'
!      This switch has been deprecated.  Use `-misel' and `-mno-isel'
       instead.
  
! `-mspe'
! `-mno-spe'
       This switch enables or disables the generation of SPE simd
       instructions.
  
! `-mpaired'
! `-mno-paired'
       This switch enables or disables the generation of PAIRED simd
       instructions.
  
! `-mspe=YES/NO'
!      This option has been deprecated.  Use `-mspe' and `-mno-spe'
       instead.
  
! `-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.
  
! `-mdirect-move'
! `-mno-direct-move'
       Generate code that uses (does not use) the instructions to move
       data between the general purpose registers and the vector/scalar
       (VSX) registers 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.
  
! `-mpower8-vector'
! `-mno-power8-vector'
       Generate code that uses (does not use) the vector and scalar
       instructions that were added in version 2.07 of the PowerPC ISA.
       Also enable the use of built-in functions that allow more direct
       access to the vector instructions.
  
! `-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.
  
! `-mupper-regs-df'
! `-mno-upper-regs-df'
       Generate code that uses (does not use) the scalar double precision
       instructions that target all 64 registers in the vector/scalar
       floating point register set that were added in version 2.06 of the
!      PowerPC ISA.  `-mupper-regs-df' is turned on by default if you use
!      any of the `-mcpu=power7', `-mcpu=power8', or `-mvsx' options.
  
! `-mupper-regs-sf'
! `-mno-upper-regs-sf'
       Generate code that uses (does not use) the scalar single precision
       instructions that target all 64 registers in the vector/scalar
       floating point register set that were added in version 2.07 of the
!      PowerPC ISA.  `-mupper-regs-sf' is turned on by default if you use
!      either of the `-mcpu=power8' or `-mpower8-vector' options.
  
! `-mupper-regs'
! `-mno-upper-regs'
!      Generate code that uses (does not use) the scalar instructions
!      that target all 64 registers in the vector/scalar floating point
       register set, depending on the model of the machine.
  
!      If the `-mno-upper-regs' option is used, it turns off both
!      `-mupper-regs-sf' and `-mupper-regs-df' options.
  
! `-mfloat-gprs=YES/SINGLE/DOUBLE/NO'
! `-mfloat-gprs'
       This switch enables or disables the generation of floating-point
       operations on the general-purpose registers for architectures that
       support it.
  
!      The argument `yes' or `single' enables the use of single-precision
       floating-point operations.
  
!      The argument `double' enables the use of single and
       double-precision floating-point operations.
  
!      The argument `no' disables floating-point operations on the
       general-purpose registers.
  
       This option is currently only available on the MPC854x.
  
! `-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
--- 17430,17750 ----
  3.17.37 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'
! '-mmfpgpr'
! '-mno-mfpgpr'
! '-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
!      '-mmfpgpr' option allows GCC to generate the FP move to/from
       general-purpose register instructions implemented on the POWER6X
       processor and other processors that support the extended 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', 'powerpc', 'powerpc64', 'powerpc64le', and
!      'rs64'.
  
!      '-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.
  
       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
            -mpopcntb -mpopcntd  -mpowerpc64
            -mpowerpc-gpopt  -mpowerpc-gfxopt  -msingle-float -mdouble-float
            -msimple-fpu -mstring  -mmulhw  -mdlmzb  -mmfpgpr -mvsx
!           -mcrypto -mdirect-move -mhtm -mpower8-fusion -mpower8-vector
            -mquad-memory -mquad-memory-atomic
  
       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'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.
  
! '-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, rather than '-maltivec=le' or
!      '-maltivec=be', 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.
  
! '-maltivec=be'
       Generate Altivec instructions using big-endian element order,
       regardless of whether the target is big- or little-endian.  This is
       the default when targeting a big-endian platform.
  
       The element order is used to interpret element numbers in Altivec
!      intrinsics such as 'vec_splat', 'vec_extract', and 'vec_insert'.
       By default, these match array element order corresponding to the
       endianness for the target.
  
! '-maltivec=le'
       Generate Altivec instructions using little-endian element order,
       regardless of whether the target is big- or little-endian.  This is
       the default when targeting a little-endian platform.  This option
       is currently ignored when targeting a big-endian platform.
  
       The element order is used to interpret element numbers in Altivec
!      intrinsics such as 'vec_splat', 'vec_extract', and 'vec_insert'.
       By default, these match array element order corresponding to the
       endianness for the target.
  
! '-mvrsave'
! '-mno-vrsave'
       Generate VRSAVE instructions when generating AltiVec code.
  
! '-mgen-cell-microcode'
       Generate Cell microcode instructions.
  
! '-mwarn-cell-microcode'
!      Warn when a Cell microcode instruction is emitted.  An example of a
!      Cell microcode instruction is a variable shift.
  
! '-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.
  
! '-misel'
! '-mno-isel'
       This switch enables or disables the generation of ISEL
       instructions.
  
! '-misel=YES/NO'
!      This switch has been deprecated.  Use '-misel' and '-mno-isel'
       instead.
  
! '-mspe'
! '-mno-spe'
       This switch enables or disables the generation of SPE simd
       instructions.
  
! '-mpaired'
! '-mno-paired'
       This switch enables or disables the generation of PAIRED simd
       instructions.
  
! '-mspe=YES/NO'
!      This option has been deprecated.  Use '-mspe' and '-mno-spe'
       instead.
  
! '-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.
  
! '-mdirect-move'
! '-mno-direct-move'
       Generate code that uses (does not use) the instructions to move
       data between the general purpose registers and the vector/scalar
       (VSX) registers 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.
  
! '-mpower8-vector'
! '-mno-power8-vector'
       Generate code that uses (does not use) the vector and scalar
       instructions that were added in version 2.07 of the PowerPC ISA.
       Also enable the use of built-in functions that allow more direct
       access to the vector instructions.
  
! '-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.
  
! '-mupper-regs-df'
! '-mno-upper-regs-df'
       Generate code that uses (does not use) the scalar double precision
       instructions that target all 64 registers in the vector/scalar
       floating point register set that were added in version 2.06 of the
!      PowerPC ISA. '-mupper-regs-df' is turned on by default if you use
!      any of the '-mcpu=power7', '-mcpu=power8', or '-mvsx' options.
  
! '-mupper-regs-sf'
! '-mno-upper-regs-sf'
       Generate code that uses (does not use) the scalar single precision
       instructions that target all 64 registers in the vector/scalar
       floating point register set that were added in version 2.07 of the
!      PowerPC ISA. '-mupper-regs-sf' is turned on by default if you use
!      either of the '-mcpu=power8' or '-mpower8-vector' options.
  
! '-mupper-regs'
! '-mno-upper-regs'
!      Generate code that uses (does not use) the scalar instructions that
!      target all 64 registers in the vector/scalar floating point
       register set, depending on the model of the machine.
  
!      If the '-mno-upper-regs' option is used, it turns off both
!      '-mupper-regs-sf' and '-mupper-regs-df' options.
  
! '-mfloat-gprs=YES/SINGLE/DOUBLE/NO'
! '-mfloat-gprs'
       This switch enables or disables the generation of floating-point
       operations on the general-purpose registers for architectures that
       support it.
  
!      The argument 'yes' or 'single' enables the use of single-precision
       floating-point operations.
  
!      The argument 'double' enables the use of single and
       double-precision floating-point operations.
  
!      The argument 'no' disables floating-point operations on the
       general-purpose registers.
  
       This option is currently only available on the MPC854x.
  
! '-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
*** 17839,17870 ****
  
       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
--- 17752,17783 ----
  
       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
*** 17876,18311 ****
       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.
  
! `-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.
  
! `-msingle-float'
! `-mdouble-float'
       Generate code for single- or double-precision floating-point
!      operations.  `-mdouble-float' implies `-msingle-float'.
  
! `-msimple-fpu'
!      Do not generate `sqrt' and `div' instructions for hardware
       floating-point unit.
  
! `-mfpu=NAME'
       Specify type of floating-point unit.  Valid values for NAME are
!      `sp_lite' (equivalent to `-msingle-float -msimple-fpu'), `dp_lite'
!      (equivalent to `-mdouble-float -msimple-fpu'), `sp_full'
!      (equivalent to `-msingle-float'), and `dp_full' (equivalent to
!      `-mdouble-float').
  
! `-mxilinx-fpu'
       Perform optimizations for the floating-point unit on Xilinx PPC
       405/440.
  
! `-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.
  
! `-mstring'
! `-mno-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.  These instructions are generated by
!      default on POWER systems, and not generated on PowerPC systems.
!      Do not use `-mstring' 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,
       such as when stepping through large arrays that cross a 16M
       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 and Mac OS X 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
            grouping.
  
!     NUMBER
            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.
  
! `-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', `spe',
!      `no-spe', `ibmlongdouble', `ieeelongdouble', `elfv1', `elfv2'.
  
! `-mabi=spe'
       Extend the current ABI with SPE ABI extensions.  This does not
       change the default ABI, instead it adds the SPE ABI extensions to
       the current ABI.
  
! `-mabi=no-spe'
       Disable Book-E SPE ABI extensions for the current ABI.
  
! `-mabi=ibmlongdouble'
       Change the current ABI to use IBM extended-precision long double.
       This is a PowerPC 32-bit SYSV ABI option.
  
! `-mabi=ieeelongdouble'
       Change the current ABI to use IEEE extended-precision long double.
       This is a PowerPC 32-bit Linux ABI option.
  
! `-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.
  
! `-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.
  
! `-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.
  
! `-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
--- 17789,18222 ----
       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.
  
! '-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.
  
! '-msingle-float'
! '-mdouble-float'
       Generate code for single- or double-precision floating-point
!      operations.  '-mdouble-float' implies '-msingle-float'.
  
! '-msimple-fpu'
!      Do not generate 'sqrt' and 'div' instructions for hardware
       floating-point unit.
  
! '-mfpu=NAME'
       Specify type of floating-point unit.  Valid values for NAME are
!      'sp_lite' (equivalent to '-msingle-float -msimple-fpu'), 'dp_lite'
!      (equivalent to '-mdouble-float -msimple-fpu'), 'sp_full'
!      (equivalent to '-msingle-float'), and 'dp_full' (equivalent to
!      '-mdouble-float').
  
! '-mxilinx-fpu'
       Perform optimizations for the floating-point unit on Xilinx PPC
       405/440.
  
! '-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.
  
! '-mstring'
! '-mno-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.  These instructions are generated by
!      default on POWER systems, and not generated on PowerPC systems.  Do
!      not use '-mstring' 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,
       such as when stepping through large arrays that cross a 16M
       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 and Mac OS X 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
            grouping.
  
!      NUMBER
            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.
  
! '-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', 'spe',
!      'no-spe', 'ibmlongdouble', 'ieeelongdouble', 'elfv1', 'elfv2'.
  
! '-mabi=spe'
       Extend the current ABI with SPE ABI extensions.  This does not
       change the default ABI, instead it adds the SPE ABI extensions to
       the current ABI.
  
! '-mabi=no-spe'
       Disable Book-E SPE ABI extensions for the current ABI.
  
! '-mabi=ibmlongdouble'
       Change the current ABI to use IBM extended-precision long double.
       This is a PowerPC 32-bit SYSV ABI option.
  
! '-mabi=ieeelongdouble'
       Change the current ABI to use IEEE extended-precision long double.
       This is a PowerPC 32-bit Linux ABI option.
  
! '-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.
  
! '-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.
  
! '-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.
  
! '-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
*** 18314,18328 ****
       planned to add this feature to the GNU linker for 32-bit PowerPC
       systems as well.
  
!      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.
  
       On Mach-O (Darwin) systems, this option directs the compiler emit
       to the glue for every direct call, and the Darwin linker decides
--- 18225,18238 ----
       planned to add this feature to the GNU linker for 32-bit PowerPC
       systems as well.
  
!      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.
  
       On Mach-O (Darwin) systems, this option directs the compiler emit
       to the glue for every direct call, and the Darwin linker decides
*************** These `-m' options are defined for the I
*** 18331,18465 ****
       In the future, GCC may ignore all longcall specifications when the
       linker is known to generate glue.
  
! `-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.
  
! `-pthread'
       Adds support for multithreading with the "pthreads" library.  This
       option sets flags for both the preprocessor and linker.
  
! `-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', `-finite-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.
--- 18241,18374 ----
       In the future, GCC may ignore all longcall specifications when the
       linker is known to generate glue.
  
! '-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.
  
! '-pthread'
       Adds support for multithreading with the "pthreads" library.  This
       option sets flags for both the preprocessor and linker.
  
! '-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', '-finite-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
*** 18467,18477 ****
       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.
  
!      The `-mno-compat-align-parm' option is the default.
  
  
  File: gcc.info,  Node: RX Options,  Next: S/390 and zSeries Options,  Prev: RS/6000 and PowerPC Options,  Up: Submodel Options
--- 18376,18386 ----
       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.
  
!      The '-mno-compat-align-parm' option is the default.
  
  
  File: gcc.info,  Node: RX Options,  Next: S/390 and zSeries Options,  Prev: RS/6000 and PowerPC Options,  Up: Submodel Options
*************** File: gcc.info,  Node: RX Options,  Next
*** 18481,18531 ****
  
  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.
--- 18390,18440 ----
  
  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
*** 18536,18560 ****
  
       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
--- 18445,18469 ----
  
       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
*** 18567,18595 ****
       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
--- 18476,18504 ----
       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
*** 18598,18634 ****
       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.
! 
  
!  _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: Score Options,  Prev: RX Options,  Up: Submodel Options
--- 18507,18542 ----
       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.
  
!  _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: Score Options,  Prev: RX Options,  Up: Submodel Options
*************** File: gcc.info,  Node: S/390 and zSeries
*** 18636,18819 ****
  3.17.39 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 2 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 `-mmo-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'.
  
! `-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 `g5', `g6', `z900', `z990', `z9-109', `z9-ec', `z10',
!      `z196', `zEC12', and `z13'.  When generating code using the
       instructions available on z/Architecture, the default is
!      `-march=z900'.  Otherwise, the default is `-march=g5'.
  
! `-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.
  
! `-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
       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.
  
! `-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 the stack on S/390 grows downward).  If the STACK-GUARD
!      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 STACK-SIZE has to be greater than STACK-GUARD 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 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
       NOP instructions (PRE-HALFWORDS, maximum 1000000).  After the
!      label, 2 * POST-HALFWORDS bytes are appended, using the largest
!      NOP like instructions the architecture allows (maximum 1000000).
  
       If both arguments are zero, hotpatching is disabled.
  
       This option can be overridden for individual functions with the
!      `hotpatch' attribute.
  
  
  File: gcc.info,  Node: Score Options,  Next: SH Options,  Prev: S/390 and zSeries Options,  Up: Submodel Options
--- 18544,18724 ----
  3.17.39 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 2 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 '-mmo-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'.
  
! '-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 'g5', 'g6', 'z900', 'z990', 'z9-109', 'z9-ec', 'z10',
!      'z196', 'zEC12', and 'z13'.  When generating code using the
       instructions available on z/Architecture, the default is
!      '-march=z900'.  Otherwise, the default is '-march=g5'.
  
! '-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.
  
! '-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
       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.
  
! '-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
!      the stack on S/390 grows downward).  If the STACK-GUARD 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 STACK-SIZE has to
!      be greater than STACK-GUARD 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 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
       NOP instructions (PRE-HALFWORDS, maximum 1000000).  After the
!      label, 2 * POST-HALFWORDS bytes are appended, using the largest NOP
!      like instructions the architecture allows (maximum 1000000).
  
       If both arguments are zero, hotpatching is disabled.
  
       This option can be overridden for individual functions with the
!      'hotpatch' attribute.
  
  
  File: gcc.info,  Node: Score Options,  Next: SH Options,  Prev: S/390 and zSeries Options,  Up: Submodel Options
*************** File: gcc.info,  Node: Score Options,  N
*** 18823,18854 ****
  
  These options are defined for Score implementations:
  
! `-meb'
       Compile code for big-endian mode.  This is the default.
  
! `-mel'
       Compile code for little-endian mode.
  
! `-mnhwloop'
!      Disable generation of `bcnz' instructions.
  
! `-muls'
       Enable generation of unaligned load and store instructions.
  
! `-mmac'
!      Enable the use of multiply-accumulate instructions. Disabled by
       default.
  
! `-mscore5'
       Specify the SCORE5 as the target architecture.
  
! `-mscore5u'
       Specify the SCORE5U of the target architecture.
  
! `-mscore7'
!      Specify the SCORE7 as the target architecture. This is the default.
  
! `-mscore7d'
       Specify the SCORE7D as the target architecture.
  
  
--- 18728,18760 ----
  
  These options are defined for Score implementations:
  
! '-meb'
       Compile code for big-endian mode.  This is the default.
  
! '-mel'
       Compile code for little-endian mode.
  
! '-mnhwloop'
!      Disable generation of 'bcnz' instructions.
  
! '-muls'
       Enable generation of unaligned load and store instructions.
  
! '-mmac'
!      Enable the use of multiply-accumulate instructions.  Disabled by
       default.
  
! '-mscore5'
       Specify the SCORE5 as the target architecture.
  
! '-mscore5u'
       Specify the SCORE5U of the target architecture.
  
! '-mscore7'
!      Specify the SCORE7 as the target architecture.  This is the
!      default.
  
! '-mscore7d'
       Specify the SCORE7D as the target architecture.
  
  
*************** File: gcc.info,  Node: SH Options,  Next
*** 18857,19114 ****
  3.17.41 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.
  
! `-m5-32media'
       Generate 32-bit code for SHmedia.
  
! `-m5-32media-nofpu'
       Generate 32-bit code for SHmedia in such a way that the
       floating-point unit is not used.
  
! `-m5-64media'
       Generate 64-bit code for SHmedia.
  
! `-m5-64media-nofpu'
       Generate 64-bit code for SHmedia in such a way that the
       floating-point unit is not used.
  
! `-m5-compact'
       Generate code for SHcompact.
  
! `-m5-compact-nofpu'
       Generate code for SHcompact in such a way that the floating-point
       unit is not used.
  
! `-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 implcit 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
--- 18763,19019 ----
  3.17.41 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.
  
! '-m5-32media'
       Generate 32-bit code for SHmedia.
  
! '-m5-32media-nofpu'
       Generate 32-bit code for SHmedia in such a way that the
       floating-point unit is not used.
  
! '-m5-64media'
       Generate 64-bit code for SHmedia.
  
! '-m5-64media-nofpu'
       Generate 64-bit code for SHmedia in such a way that the
       floating-point unit is not used.
  
! '-m5-compact'
       Generate code for SHcompact.
  
! '-m5-compact-nofpu'
       Generate code for SHcompact in such a way that the floating-point
       unit is not used.
  
! '-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 implcit 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
*** 19118,19168 ****
            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.  For SHmedia STRATEGY can be one of:
  
!     `fp'
            Performs the operation in floating point.  This has a very
            high latency, but needs only a few instructions, so it might
            be a good choice if your code has enough easily-exploitable
--- 19023,19071 ----
            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.  For SHmedia STRATEGY can be one of:
  
!      'fp'
            Performs the operation in floating point.  This has a very
            high latency, but needs only a few instructions, so it might
            be a good choice if your code has enough easily-exploitable
*************** These `-m' options are defined for the S
*** 19170,19207 ****
            instructions together with other instructions.  Division by
            zero causes a floating-point exception.
  
!     `inv'
            Uses integer operations to calculate the inverse of the
            divisor, and then multiplies the dividend with the inverse.
            This strategy allows CSE and hoisting of the inverse
            calculation.  Division by zero calculates an unspecified
            result, but does not trap.
  
!     `inv:minlat'
!           A variant of `inv' where, if no CSE or hoisting opportunities
            have been found, or if the entire operation has been hoisted
            to the same place, the last stages of the inverse calculation
            are intertwined with the final multiply to reduce the overall
            latency, at the expense of using a few more instructions, and
            thus offering fewer scheduling opportunities with other code.
  
!     `call'
            Calls a library function that usually implements the
!           `inv:minlat' strategy.  This gives high code density for
!           `m5-*media-nofpu' compilations.
  
!     `call2'
            Uses a different entry point of the same library function,
            where it assumes that a pointer to a lookup table has already
            been set up, which exposes the pointer load to CSE and code
            hoisting optimizations.
  
!     `inv:call'
!     `inv:call2'
!     `inv:fp'
!           Use the `inv' algorithm for initial code generation, but if
!           the code stays unoptimized, revert to the `call', `call2', or
!           `fp' strategies, respectively.  Note that the
            potentially-trapping side effect of division by zero is
            carried by a separate instruction, so it is possible that all
            the integer instructions are hoisted out, but the marker for
--- 19073,19110 ----
            instructions together with other instructions.  Division by
            zero causes a floating-point exception.
  
!      'inv'
            Uses integer operations to calculate the inverse of the
            divisor, and then multiplies the dividend with the inverse.
            This strategy allows CSE and hoisting of the inverse
            calculation.  Division by zero calculates an unspecified
            result, but does not trap.
  
!      'inv:minlat'
!           A variant of 'inv' where, if no CSE or hoisting opportunities
            have been found, or if the entire operation has been hoisted
            to the same place, the last stages of the inverse calculation
            are intertwined with the final multiply to reduce the overall
            latency, at the expense of using a few more instructions, and
            thus offering fewer scheduling opportunities with other code.
  
!      'call'
            Calls a library function that usually implements the
!           'inv:minlat' strategy.  This gives high code density for
!           'm5-*media-nofpu' compilations.
  
!      'call2'
            Uses a different entry point of the same library function,
            where it assumes that a pointer to a lookup table has already
            been set up, which exposes the pointer load to CSE and code
            hoisting optimizations.
  
!      'inv:call'
!      'inv:call2'
!      'inv:fp'
!           Use the 'inv' algorithm for initial code generation, but if
!           the code stays unoptimized, revert to the 'call', 'call2', or
!           'fp' strategies, respectively.  Note that the
            potentially-trapping side effect of division by zero is
            carried by a separate instruction, so it is possible that all
            the integer instructions are hoisted out, but the marker for
*************** These `-m' options are defined for the S
*** 19209,19276 ****
            floating-point operations or a call is not possible in that
            case.
  
!     `inv20u'
!     `inv20l'
!           Variants of the `inv:minlat' strategy.  In the case that the
            inverse calculation is not separated from the multiply, they
            speed up division where the dividend fits into 20 bits (plus
!           sign where applicable) by inserting a test to skip a number
!           of operations in this case; this test slows down the case of
!           larger dividends.  `inv20u' assumes the case of a such a
!           small dividend to be unlikely, and `inv20l' assumes it to be
!           likely.
! 
  
       For targets other than SHmedia 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'
!      and `inv: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 can not 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.
  
! `-mindexed-addressing'
       Enable the use of the indexed addressing mode for
       SHmedia32/SHcompact.  This is only safe if the hardware and/or OS
       implement 32-bit wrap-around semantics for the indexed addressing
--- 19112,19176 ----
            floating-point operations or a call is not possible in that
            case.
  
!      'inv20u'
!      'inv20l'
!           Variants of the 'inv:minlat' strategy.  In the case that the
            inverse calculation is not separated from the multiply, they
            speed up division where the dividend fits into 20 bits (plus
!           sign where applicable) by inserting a test to skip a number of
!           operations in this case; this test slows down the case of
!           larger dividends.  'inv20u' assumes the case of a such a small
!           dividend to be unlikely, and 'inv20l' assumes it to be likely.
  
       For targets other than SHmedia 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'
!      and 'inv: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 can not 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.
  
! '-mindexed-addressing'
       Enable the use of the indexed addressing mode for
       SHmedia32/SHcompact.  This is only safe if the hardware and/or OS
       implement 32-bit wrap-around semantics for the indexed addressing
*************** These `-m' options are defined for the S
*** 19278,19415 ****
       with 64-bit MMU, which the OS could use to get 32-bit addressing,
       but since no current hardware implementation supports this or any
       other way to make the indexed addressing mode safe to use in the
!      32-bit ABI, the default is `-mno-indexed-addressing'.
  
! `-mgettrcost=NUMBER'
!      Set the cost assumed for the `gettr' instruction to NUMBER.  The
!      default is 2 if `-mpt-fixed' is in effect, 100 otherwise.
  
! `-mpt-fixed'
!      Assume `pt*' instructions won't trap.  This generally generates
       better-scheduled code, but is unsafe on current hardware.  The
!      current architecture definition says that `ptabs' and `ptrel' trap
       when the target anded with 3 is 3.  This has the unintentional
       effect of making it unsafe to schedule these instructions before a
       branch, or hoist them out of a loop.  For example,
!      `__do_global_ctors', a part of `libgcc' that runs constructors at
       program startup, calls functions in a list which is delimited by
!      -1.  With the `-mpt-fixed' option, the `ptabs' is done before
!      testing against -1.  That means that all the constructors run a
!      bit more quickly, but when the loop comes to the end of the list,
!      the program crashes because `ptabs' loads -1 into a target
!      register.
  
       Since this option is unsafe for any hardware implementing the
!      current architecture specification, the default is
!      `-mno-pt-fixed'.  Unless specified explicitly with `-mgettrcost',
!      `-mno-pt-fixed' also implies `-mgettrcost=100'; this deters
!      register allocation from using target registers for storing
!      ordinary integers.
  
! `-minvalid-symbols'
       Assume symbols might be invalid.  Ordinary function symbols
       generated by the compiler are always valid to load with
!      `movi'/`shori'/`ptabs' or `movi'/`shori'/`ptrel', but with
       assembler and/or linker tricks it is possible to generate symbols
!      that cause `ptabs' or `ptrel' to trap.  This option is only
!      meaningful when `-mno-pt-fixed' is in effect.  It prevents
       cross-basic-block CSE, hoisting and most scheduling of symbol
!      loads.  The default is `-mno-invalid-symbols'.
  
! `-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 can't
       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.
  
- 
  
  File: gcc.info,  Node: Solaris 2 Options,  Next: SPARC Options,  Prev: SH Options,  Up: Submodel Options
  
  3.17.42 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'
       Add support for multithreading using the POSIX threads library.
       This option sets flags for both the preprocessor and linker.  This
!      option does not affect the thread safety of object code produced
!      by the compiler or that of libraries supplied with it.
  
! `-pthread'
!      This is a synonym for `-pthreads'.
  
  
  File: gcc.info,  Node: SPARC Options,  Next: SPU Options,  Prev: Solaris 2 Options,  Up: Submodel Options
--- 19178,19310 ----
       with 64-bit MMU, which the OS could use to get 32-bit addressing,
       but since no current hardware implementation supports this or any
       other way to make the indexed addressing mode safe to use in the
!      32-bit ABI, the default is '-mno-indexed-addressing'.
  
! '-mgettrcost=NUMBER'
!      Set the cost assumed for the 'gettr' instruction to NUMBER.  The
!      default is 2 if '-mpt-fixed' is in effect, 100 otherwise.
  
! '-mpt-fixed'
!      Assume 'pt*' instructions won't trap.  This generally generates
       better-scheduled code, but is unsafe on current hardware.  The
!      current architecture definition says that 'ptabs' and 'ptrel' trap
       when the target anded with 3 is 3.  This has the unintentional
       effect of making it unsafe to schedule these instructions before a
       branch, or hoist them out of a loop.  For example,
!      '__do_global_ctors', a part of 'libgcc' that runs constructors at
       program startup, calls functions in a list which is delimited by
!      -1.  With the '-mpt-fixed' option, the 'ptabs' is done before
!      testing against -1.  That means that all the constructors run a bit
!      more quickly, but when the loop comes to the end of the list, the
!      program crashes because 'ptabs' loads -1 into a target register.
  
       Since this option is unsafe for any hardware implementing the
!      current architecture specification, the default is '-mno-pt-fixed'.
!      Unless specified explicitly with '-mgettrcost', '-mno-pt-fixed'
!      also implies '-mgettrcost=100'; this deters register allocation
!      from using target registers for storing ordinary integers.
  
! '-minvalid-symbols'
       Assume symbols might be invalid.  Ordinary function symbols
       generated by the compiler are always valid to load with
!      'movi'/'shori'/'ptabs' or 'movi'/'shori'/'ptrel', but with
       assembler and/or linker tricks it is possible to generate symbols
!      that cause 'ptabs' or 'ptrel' to trap.  This option is only
!      meaningful when '-mno-pt-fixed' is in effect.  It prevents
       cross-basic-block CSE, hoisting and most scheduling of symbol
!      loads.  The default is '-mno-invalid-symbols'.
  
! '-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 can't
       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.
  
  
  File: gcc.info,  Node: Solaris 2 Options,  Next: SPARC Options,  Prev: SH Options,  Up: Submodel Options
  
  3.17.42 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'
       Add support for multithreading using the POSIX threads library.
       This option sets flags for both the preprocessor and linker.  This
!      option does not affect the thread safety of object code produced by
!      the compiler or that of libraries supplied with it.
  
! '-pthread'
!      This is a synonym for '-pthreads'.
  
  
  File: gcc.info,  Node: SPARC Options,  Next: SPU Options,  Prev: Solaris 2 Options,  Up: Submodel Options
*************** File: gcc.info,  Node: SPARC Options,  N
*** 19417,19476 ****
  3.17.43 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.
--- 19312,19370 ----
  3.17.43 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
*** 19480,19493 ****
       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
--- 19374,19387 ----
       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
*** 19495,19731 ****
       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.
  
! `-mno-faster-structs'
! `-mfaster-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.
  
! `-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', `sparclite', `f930', `f934',
!      `sparclite86x', `sparclet', `tsc701', `v9', `ultrasparc',
!      `ultrasparc3', `niagara', `niagara2', `niagara3' and `niagara4'.
  
       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.
  
!     v7
            cypress, leon3v7
  
!     v8
            supersparc, hypersparc, leon, leon3
  
!     sparclite
            f930, f934, sparclite86x
  
!     sparclet
            tsc701
  
!     v9
            ultrasparc, ultrasparc3, niagara, niagara2, niagara3, niagara4
  
       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.
  
! `-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', `f930',
!      `f934', `sparclite86x', `tsc701', `ultrasparc', `ultrasparc3',
!      `niagara', `niagara2', `niagara3' and `niagara4'.  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'.
  
! `-mcbcond'
! `-mno-cbcond'
!      With `-mcbcond', GCC generates code that takes advantage of
       compare-and-branch instructions, as defined in the Sparc
!      Architecture 2011.  The default is `-mcbcond' when targeting a cpu
       that supports such instructions, such as niagara-4 and later.
  
! `-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 instructions, such as
       Niagara-2 and later.
  
! `-mfmaf'
! `-mno-fmaf'
!      With `-mfmaf', GCC generates code that takes advantage of the
       UltraSPARC Fused Multiply-Add Floating-point extensions.  The
!      default is `-mfmaf' when targeting a cpu that supports such
       instructions, such as Niagara-3 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.
  
!  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
!           time).  The global register %g4 points to the base of the
!           data 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.
--- 19389,19625 ----
       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.
  
! '-mno-faster-structs'
! '-mfaster-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.
  
! '-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', 'sparclite', 'f930', 'f934',
!      'sparclite86x', 'sparclet', 'tsc701', 'v9', 'ultrasparc',
!      'ultrasparc3', 'niagara', 'niagara2', 'niagara3' and 'niagara4'.
  
       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.
  
!      v7
            cypress, leon3v7
  
!      v8
            supersparc, hypersparc, leon, leon3
  
!      sparclite
            f930, f934, sparclite86x
  
!      sparclet
            tsc701
  
!      v9
            ultrasparc, ultrasparc3, niagara, niagara2, niagara3, niagara4
  
       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.
  
! '-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', 'f930',
!      'f934', 'sparclite86x', 'tsc701', 'ultrasparc', 'ultrasparc3',
!      'niagara', 'niagara2', 'niagara3' and 'niagara4'.  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'.
  
! '-mcbcond'
! '-mno-cbcond'
!      With '-mcbcond', GCC generates code that takes advantage of
       compare-and-branch instructions, as defined in the Sparc
!      Architecture 2011.  The default is '-mcbcond' when targeting a cpu
       that supports such instructions, such as niagara-4 and later.
  
! '-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 instructions, such as
       Niagara-2 and later.
  
! '-mfmaf'
! '-mno-fmaf'
!      With '-mfmaf', GCC generates code that takes advantage of the
       UltraSPARC Fused Multiply-Add Floating-point extensions.  The
!      default is '-mfmaf' when targeting a cpu that supports such
       instructions, such as Niagara-3 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.
  
!  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
!           time).  The global register %g4 points to the base of the data
!           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: SPU Options,  Nex
*** 19736,19847 ****
  3.17.44 SPU Options
  -------------------
  
! These `-m' options are supported on the SPU:
  
- `-mwarn-reloc'
- `-merror-reloc'
       The loader for SPU does not handle dynamic relocations.  By
       default, GCC gives an error when it generates code that requires a
!      dynamic relocation.  `-mno-error-reloc' disables the error,
!      `-mwarn-reloc' generates a warning instead.
  
- `-msafe-dma'
- `-munsafe-dma'
       Instructions that initiate or test completion of DMA must not be
       reordered with respect to loads and stores of the memory that is
!      being accessed.  With `-munsafe-dma' you must use the `volatile'
       keyword to protect memory accesses, but that can lead to
!      inefficient code in places where the memory is known to not
!      change.  Rather than mark the memory as volatile, you can use
!      `-msafe-dma' to tell the compiler to treat the DMA instructions as
!      potentially affecting all memory.
  
- `-mbranch-hints'
       By default, GCC generates a branch hint instruction to avoid
       pipeline stalls for always-taken or probably-taken branches.  A
       hint is not generated closer than 8 instructions away from its
       branch.  There is little reason to disable them, except for
       debugging purposes, or to make an object a little bit smaller.
  
! `-msmall-mem'
! `-mlarge-mem'
       By default, GCC generates code assuming that addresses are never
!      larger than 18 bits.  With `-mlarge-mem' code is generated that
       assumes a full 32-bit address.
  
! `-mstdmain'
       By default, GCC links against startup code that assumes the
       SPU-style main function interface (which has an unconventional
!      parameter list).  With `-mstdmain', GCC links your program against
!      startup code that assumes a C99-style interface to `main',
!      including a local copy of `argv' strings.
  
! `-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.
  
! `-mea32'
! `-mea64'
       Compile code assuming that pointers to the PPU address space
!      accessed via the `__ea' named address space qualifier are either
!      32 or 64 bits wide.  The default is 32 bits.  As this is an
       ABI-changing option, all object code in an executable must be
       compiled with the same setting.
  
! `-maddress-space-conversion'
! `-mno-address-space-conversion'
!      Allow/disallow treating the `__ea' address space as superset of
!      the generic address space.  This enables explicit type casts
!      between `__ea' and generic pointer as well as implicit conversions
!      of generic pointers to `__ea' pointers.  The default is to allow
       address space pointer conversions.
  
! `-mcache-size=CACHE-SIZE'
       This option controls the version of libgcc that the compiler links
!      to an executable and selects a software-managed cache for
!      accessing variables in the `__ea' address space with a particular
!      cache size.  Possible options for CACHE-SIZE are `8', `16', `32',
!      `64' and `128'.  The default cache size is 64KB.
  
! `-matomic-updates'
! `-mno-atomic-updates'
       This option controls the version of libgcc that the compiler links
       to an executable and selects whether atomic updates to the
       software-managed cache of PPU-side variables are used.  If you use
       atomic updates, changes to a PPU variable from SPU code using the
!      `__ea' named address space qualifier do not interfere with changes
       to other PPU variables residing in the same cache line from PPU
       code.  If you do not use atomic updates, such interference may
       occur; however, writing back cache lines is more efficient.  The
       default behavior is to use atomic updates.
  
! `-mdual-nops'
! `-mdual-nops=N'
       By default, GCC inserts nops to increase dual issue when it expects
       it to increase performance.  N can be a value from 0 to 10.  A
       smaller N inserts fewer nops.  10 is the default, 0 is the same as
!      `-mno-dual-nops'.  Disabled with `-Os'.
  
! `-mhint-max-nops=N'
       Maximum number of nops to insert for a branch hint.  A branch hint
       must be at least 8 instructions away from the branch it is
       affecting.  GCC inserts up to N nops to enforce this, otherwise it
       does not generate the branch hint.
  
! `-mhint-max-distance=N'
       The encoding of the branch hint instruction limits the hint to be
!      within 256 instructions of the branch it is affecting.  By
!      default, GCC makes sure it is within 125.
  
! `-msafe-hints'
       Work around a hardware bug that causes the SPU to stall
!      indefinitely.  By default, GCC inserts the `hbrp' instruction to
       make sure this stall won't happen.
  
- 
  
  File: gcc.info,  Node: System V Options,  Next: TILE-Gx Options,  Prev: SPU Options,  Up: Submodel Options
  
--- 19630,19745 ----
  3.17.44 SPU Options
  -------------------
  
! These '-m' options are supported on the SPU:
! 
! '-mwarn-reloc'
! '-merror-reloc'
  
       The loader for SPU does not handle dynamic relocations.  By
       default, GCC gives an error when it generates code that requires a
!      dynamic relocation.  '-mno-error-reloc' disables the error,
!      '-mwarn-reloc' generates a warning instead.
! 
! '-msafe-dma'
! '-munsafe-dma'
  
       Instructions that initiate or test completion of DMA must not be
       reordered with respect to loads and stores of the memory that is
!      being accessed.  With '-munsafe-dma' you must use the 'volatile'
       keyword to protect memory accesses, but that can lead to
!      inefficient code in places where the memory is known to not change.
!      Rather than mark the memory as volatile, you can use '-msafe-dma'
!      to tell the compiler to treat the DMA instructions as potentially
!      affecting all memory.
! 
! '-mbranch-hints'
  
       By default, GCC generates a branch hint instruction to avoid
       pipeline stalls for always-taken or probably-taken branches.  A
       hint is not generated closer than 8 instructions away from its
       branch.  There is little reason to disable them, except for
       debugging purposes, or to make an object a little bit smaller.
  
! '-msmall-mem'
! '-mlarge-mem'
! 
       By default, GCC generates code assuming that addresses are never
!      larger than 18 bits.  With '-mlarge-mem' code is generated that
       assumes a full 32-bit address.
  
! '-mstdmain'
! 
       By default, GCC links against startup code that assumes the
       SPU-style main function interface (which has an unconventional
!      parameter list).  With '-mstdmain', GCC links your program against
!      startup code that assumes a C99-style interface to 'main',
!      including a local copy of 'argv' strings.
  
! '-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.
  
! '-mea32'
! '-mea64'
       Compile code assuming that pointers to the PPU address space
!      accessed via the '__ea' named address space qualifier are either 32
!      or 64 bits wide.  The default is 32 bits.  As this is an
       ABI-changing option, all object code in an executable must be
       compiled with the same setting.
  
! '-maddress-space-conversion'
! '-mno-address-space-conversion'
!      Allow/disallow treating the '__ea' address space as superset of the
!      generic address space.  This enables explicit type casts between
!      '__ea' and generic pointer as well as implicit conversions of
!      generic pointers to '__ea' pointers.  The default is to allow
       address space pointer conversions.
  
! '-mcache-size=CACHE-SIZE'
       This option controls the version of libgcc that the compiler links
!      to an executable and selects a software-managed cache for accessing
!      variables in the '__ea' address space with a particular cache size.
!      Possible options for CACHE-SIZE are '8', '16', '32', '64' and
!      '128'.  The default cache size is 64KB.
  
! '-matomic-updates'
! '-mno-atomic-updates'
       This option controls the version of libgcc that the compiler links
       to an executable and selects whether atomic updates to the
       software-managed cache of PPU-side variables are used.  If you use
       atomic updates, changes to a PPU variable from SPU code using the
!      '__ea' named address space qualifier do not interfere with changes
       to other PPU variables residing in the same cache line from PPU
       code.  If you do not use atomic updates, such interference may
       occur; however, writing back cache lines is more efficient.  The
       default behavior is to use atomic updates.
  
! '-mdual-nops'
! '-mdual-nops=N'
       By default, GCC inserts nops to increase dual issue when it expects
       it to increase performance.  N can be a value from 0 to 10.  A
       smaller N inserts fewer nops.  10 is the default, 0 is the same as
!      '-mno-dual-nops'.  Disabled with '-Os'.
  
! '-mhint-max-nops=N'
       Maximum number of nops to insert for a branch hint.  A branch hint
       must be at least 8 instructions away from the branch it is
       affecting.  GCC inserts up to N nops to enforce this, otherwise it
       does not generate the branch hint.
  
! '-mhint-max-distance=N'
       The encoding of the branch hint instruction limits the hint to be
!      within 256 instructions of the branch it is affecting.  By default,
!      GCC makes sure it is within 125.
  
! '-msafe-hints'
       Work around a hardware bug that causes the SPU to stall
!      indefinitely.  By default, GCC inserts the 'hbrp' instruction to
       make sure this stall won't happen.
  
  
  File: gcc.info,  Node: System V Options,  Next: TILE-Gx Options,  Prev: SPU Options,  Up: Submodel Options
  
*************** File: gcc.info,  Node: System V Options,
*** 19851,19873 ****
  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.
  
--- 19749,19771 ----
  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: TILE-Gx Options,
*** 19877,19905 ****
  3.17.46 TILE-Gx Options
  -----------------------
  
! These `-m' options are supported on the TILE-Gx:
  
! `-mcmodel=small'
       Generate code for the small model.  The distance for direct calls
       is limited to 500M in either direction.  PC-relative addresses are
       32 bits.  Absolute addresses support the full address range.
  
! `-mcmodel=large'
       Generate code for the large model.  There is no limitation on call
       distance, pc-relative addresses, or absolute addresses.
  
! `-mcpu=NAME'
       Selects the type of CPU to be targeted.  Currently the only
!      supported type is `tilegx'.
  
! `-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.
  
! `-mbig-endian'
! `-mlittle-endian'
       Generate code in big/little endian mode, respectively.
  
  
--- 19775,19803 ----
  3.17.46 TILE-Gx Options
  -----------------------
  
! These '-m' options are supported on the TILE-Gx:
  
! '-mcmodel=small'
       Generate code for the small model.  The distance for direct calls
       is limited to 500M in either direction.  PC-relative addresses are
       32 bits.  Absolute addresses support the full address range.
  
! '-mcmodel=large'
       Generate code for the large model.  There is no limitation on call
       distance, pc-relative addresses, or absolute addresses.
  
! '-mcpu=NAME'
       Selects the type of CPU to be targeted.  Currently the only
!      supported type is 'tilegx'.
  
! '-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.
  
! '-mbig-endian'
! '-mlittle-endian'
       Generate code in big/little endian mode, respectively.
  
  
*************** File: gcc.info,  Node: TILEPro Options,
*** 19908,19920 ****
  3.17.47 TILEPro Options
  -----------------------
  
! These `-m' options are supported on the TILEPro:
  
! `-mcpu=NAME'
       Selects the type of CPU to be targeted.  Currently the only
!      supported type is `tilepro'.
  
! `-m32'
       Generate code for a 32-bit environment, which sets int, long, and
       pointer to 32 bits.  This is the only supported behavior so the
       flag is essentially ignored.
--- 19806,19818 ----
  3.17.47 TILEPro Options
  -----------------------
  
! These '-m' options are supported on the TILEPro:
  
! '-mcpu=NAME'
       Selects the type of CPU to be targeted.  Currently the only
!      supported type is 'tilepro'.
  
! '-m32'
       Generate code for a 32-bit environment, which sets int, long, and
       pointer to 32 bits.  This is the only supported behavior so the
       flag is essentially ignored.
*************** File: gcc.info,  Node: V850 Options,  Ne
*** 19925,20052 ****
  3.17.48 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
--- 19823,19950 ----
  3.17.48 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
*************** These `-m' options are defined for V850
*** 20057,20077 ****
  
          * 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.
--- 19955,19975 ----
  
          * 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.
*************** These `-m' options are defined for V850
*** 20079,20129 ****
          * 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,  Next: Visium Options,  Prev: V850 Options,  Up: Submodel Options
  
  3.17.49 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.
  
! `-mg'
       Output code for G-format floating-point numbers instead of
       D-format.
  
--- 19977,20026 ----
          * 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,  Next: Visium Options,  Prev: V850 Options,  Up: Submodel Options
  
  3.17.49 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.
  
! '-mg'
       Output code for G-format floating-point numbers instead of
       D-format.
  
*************** File: gcc.info,  Node: Visium Options,
*** 20133,20189 ****
  3.17.50 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
--- 20030,20086 ----
  3.17.50 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
*** 20195,20218 ****
  3.17.51 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
--- 20092,20115 ----
  3.17.51 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
*** 20224,20251 ****
  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__'.
  
! `-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,  Next: x86 Windows Options,  Prev: VxWorks Options,  Up: Submodel Options
--- 20121,20148 ----
  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__'.
  
! '-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,  Next: x86 Windows Options,  Prev: VxWorks Options,  Up: Submodel Options
*************** File: gcc.info,  Node: x86 Options,  Nex
*** 20253,20498 ****
  3.17.53 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'.
  
       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.
  
!     `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.
  
!     `pentium-mmx'
            Intel Pentium MMX CPU, based on Pentium core with MMX
            instruction set support.
  
!     `pentiumpro'
            Intel Pentium Pro CPU.
  
!     `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
            instruction set support.
  
!     `pentium3'
!     `pentium3m'
            Intel Pentium III CPU, based on Pentium Pro core with MMX and
            SSE instruction set support.
  
!     `pentium-m'
            Intel Pentium M; low-power version of Intel Pentium III CPU
            with MMX, SSE and SSE2 instruction set support.  Used by
            Centrino notebooks.
  
!     `pentium4'
!     `pentium4m'
            Intel Pentium 4 CPU with MMX, SSE and SSE2 instruction set
            support.
  
!     `prescott'
            Improved version of Intel Pentium 4 CPU with MMX, SSE, SSE2
            and SSE3 instruction set support.
  
!     `nocona'
            Improved version of Intel Pentium 4 CPU with 64-bit
            extensions, MMX, SSE, SSE2 and SSE3 instruction set support.
  
!     `core2'
            Intel Core 2 CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3
            and SSSE3 instruction set support.
  
!     `nehalem'
            Intel Nehalem CPU with 64-bit extensions, MMX, SSE, SSE2,
            SSE3, SSSE3, SSE4.1, SSE4.2 and POPCNT instruction set
            support.
  
!     `westmere'
            Intel Westmere CPU with 64-bit extensions, MMX, SSE, SSE2,
            SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES and PCLMUL
            instruction set support.
  
!     `sandybridge'
!           Intel Sandy Bridge CPU with 64-bit extensions, MMX, SSE,
!           SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AES and
!           PCLMUL instruction set support.
  
!     `ivybridge'
            Intel Ivy Bridge CPU with 64-bit extensions, MMX, SSE, SSE2,
            SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AES, PCLMUL,
            FSGSBASE, RDRND and F16C instruction set support.
  
!     `haswell'
            Intel Haswell CPU with 64-bit extensions, MOVBE, MMX, SSE,
            SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES,
            PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2 and F16C instruction
            set support.
  
!     `broadwell'
            Intel Broadwell CPU with 64-bit extensions, MOVBE, MMX, SSE,
            SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES,
            PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX
            and PREFETCHW instruction set support.
  
!     `bonnell'
            Intel Bonnell CPU with 64-bit extensions, MOVBE, MMX, SSE,
            SSE2, SSE3 and SSSE3 instruction set support.
  
!     `silvermont'
            Intel Silvermont CPU with 64-bit extensions, MOVBE, MMX, SSE,
            SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PCLMUL and
            RDRND instruction set support.
  
!     `knl'
!           Intel Knight's Landing CPU with 64-bit extensions, MOVBE,
!           MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX,
!           AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C,
!           RDSEED, ADCX, PREFETCHW, AVX512F, AVX512PF, AVX512ER and
!           AVX512CD 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,
!           PCL_MUL, 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, PCL_MUL, 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, PCL_MUL, 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, PCL_MUL, CX16, MOVBE,
!           MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM 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, PCL_MUL,
!           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.)
  
!     `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.
  
            As new processors are deployed in the marketplace, the
            behavior of this option will change.  Therefore, if you
--- 20150,20390 ----
  3.17.53 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'.
  
       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.
  
!      '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.
  
!      'pentium-mmx'
            Intel Pentium MMX CPU, based on Pentium core with MMX
            instruction set support.
  
!      'pentiumpro'
            Intel Pentium Pro CPU.
  
!      '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
            instruction set support.
  
!      'pentium3'
!      'pentium3m'
            Intel Pentium III CPU, based on Pentium Pro core with MMX and
            SSE instruction set support.
  
!      'pentium-m'
            Intel Pentium M; low-power version of Intel Pentium III CPU
            with MMX, SSE and SSE2 instruction set support.  Used by
            Centrino notebooks.
  
!      'pentium4'
!      'pentium4m'
            Intel Pentium 4 CPU with MMX, SSE and SSE2 instruction set
            support.
  
!      'prescott'
            Improved version of Intel Pentium 4 CPU with MMX, SSE, SSE2
            and SSE3 instruction set support.
  
!      'nocona'
            Improved version of Intel Pentium 4 CPU with 64-bit
            extensions, MMX, SSE, SSE2 and SSE3 instruction set support.
  
!      'core2'
            Intel Core 2 CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3
            and SSSE3 instruction set support.
  
!      'nehalem'
            Intel Nehalem CPU with 64-bit extensions, MMX, SSE, SSE2,
            SSE3, SSSE3, SSE4.1, SSE4.2 and POPCNT instruction set
            support.
  
!      'westmere'
            Intel Westmere CPU with 64-bit extensions, MMX, SSE, SSE2,
            SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES and PCLMUL
            instruction set support.
  
!      'sandybridge'
!           Intel Sandy Bridge CPU with 64-bit extensions, MMX, SSE, SSE2,
!           SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AES and PCLMUL
!           instruction set support.
  
!      'ivybridge'
            Intel Ivy Bridge CPU with 64-bit extensions, MMX, SSE, SSE2,
            SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AES, PCLMUL,
            FSGSBASE, RDRND and F16C instruction set support.
  
!      'haswell'
            Intel Haswell CPU with 64-bit extensions, MOVBE, MMX, SSE,
            SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES,
            PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2 and F16C instruction
            set support.
  
!      'broadwell'
            Intel Broadwell CPU with 64-bit extensions, MOVBE, MMX, SSE,
            SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES,
            PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX
            and PREFETCHW instruction set support.
  
!      'bonnell'
            Intel Bonnell CPU with 64-bit extensions, MOVBE, MMX, SSE,
            SSE2, SSE3 and SSSE3 instruction set support.
  
!      'silvermont'
            Intel Silvermont CPU with 64-bit extensions, MOVBE, MMX, SSE,
            SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PCLMUL and
            RDRND instruction set support.
  
!      'knl'
!           Intel Knight's Landing CPU with 64-bit extensions, MOVBE, MMX,
!           SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2,
!           AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED,
!           ADCX, PREFETCHW, AVX512F, AVX512PF, AVX512ER and AVX512CD
!           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, PCL_MUL,
!           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, PCL_MUL, 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, PCL_MUL, 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, PCL_MUL, CX16, MOVBE, MMX,
!           SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM 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, PCL_MUL, 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.)
  
!      '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.
  
            As new processors are deployed in the marketplace, the
            behavior of this option will change.  Therefore, if you
*************** These `-m' options are defined for the x
*** 20500,20518 ****
            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.
  
--- 20392,20409 ----
            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
*** 20522,20577 ****
            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 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 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.
  
!           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.
  
            The resulting code should be considerably faster in the
!           majority of cases and avoid the numerical instability
!           problems of 387 code, but may break some existing code that
!           expects temporaries to be 80 bits.
  
            This is the default choice for the x86-64 compiler.
  
!     `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
--- 20413,20468 ----
            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 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
!           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.
  
!           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.
  
            The resulting code should be considerably faster in the
!           majority of cases and avoid the numerical instability problems
!           of 387 code, but may break some existing code that expects
!           temporaries to be 80 bits.
  
            This is the default choice for the x86-64 compiler.
  
!      '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
*** 20580,20763 ****
            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.
  
! `-msoft-float'
       Generate output containing library calls for floating point.
  
       *Warning:* the requisite libraries are not part of GCC.  Normally
!      the facilities of the machine's usual C compiler are used, but
!      this can't be done directly in cross-compilation.  You must make
!      your own arrangements to provide suitable library functions for
       cross-compilation.
  
       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 the default on OpenBSD and
!      NetBSD.  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' is specified, data objects larger than
!      THRESHOLD are placed in the large data section.  This value must
!      be the same across all objects linked into the binary, and
!      defaults to 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 Solaris 8 and 9 and VxWorks to match the ABI of the
       Sun Studio compilers until version 12.  Later compiler versions
!      (starting with Studio 12 Update 1) follow the ABI used by other
!      x86 targets, which is the default on Solaris 10 and later.  _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
--- 20471,20655 ----
            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.
  
! '-msoft-float'
       Generate output containing library calls for floating point.
  
       *Warning:* the requisite libraries are not part of GCC.  Normally
!      the facilities of the machine's usual C compiler are used, but this
!      can't be done directly in cross-compilation.  You must make your
!      own arrangements to provide suitable library functions for
       cross-compilation.
  
       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 the default on OpenBSD and
!      NetBSD.  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' is specified, data objects larger than
!      THRESHOLD are placed in the large data section.  This value must be
!      the same across all objects linked into the binary, and defaults to
!      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 Solaris 8 and 9 and VxWorks to match the ABI of the
       Sun Studio compilers until version 12.  Later compiler versions
!      (starting with Studio 12 Update 1) follow the ABI used by other x86
!      targets, which is the default on Solaris 10 and later.  _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
*** 20765,20794 ****
  
       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.
  
! `-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
       where stack space is important limitation.  This option leads to
--- 20657,20685 ----
  
       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.
  
! '-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
       where stack space is important limitation.  This option leads to
*************** These `-m' options are defined for the x
*** 20798,20921 ****
       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
!      boundary must be as aligned as that required by any value stored
!      on the stack.  Further, every function must be generated such that
!      it keeps the stack aligned.  Thus calling a function compiled with
!      a higher preferred stack boundary from a function compiled with a
!      lower preferred stack boundary most likely misaligns the stack.
!      It is recommended that libraries that use callbacks always use the
       default setting.
  
       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'
! `-mavx512pf'
! `-mavx512er'
! `-mavx512cd'
! `-msha'
! `-maes'
! `-mpclmul'
! `-mclfushopt'
! `-mfsgsbase'
! `-mrdrnd'
! `-mf16c'
! `-mfma'
! `-mfma4'
! `-mno-fma4'
! `-mprefetchwt1'
! `-mxop'
! `-mlwp'
! `-m3dnow'
! `-mpopcnt'
! `-mabm'
! `-mbmi'
! `-mbmi2'
! `-mlzcnt'
! `-mfxsr'
! `-mxsave'
! `-mxsaveopt'
! `-mxsavec'
! `-mxsaves'
! `-mrtm'
! `-mtbm'
! `-mmpx'
! `-mmwaitx'
       These switches enable the use of instructions in the MMX, SSE,
       SSE2, SSE3, SSSE3, SSE4.1, AVX, AVX2, AVX512F, AVX512PF, AVX512ER,
       AVX512CD, SHA, AES, PCLMUL, FSGSBASE, RDRND, F16C, FMA, SSE4A,
       FMA4, XOP, LWP, ABM, BMI, BMI2, FXSR, XSAVE, XSAVEOPT, LZCNT, RTM,
!      MPX, MWAITX or 3DNow!  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.
  
       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
--- 20689,20811 ----
       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
!      boundary must be as aligned as that required by any value stored on
!      the stack.  Further, every function must be generated such that it
!      keeps the stack aligned.  Thus calling a function compiled with a
!      higher preferred stack boundary from a function compiled with a
!      lower preferred stack boundary most likely misaligns the stack.  It
!      is recommended that libraries that use callbacks always use the
       default setting.
  
       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'
! '-mavx512pf'
! '-mavx512er'
! '-mavx512cd'
! '-msha'
! '-maes'
! '-mpclmul'
! '-mclfushopt'
! '-mfsgsbase'
! '-mrdrnd'
! '-mf16c'
! '-mfma'
! '-mfma4'
! '-mno-fma4'
! '-mprefetchwt1'
! '-mxop'
! '-mlwp'
! '-m3dnow'
! '-mpopcnt'
! '-mabm'
! '-mbmi'
! '-mbmi2'
! '-mlzcnt'
! '-mfxsr'
! '-mxsave'
! '-mxsaveopt'
! '-mxsavec'
! '-mxsaves'
! '-mrtm'
! '-mtbm'
! '-mmpx'
! '-mmwaitx'
       These switches enable the use of instructions in the MMX, SSE,
       SSE2, SSE3, SSSE3, SSE4.1, AVX, AVX2, AVX512F, AVX512PF, AVX512ER,
       AVX512CD, SHA, AES, PCLMUL, FSGSBASE, RDRND, F16C, FMA, SSE4A,
       FMA4, XOP, LWP, ABM, BMI, BMI2, FXSR, XSAVE, XSAVEOPT, LZCNT, RTM,
!      MPX, MWAITX or 3DNow! 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.
  
       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
*** 20924,21269 ****
       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.
  
! `-mcx16'
!      This option enables GCC to generate `CMPXCHG16B' instructions.
!      `CMPXCHG16B' allows for atomic operations on 128-bit double
!      quadword (or oword) data types.  This is useful for
!      high-resolution counters that can be updated by multiple
!      processors (or cores).  This instruction is generated as part of
!      atomic built-in functions: see *note __sync Builtins:: or *note
!      __atomic Builtins:: for details.
  
! `-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 implement
!      `__builtin_bswap32' and `__builtin_bswap64'.
  
! `-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.
  
! `-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 `-finite-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 and `acml' for the AMD math core
!      library.  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',
!      `vmldLog102', `vmldPow2', `vmldTanh2', `vmldTan2', `vmldAtan2',
!      `vmldAtanh2', `vmldCbrt2', `vmldSinh2', `vmldSin2', `vmldAsinh2',
!      `vmldAsin2', `vmldCosh2', `vmldCos2', `vmldAcosh2', `vmldAcos2',
!      `vmlsExp4', `vmlsLn4', `vmlsLog104', `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, 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::.
  
! `-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.
  
! `-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', `strlen', and `memset' for
       short lengths.
  
! `-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'.
  
! `-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.
  
!      *Warning:* 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'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'
       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.
! 
  
!  These `-m' switches are supported in addition to the above on x86-64
  processors in 64-bit environments.
  
! `-m32'
! `-m64'
! `-mx32'
! `-m16'
       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 on any i386 system.
  
!      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.
  
! `-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.
--- 20814,21156 ----
       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.
  
! '-mcx16'
!      This option enables GCC to generate 'CMPXCHG16B' instructions.
!      'CMPXCHG16B' allows for atomic operations on 128-bit double
!      quadword (or oword) data types.  This is useful for high-resolution
!      counters that can be updated by multiple processors (or cores).
!      This instruction is generated as part of atomic built-in functions:
!      see *note __sync Builtins:: or *note __atomic Builtins:: for
!      details.
  
! '-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 implement
!      '__builtin_bswap32' and '__builtin_bswap64'.
  
! '-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.
  
! '-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
!      '-finite-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 and 'acml' for the AMD math core
!      library.  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',
!      'vmldLog102', 'vmldPow2', 'vmldTanh2', 'vmldTan2', 'vmldAtan2',
!      'vmldAtanh2', 'vmldCbrt2', 'vmldSinh2', 'vmldSin2', 'vmldAsinh2',
!      'vmldAsin2', 'vmldCosh2', 'vmldCos2', 'vmldAcosh2', 'vmldAcos2',
!      'vmlsExp4', 'vmlsLn4', 'vmlsLog104', '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, 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::.
  
! '-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.
  
! '-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', 'strlen', and 'memset' for
       short lengths.
  
! '-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'.
  
! '-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.
  
!      *Warning:* 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'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'
       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.
  
!  These '-m' switches are supported in addition to the above on x86-64
  processors in 64-bit environments.
  
! '-m32'
! '-m64'
! '-mx32'
! '-m16'
       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 on any i386 system.
  
!      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.
  
! '-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.
*************** File: gcc.info,  Node: x86 Windows Optio
*** 21276,21338 ****
  
  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.
  
! `-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.
  
! `-mthread'
!      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
       .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 generating code.  It is enabled by default if GCC detects
!      that the target assembler found during configuration supports the
!      feature.
  
   See also under *note x86 Options:: for standard options.
  
--- 21163,21224 ----
  
  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.
  
! '-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.
  
! '-mthread'
!      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
       .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
!      generating code.  It is enabled by default if GCC detects that the
!      target assembler found during configuration supports the feature.
  
   See also under *note x86 Options:: for standard options.
  
*************** File: gcc.info,  Node: Xstormy16 Options
*** 21344,21350 ****
  
  These options are defined for Xstormy16:
  
! `-msim'
       Choose startup files and linker script suitable for the simulator.
  
  
--- 21230,21236 ----
  
  These options are defined for Xstormy16:
  
! '-msim'
       Choose startup files and linker script suitable for the simulator.
  
  
*************** File: gcc.info,  Node: Xtensa Options,
*** 21355,21438 ****
  
  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
!      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 _more_ 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'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.
  
! `-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 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.
  
  
  File: gcc.info,  Node: zSeries Options,  Prev: Xtensa Options,  Up: Submodel Options
--- 21241,21324 ----
  
  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
!      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 _more_ 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'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.
  
! '-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
!      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.
  
  
  File: gcc.info,  Node: zSeries Options,  Prev: Xtensa Options,  Up: Submodel Options
*************** File: gcc.info,  Node: Code Gen Options,
*** 21448,21482 ****
  3.18 Options for Code Generation Conventions
  ============================================
  
! These machine-independent options control the interface conventions
! used 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.
  
! `-fbounds-check'
       For front ends that support it, generate additional code to check
       that indices used to access arrays are within the declared range.
       This is currently only supported by the Java and Fortran front
       ends, where this option defaults to true and false respectively.
  
! `-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, and if the variable 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. Legacy code extending local lifetime is
!      likely to break with the stack reuse optimization.
  
       For example,
  
--- 21334,21368 ----
  3.18 Options for Code Generation Conventions
  ============================================
  
! These machine-independent options control the interface conventions used
! 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.
  
! '-fbounds-check'
       For front ends that support it, generate additional code to check
       that indices used to access arrays are within the declared range.
       This is currently only supported by the Java and Fortran front
       ends, where this option defaults to true and false respectively.
  
! '-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,
!      and if the variable 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.
!      Legacy code extending local lifetime is likely to break with the
!      stack reuse optimization.
  
       For example,
  
*************** form by either removing `no-' or adding
*** 21527,21547 ****
                               // is reused with a. What is the value of ap->i?
               }
  
       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.
  
! `-ftrapv'
       This option generates traps for signed overflow on addition,
       subtraction, multiplication operations.
  
! `-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
--- 21413,21434 ----
                               // is reused with a. What is the value of ap->i?
               }
  
+ 
       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.
  
! '-ftrapv'
       This option generates traps for signed overflow on addition,
       subtraction, multiplication operations.
  
! '-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
*************** form by either removing `no-' or adding
*** 21549,21578 ****
       default for the Java front end, as required by the Java language
       specification.
  
! `-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'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'.
  
! `-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 option is enabled by default for the Ada
--- 21436,21464 ----
       default for the Java front end, as required by the Java language
       specification.
  
! '-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'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'.
  
! '-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 option is enabled by default for the Ada
*************** form by either removing `no-' or adding
*** 21580,21617 ****
       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 2 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, particularly the Portable C Compiler (pcc).
  
       The precise convention for returning structures in memory depends
       on the target configuration macros.
--- 21466,21503 ----
       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 2 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,
!      particularly the Portable C Compiler (pcc).
  
       The precise convention for returning structures in memory depends
       on the target configuration macros.
*************** form by either removing `no-' or adding
*** 21619,21727 ****
       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.
  
!      *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-double'
!      Use the same size for `double' as for `float'.
  
!      *Warning:* the `-fshort-double' 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.
  
! `-fno-common'
       In C code, controls the placement of uninitialized global
       variables.  Unix C compilers have traditionally permitted multiple
       definitions of such variables in different compilation units by
       placing the variables in a common block.  This is the behavior
!      specified by `-fcommon', and is the default for GCC on most
       targets.  On the other hand, this behavior is not required by ISO
       C, and on some targets may carry a speed or code size penalty on
!      variable references.  The `-fno-common' option specifies that the
       compiler should place uninitialized global variables in the data
       section of the object file, rather than generating them as common
       blocks.  This has the effect that if the same variable is declared
!      (without `extern') in two different compilations, you get a
       multiple-definition error when you link them.  In this case, you
!      must compile with `-fcommon' instead.  Compiling with
!      `-fno-common' is useful on targets for which it provides better
!      performance, or if you wish to verify that the program will work
!      on other systems that always treat uninitialized variable
!      declarations this way.
  
! `-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.
  
! `-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
--- 21505,21612 ----
       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.
  
!      *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-double'
!      Use the same size for 'double' as for 'float'.
  
!      *Warning:* the '-fshort-double' 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.
  
! '-fno-common'
       In C code, controls the placement of uninitialized global
       variables.  Unix C compilers have traditionally permitted multiple
       definitions of such variables in different compilation units by
       placing the variables in a common block.  This is the behavior
!      specified by '-fcommon', and is the default for GCC on most
       targets.  On the other hand, this behavior is not required by ISO
       C, and on some targets may carry a speed or code size penalty on
!      variable references.  The '-fno-common' option specifies that the
       compiler should place uninitialized global variables in the data
       section of the object file, rather than generating them as common
       blocks.  This has the effect that if the same variable is declared
!      (without 'extern') in two different compilations, you get a
       multiple-definition error when you link them.  In this case, you
!      must compile with '-fcommon' instead.  Compiling with '-fno-common'
!      is useful on targets for which it provides better performance, or
!      if you wish to verify that the program will work on other systems
!      that always treat uninitialized variable declarations this way.
  
! '-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.
  
! '-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
*** 21729,21736 ****
       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 and 32k on the m68k and RS/6000.  The
       x86 has no such limit.)
  
--- 21614,21621 ----
       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 and 32k on the m68k and RS/6000.  The
       x86 has no such limit.)
  
*************** form by either removing `no-' or adding
*** 21739,21791 ****
       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 the m68k, PowerPC and SPARC.
  
       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 generated
       position independent code can be only linked into executables.
!      Usually these options are used when `-pie' GCC option is used
       during linking.
  
!      `-fpie' and `-fPIE' both define the macros `__pie__' and
!      `__PIE__'.  The macros have the value 1 for `-fpie' and 2 for
!      `-fPIE'.
  
! `-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.
  
! `-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
--- 21624,21675 ----
       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
!      the m68k, PowerPC and SPARC.
  
       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 generated
       position independent code can be only linked into executables.
!      Usually these options are used when '-pie' GCC option is used
       during linking.
  
!      '-fpie' and '-fPIE' both define the macros '__pie__' and '__PIE__'.
!      The macros have the value 1 for '-fpie' and 2 for '-fPIE'.
  
! '-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.
  
! '-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
*** 21799,21805 ****
       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
--- 21683,21689 ----
       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
*** 21816,21822 ****
       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,
--- 21700,21706 ----
       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
*** 21824,21840 ****
       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.
  
! `-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.)
  
--- 21708,21724 ----
       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.
  
! '-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.)
  
*************** form by either removing `no-' or adding
*** 21847,21873 ****
       function, which may be looked up exactly in the symbol table.
  
       This instrumentation is also done for functions expanded inline in
!      other functions.  The profiling calls indicate where,
!      conceptually, 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
       functions cannot safely be called (perhaps signal handlers, if the
       profiling routines generate output or allocate memory).
  
! `-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,
--- 21731,21757 ----
       function, which may be looked up exactly in the symbol table.
  
       This instrumentation is also done for functions expanded inline in
!      other functions.  The profiling calls indicate where, conceptually,
!      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
       functions cannot safely be called (perhaps signal handlers, if the
       profiling routines generate output or allocate memory).
  
! '-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,
*************** form by either removing `no-' or adding
*** 21878,21919 ****
            -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.
  
! `-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.
  
       Note that this switch does not actually cause checking to be done;
       the operating system or the language runtime must do that.  The
       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
--- 21762,21803 ----
            -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.
  
! '-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.
  
       Note that this switch does not actually cause checking to be done;
       the operating system or the language runtime must do that.  The
       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
*************** form by either removing `no-' or adding
*** 21923,21942 ****
            always allocated dynamically if their size exceeds a fixed
            threshold.
  
!        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.
  
!        3. Inefficiency: because of both the modified allocation
!           strategy 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-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
--- 21807,21825 ----
            always allocated dynamically if their size exceeds a fixed
            threshold.
  
!        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.
  
!        3. Inefficiency: because of both the modified allocation strategy
!           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-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
*************** form by either removing `no-' or adding
*** 21944,21956 ****
       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.
  
! `-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.
--- 21827,21839 ----
       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.
  
! '-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.
*************** form by either removing `no-' or adding
*** 21959,21996 ****
       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.
  
! `-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'.
  
! `-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
--- 21842,21879 ----
       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.
  
! '-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'.
  
! '-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
*** 21999,22027 ****
       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
       have the correct visibility is given by "How To Write Shared
       Libraries" by Ulrich Drepper (which can be found at
!      `http://www.akkadia.org/drepper/')--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 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.,
--- 21882,21910 ----
       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
       have the correct visibility is given by "How To Write Shared
       Libraries" by Ulrich Drepper (which can be found at
!      <http://www.akkadia.org/drepper/>)--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 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.,
*************** form by either removing `no-' or adding
*** 22029,22071 ****
       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 `http://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.
  
       If this option is disabled, the compiler uses the most efficient
       instruction.  In the previous example, that might be a 32-bit load
--- 21912,21952 ----
       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 <http://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.
  
       If this option is disabled, the compiler uses the most efficient
       instruction.  In the previous example, that might be a 32-bit load
*************** form by either removing `no-' or adding
*** 22073,22086 ****
       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
!      accesses rather than code that will fault or truncate the result
!      at run time.
  
!      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.
--- 21954,21967 ----
       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
!      accesses rather than code that will fault or truncate the result at
!      run time.
  
!      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.
*************** form by either removing `no-' or adding
*** 22088,22102 ****
       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.
! 
  
  
  File: gcc.info,  Node: Environment Variables,  Next: Precompiled Headers,  Prev: Code Gen Options,  Up: Invoking GCC
--- 21969,21982 ----
       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.
  
  
  File: gcc.info,  Node: Environment Variables,  Next: Precompiled Headers,  Prev: Code Gen Options,  Up: Invoking GCC
*************** File: gcc.info,  Node: Environment Varia
*** 22106,22280 ****
  
  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.
  
   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 can't 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 can't 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.
  
  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::.
  
  
  File: gcc.info,  Node: Precompiled Headers,  Prev: Environment Variables,  Up: Invoking GCC
--- 21986,22158 ----
  
  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.
  
   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 can't 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 can't 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.
  
  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::.
  
  
  File: gcc.info,  Node: Precompiled Headers,  Prev: Environment Variables,  Up: Invoking GCC
*************** build the project.  To make builds faste
*** 22289,22334 ****
  "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 can't
  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.
  
   There are many other possibilities, limited only by your imagination,
  good sense, and the constraints of your build system.
--- 22167,22211 ----
  "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 can't
  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.
  
   There are many other possibilities, limited only by your imagination,
  good sense, and the constraints of your build system.
*************** good sense, and the constraints of your
*** 22355,22373 ****
       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.
  
--- 22232,22249 ----
       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.
  
*************** good sense, and the constraints of your
*** 22376,22394 ****
  
            -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
!      same options when generating and using the precompiled header.
!      The following are known to be safe:
  
            -fmessage-length=  -fpreprocessed  -fsched-interblock
            -fsched-spec  -fsched-spec-load  -fsched-spec-load-dangerous
            -fsched-verbose=NUMBER  -fschedule-insns  -fvisibility=
            -pedantic-errors
  
- 
   For all of these except the last, the compiler automatically ignores
  the precompiled header if the conditions aren't met.  If you find an
  option combination that doesn't work and doesn't cause the precompiled
--- 22252,22269 ----
  
            -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
!      same options when generating and using the precompiled header.  The
!      following are known to be safe:
  
            -fmessage-length=  -fpreprocessed  -fsched-interblock
            -fsched-spec  -fsched-spec-load  -fsched-spec-load-dangerous
            -fsched-verbose=NUMBER  -fschedule-insns  -fvisibility=
            -pedantic-errors
  
   For all of these except the last, the compiler automatically ignores
  the precompiled header if the conditions aren't met.  If you find an
  option combination that doesn't work and doesn't cause the precompiled
*************** header to be ignored, please consider fi
*** 22396,22405 ****
  Bugs::.
  
   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.
  
  
  File: gcc.info,  Node: C Implementation,  Next: C++ Implementation,  Prev: Invoking GCC,  Up: Top
--- 22271,22280 ----
  Bugs::.
  
   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.
  
  
  File: gcc.info,  Node: C Implementation,  Next: C++ Implementation,  Prev: Invoking GCC,  Up: Top
*************** version of the standard.
*** 22417,22428 ****
   Some choices depend on the externally determined ABI for the platform
  (including standard character encodings) which GCC follows; these are
  listed as "determined by ABI" below.  *Note Binary Compatibility:
! Compatibility, and `http://gcc.gnu.org/readings.html'.  Some choices
! are documented in the preprocessor manual.  *Note
! Implementation-defined behavior: (cpp)Implementation-defined behavior.
! Some choices are made by the library and operating system (or other
! environment when compiling for a freestanding environment); refer to
! their documentation for details.
  
  * Menu:
  
--- 22292,22303 ----
   Some choices depend on the externally determined ABI for the platform
  (including standard character encodings) which GCC follows; these are
  listed as "determined by ABI" below.  *Note Binary Compatibility:
! Compatibility, and <http://gcc.gnu.org/readings.html>.  Some choices are
! documented in the preprocessor manual.  *Note Implementation-defined
! behavior: (cpp)Implementation-defined behavior.  Some choices are made
! by the library and operating system (or other environment when compiling
! for a freestanding environment); refer to their documentation for
! details.
  
  * Menu:
  
*************** File: gcc.info,  Node: Translation imple
*** 22449,22467 ****
  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 implementation,  Next: Identifiers implementation,  Prev: Translation implementation,  Up: C Implementation
  
--- 22324,22341 ----
  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 implementation,  Next: Identifiers implementation,  Prev: Translation implementation,  Up: C Implementation
  
*************** File: gcc.info,  Node: Environment imple
*** 22471,22608 ****
  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 implementation,  Next: Characters implementation,  Prev: Environment implementation,  Up: C Implementation
  
  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
       linkage and systems without this property are not supported by GCC.
  
- 
  
  File: gcc.info,  Node: Characters implementation,  Next: Integers implementation,  Prev: Identifiers implementation,  Up: C Implementation
  
  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 implementation,  Next: Floating point implementation,  Prev: Characters implementation,  Up: C Implementation
--- 22345,22479 ----
  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 implementation,  Next: Characters implementation,  Prev: Environment implementation,  Up: C Implementation
  
  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
       linkage and systems without this property are not supported by GCC.
  
  
  File: gcc.info,  Node: Characters implementation,  Next: Integers implementation,  Prev: Identifiers implementation,  Up: C Implementation
  
  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 implementation,  Next: Floating point implementation,  Prev: Characters implementation,  Up: C Implementation
*************** File: gcc.info,  Node: Integers implemen
*** 22610,22621 ****
  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).'
--- 22481,22492 ----
  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).'
*************** File: gcc.info,  Node: Integers implemen
*** 22623,22748 ****
       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.
  
       GCC does not use the latitude given in C99 and C11 only to treat
!      certain aspects of signed `<<' as undefined, but this is subject to
       change.
  
!    * `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 implementation,  Next: Arrays and pointers implementation,  Prev: Integers implementation,  Up: C Implementation
  
  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 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 pointers implementation,  Next: Hints implementation,  Prev: Floating point implementation,  Up: C Implementation
  
  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
--- 22494,22617 ----
       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.
  
       GCC does not use the latitude given in C99 and C11 only to treat
!      certain aspects of signed '<<' as undefined, but this is subject to
       change.
  
!    * '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 implementation,  Next: Arrays and pointers implementation,  Prev: Integers implementation,  Up: C Implementation
  
  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 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 pointers implementation,  Next: Hints implementation,  Prev: Floating point implementation,  Up: C Implementation
  
  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
*************** File: gcc.info,  Node: Arrays and pointe
*** 22762,22778 ****
       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.
  
  
!  ---------- 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
--- 22631,22646 ----
       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.
  
+    ---------- 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
*** 22780,22873 ****
  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 Reg Vars::.
  
!         * 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 enumerations and bit-fields implementation,  Next: Qualifiers implementation,  Prev: Hints implementation,  Up: C Implementation
  
  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 implementation,  Next: Declarators implementation,  Prev: Structures unions enumerations and bit-fields implementation,  Up: C Implementation
--- 22648,22738 ----
  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 Reg Vars::.
  
!         * 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 enumerations and bit-fields implementation,  Next: Qualifiers implementation,  Prev: Hints implementation,  Up: C Implementation
  
  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 implementation,  Next: Declarators implementation,  Prev: Structures unions enumerations and bit-fields implementation,  Up: C Implementation
*************** File: gcc.info,  Node: Qualifiers implem
*** 22875,22886 ****
  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 what is a read and what is a write.  For example
  
            volatile int *dst = SOMEVALUE;
            volatile int *src = SOMEOTHERVALUE;
--- 22740,22751 ----
  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
!      what is a read and what is a write.  For example
  
            volatile int *dst = SOMEVALUE;
            volatile int *src = SOMEOTHERVALUE;
*************** File: gcc.info,  Node: Qualifiers implem
*** 22889,22895 ****
       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
--- 22754,22760 ----
       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
*** 22899,22905 ****
            *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.
--- 22764,22770 ----
            *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
*** 22910,22940 ****
       by GCC as a read of the volatile object; in the other cases, the
       expression is only evaluated for its side-effects.
  
- 
  
  File: gcc.info,  Node: Declarators implementation,  Next: Statements implementation,  Prev: Qualifiers implementation,  Up: C Implementation
  
  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 implementation,  Next: Preprocessing directives implementation,  Prev: Declarators implementation,  Up: C Implementation
  
  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 directives implementation,  Next: Library functions implementation,  Prev: Statements implementation,  Up: C Implementation
  
--- 22775,22802 ----
       by GCC as a read of the volatile object; in the other cases, the
       expression is only evaluated for its side-effects.
  
  
  File: gcc.info,  Node: Declarators implementation,  Next: Statements implementation,  Prev: Qualifiers implementation,  Up: C Implementation
  
  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 implementation,  Next: Preprocessing directives implementation,  Prev: Declarators implementation,  Up: C Implementation
  
  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 directives implementation,  Next: Library functions implementation,  Prev: Statements implementation,  Up: C Implementation
  
*************** File: gcc.info,  Node: Preprocessing dir
*** 22945,22995 ****
  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
  
--- 22807,22856 ----
  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
*** 22999,23025 ****
  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 implementation,  Next: Locale-specific behavior implementation,  Prev: Library functions implementation,  Up: C Implementation
  
  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).'
  
--- 22860,22885 ----
  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 implementation,  Next: Locale-specific behavior implementation,  Prev: Library functions implementation,  Up: C Implementation
  
  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).'
  
*************** File: gcc.info,  Node: Architecture impl
*** 23027,23056 ****
       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: Locale-specific behavior implementation,  Prev: Architecture implementation,  Up: C Implementation
  
--- 22887,22915 ----
       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: Locale-specific behavior implementation,  Prev: Architecture implementation,  Up: C Implementation
  
*************** A conforming implementation of ISO C++ i
*** 23070,23088 ****
  choice of behavior in each of the areas that are designated
  "implementation defined".  The following lists all such areas, along
  with the section numbers from the ISO/IEC 14882:1998 and ISO/IEC
! 14882:2003 standards.  Some areas are only implementation-defined in
! one version of the standard.
  
   Some choices depend on the externally determined ABI for the platform
  (including standard character encodings) which GCC follows; these are
  listed as "determined by ABI" below.  *Note Binary Compatibility:
! Compatibility, and `http://gcc.gnu.org/readings.html'.  Some choices
! are documented in the preprocessor manual.  *Note
! Implementation-defined behavior: (cpp)Implementation-defined behavior.
! Some choices are documented in the corresponding document for the C
! language.  *Note C Implementation::.  Some choices are made by the
! library and operating system (or other environment when compiling for a
! freestanding environment); refer to their documentation for details.
  
  * Menu:
  
--- 22929,22947 ----
  choice of behavior in each of the areas that are designated
  "implementation defined".  The following lists all such areas, along
  with the section numbers from the ISO/IEC 14882:1998 and ISO/IEC
! 14882:2003 standards.  Some areas are only implementation-defined in one
! version of the standard.
  
   Some choices depend on the externally determined ABI for the platform
  (including standard character encodings) which GCC follows; these are
  listed as "determined by ABI" below.  *Note Binary Compatibility:
! Compatibility, and <http://gcc.gnu.org/readings.html>.  Some choices are
! documented in the preprocessor manual.  *Note Implementation-defined
! behavior: (cpp)Implementation-defined behavior.  Some choices are
! documented in the corresponding document for the C language.  *Note C
! Implementation::.  Some choices are made by the library and operating
! system (or other environment when compiling for a freestanding
! environment); refer to their documentation for details.
  
  * Menu:
  
*************** File: gcc.info,  Node: Conditionally-sup
*** 23095,23125 ****
  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
       arguments of such types.
  
- 
  
  File: gcc.info,  Node: Exception handling,  Prev: Conditionally-supported behavior,  Up: C++ Implementation
  
  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,  Next: C++ Extensions,  Prev: C++ Implementation,  Up: Top
  
--- 22954,22982 ----
  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
       arguments of such types.
  
  
  File: gcc.info,  Node: Exception handling,  Prev: Conditionally-supported behavior,  Up: C++ Implementation
  
  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,  Next: C++ Extensions,  Prev: C++ Implementation,  Up: Top
  
*************** File: gcc.info,  Node: C Extensions,  Ne
*** 23127,23136 ****
  *************************************
  
  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
  also available in C++.  *Note Extensions to the C++ Language: C++
--- 22984,22993 ----
  *************************************
  
  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
  also available in C++.  *Note Extensions to the C++ Language: C++
*************** extensions, accepted by GCC in C90 mode
*** 23146,23155 ****
  * Labels as Values::    Getting pointers to labels, and computed gotos.
  * Nested Functions::    As in Algol and Pascal, lexical scoping of functions.
  * Constructing Calls::  Dispatching a call to another function.
! * Typeof::              `typeof': referring to the type of an expression.
! * Conditionals::        Omitting the middle operand of a `?:' expression.
! * __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.
--- 23003,23012 ----
  * Labels as Values::    Getting pointers to labels, and computed gotos.
  * Nested Functions::    As in Algol and Pascal, lexical scoping of functions.
  * Constructing Calls::  Dispatching a call to another function.
! * Typeof::              'typeof': referring to the type of an expression.
! * Conditionals::        Omitting the middle operand of a '?:' expression.
! * __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.
*************** extensions, accepted by GCC in C90 mode
*** 23163,23175 ****
  * Variadic Macros::     Macros with a variable number of arguments.
  * Escaped Newlines::    Slightly looser rules for escaped newlines.
  * Subscripting::        Any array can be subscripted, even if not an lvalue.
! * Pointer Arith::       Arithmetic on `void'-pointers and function pointers.
  * Pointers to Arrays::  Pointers to arrays with qualifiers work as expected.
  * Initializers::        Non-constant initializers.
  * Compound Literals::   Compound literals give structures, unions
                          or arrays as values.
  * Designated Inits::    Labeling elements of initializers.
! * Case Ranges::         `case 1 ... 9' and such.
  * Cast to Union::       Casting to union type from any member of the union.
  * Mixed Declarations::  Mixing declarations and code.
  * Function Attributes:: Declaring that functions have no side effects,
--- 23020,23032 ----
  * Variadic Macros::     Macros with a variable number of arguments.
  * Escaped Newlines::    Slightly looser rules for escaped newlines.
  * Subscripting::        Any array can be subscripted, even if not an lvalue.
! * Pointer Arith::       Arithmetic on 'void'-pointers and function pointers.
  * Pointers to Arrays::  Pointers to arrays with qualifiers work as expected.
  * Initializers::        Non-constant initializers.
  * Compound Literals::   Compound literals give structures, unions
                          or arrays as values.
  * Designated Inits::    Labeling elements of initializers.
! * Case Ranges::         'case 1 ... 9' and such.
  * Cast to Union::       Casting to union type from any member of the union.
  * Mixed Declarations::  Mixing declarations and code.
  * Function Attributes:: Declaring that functions have no side effects,
*************** extensions, accepted by GCC in C90 mode
*** 23179,23198 ****
  * Function Prototypes:: Prototype declarations and old-style definitions.
  * C++ Comments::        C++ comments are recognized.
  * Dollar Signs::        Dollar sign is allowed in identifiers.
! * Character Escapes::   `\e' stands for the character <ESC>.
  * Variable Attributes:: Specifying attributes of variables.
  * Type Attributes::     Specifying attributes of types.
  * Alignment::           Inquiring about the alignment of a type or variable.
  * Inline::              Defining inline functions (as fast as macros).
  * Volatiles::           What constitutes an access to a volatile object.
  * Using Assembly Language with C:: Instructions and extensions for interfacing C with assembler.
! * Alternate Keywords::  `__const__', `__asm__', etc., for header files.
! * Incomplete Enums::    `enum foo;', with details to follow.
  * Function Names::      Printable strings which are the name of the current
                          function.
  * Return Address::      Getting the return or frame address of a function.
  * Vector Extensions::   Using vector instructions through built-in functions.
! * Offsetof::            Special syntax for implementing `offsetof'.
  * __sync Builtins::     Legacy built-in functions for atomic memory access.
  * __atomic Builtins::   Atomic built-in functions with memory model.
  * Integer Overflow Builtins:: Built-in functions to perform arithmetics and
--- 23036,23055 ----
  * Function Prototypes:: Prototype declarations and old-style definitions.
  * C++ Comments::        C++ comments are recognized.
  * Dollar Signs::        Dollar sign is allowed in identifiers.
! * Character Escapes::   '\e' stands for the character <ESC>.
  * Variable Attributes:: Specifying attributes of variables.
  * Type Attributes::     Specifying attributes of types.
  * Alignment::           Inquiring about the alignment of a type or variable.
  * Inline::              Defining inline functions (as fast as macros).
  * Volatiles::           What constitutes an access to a volatile object.
  * Using Assembly Language with C:: Instructions and extensions for interfacing C with assembler.
! * Alternate Keywords::  '__const__', '__asm__', etc., for header files.
! * Incomplete Enums::    'enum foo;', with details to follow.
  * Function Names::      Printable strings which are the name of the current
                          function.
  * Return Address::      Getting the return or frame address of a function.
  * Vector Extensions::   Using vector instructions through built-in functions.
! * Offsetof::            Special syntax for implementing 'offsetof'.
  * __sync Builtins::     Legacy built-in functions for atomic memory access.
  * __atomic Builtins::   Atomic built-in functions with memory model.
  * Integer Overflow Builtins:: Built-in functions to perform arithmetics and
*************** extensions, accepted by GCC in C90 mode
*** 23208,23214 ****
  * Pragmas::             Pragmas accepted by GCC.
  * Unnamed Fields::      Unnamed struct/union fields within structs/unions.
  * Thread-Local::        Per-thread variables.
! * Binary constants::    Binary constants using the `0b' prefix.
  
  
  File: gcc.info,  Node: Statement Exprs,  Next: Local Labels,  Up: C Extensions
--- 23065,23071 ----
  * Pragmas::             Pragmas accepted by GCC.
  * Unnamed Fields::      Unnamed struct/union fields within structs/unions.
  * Thread-Local::        Per-thread variables.
! * Binary constants::    Binary constants using the '0b' prefix.
  
  
  File: gcc.info,  Node: Statement Exprs,  Next: Local Labels,  Up: C Extensions
*************** example:
*** 23230,23241 ****
          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"
--- 23087,23098 ----
          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:
*** 23247,23253 ****
  
  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 define the macro safely as
  follows:
  
       #define maxint(a,b) \
--- 23104,23110 ----
  
  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 define the macro safely as
  follows:
  
       #define maxint(a,b) \
*************** the value of an enumeration constant, th
*** 23258,23284 ****
  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 inside macros slightly different from function calls.  In
! the latter case temporaries introduced during argument evaluation are
! destroyed at the end of the statement that includes the function call.
! In the statement expression case they are destroyed during the
! statement expression.  For instance,
  
       #define macro(a)  ({__typeof__(a) b = (a); b + 3; })
       template<typename T> T function(T a) { T b = a; return b + 3; }
--- 23115,23141 ----
  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
! inside macros slightly different from function calls.  In the latter
! case temporaries introduced during argument evaluation are destroyed at
! the end of the statement that includes the function call.  In the
! statement expression case they are destroyed during the statement
! expression.  For instance,
  
       #define macro(a)  ({__typeof__(a) b = (a); b + 3; })
       template<typename T> T function(T a) { T b = a; return b + 3; }
*************** statement expression.  For instance,
*** 23289,23297 ****
         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
--- 23146,23154 ----
         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
*** 23300,23309 ****
  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
--- 23157,23166 ----
  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
*************** evaluation of other parts of the contain
*** 23315,23323 ****
  
         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: C Extensions
--- 23172,23180 ----
  
         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: C Extensions
*************** File: gcc.info,  Node: Local Labels,  Ne
*** 23327,23333 ****
  
  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:
--- 23184,23190 ----
  
  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
*** 23341,23352 ****
   Local label declarations must come at the beginning of the block,
  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
--- 23198,23209 ----
   Local label declarations must come at the beginning of the block,
  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,
*** 23395,23415 ****
  6.3 Labels as Values
  ====================
  
! 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;
       /* ... */
       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:
--- 23252,23272 ----
  6.3 Labels as Values
  ====================
  
! 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;
       /* ... */
       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
*** 23424,23436 ****
  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.
! The labels within the interpreter function can be stored in the
! threaded code for super-fast dispatching.
  
   You may not use this mechanism to jump to code in a different function.
  If you do that, totally unpredictable things happen.  The best way to
--- 23281,23293 ----
  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.
! The labels within the interpreter function can be stored in the threaded
! code for super-fast dispatching.
  
   You may not use this mechanism to jump to code in a different function.
  If you do that, totally unpredictable things happen.  The best way to
*************** allows the data to be read-only.  This a
*** 23449,23464 ****
  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.
  
!  ---------- Footnotes ----------
  
!  (1) The analogous feature in Fortran is called an assigned goto, but
  that name seems inappropriate in C, where one can do more than simply
  store label addresses in label variables.
  
--- 23306,23320 ----
  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.
  
!    ---------- Footnotes ----------
  
!    (1) The analogous feature in Fortran is called an assigned goto, but
  that name seems inappropriate in C, where one can do more than simply
  store label addresses in label variables.
  
*************** Nested functions are supported as an ext
*** 23473,23479 ****
  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)
--- 23329,23335 ----
  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:
*** 23486,23492 ****
   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)
       {
--- 23342,23348 ----
   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:
*** 23514,23542 ****
         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
! containing function exits, all hell breaks loose.  If you try to call
! it after a containing scope level exits, and if it refers to some of
! the variables that are no longer in scope, you may be lucky, but it's
! not wise to take the risk.  If, however, the nested function does not
! refer 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)
       {
--- 23370,23398 ----
         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
! containing function exits, all hell breaks loose.  If you try to call it
! after a containing scope level exits, and if it refers to some of the
! variables that are no longer in scope, you may be lucky, but it's not
! wise to take the risk.  If, however, the nested function does not refer
! 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)
       {
*************** and any intermediate functions as well.
*** 23554,23568 ****
         /* ... */
         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)
--- 23410,23424 ----
         /* ... */
         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)
*************** acting as mere forwarders for their argu
*** 23600,23607 ****
  
   -- Built-in Function: void * __builtin_apply_args ()
       This built-in function returns a pointer to data describing how to
!      perform a call with the same arguments as are passed to the
!      current function.
  
       The function saves the arg pointer register, structure value
       address, and all registers that might be used to pass arguments to
--- 23456,23463 ----
  
   -- Built-in Function: void * __builtin_apply_args ()
       This built-in function returns a pointer to data describing how to
!      perform a call with the same arguments as are passed to the current
!      function.
  
       The function saves the arg pointer register, structure value
       address, and all registers that might be used to pass arguments to
*************** acting as mere forwarders for their argu
*** 23614,23620 ****
       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
--- 23470,23476 ----
       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
*** 23622,23646 ****
       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 undesirable.  For example:
            extern int myprintf (FILE *f, const char *format, ...);
            extern inline __attribute__ ((__gnu_inline__)) int
            myprintf (FILE *f, const char *format, ...)
--- 23478,23502 ----
       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
!      undesirable.  For example:
            extern int myprintf (FILE *f, const char *format, ...);
            extern inline __attribute__ ((__gnu_inline__)) int
            myprintf (FILE *f, const char *format, ...)
*************** acting as mere forwarders for their argu
*** 23658,23667 ****
       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__
            extern inline __attribute__((__gnu_inline__)) int
            myopen (const char *path, int oflag, ...)
--- 23514,23523 ----
       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__
            extern inline __attribute__((__gnu_inline__)) int
            myopen (const char *path, int oflag, ...)
*************** acting as mere forwarders for their argu
*** 23689,23728 ****
  
  File: gcc.info,  Node: Typeof,  Next: Conditionals,  Prev: Constructing Calls,  Up: C Extensions
  
! 6.6 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:
--- 23545,23584 ----
  
  File: gcc.info,  Node: Typeof,  Next: Conditionals,  Prev: Constructing Calls,  Up: C Extensions
  
! 6.6 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
*** 23734,23755 ****
  
   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;
  
--- 23590,23611 ----
  
   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
*** 23757,23763 ****
  
            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 *)
--- 23613,23619 ----
  
            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
*** 23767,23798 ****
  
            array (pointer (char), 4) y;
  
!      Thus, `array (pointer (char), 4)' is the type of arrays of 4
!      pointers to `char'.
  
   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: Conditionals,  Next: __int128,  Prev: Typeof,  Up: C Extensions
--- 23623,23654 ----
  
            array (pointer (char), 4) y;
  
!      Thus, 'array (pointer (char), 4)' is the type of arrays of 4
!      pointers to 'char'.
  
   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: Conditionals,  Next: __int128,  Prev: Typeof,  Up: C Extensions
*************** expression.
*** 23808,23814 ****
  
       x ? : y
  
! has the value of `x' if that is nonzero; otherwise, the value of `y'.
  
   This example is perfectly equivalent to
  
--- 23664,23670 ----
  
       x ? : y
  
! has the value of 'x' if that is nonzero; otherwise, the value of 'y'.
  
   This example is perfectly equivalent to
  
*************** has the value of `x' if that is nonzero;
*** 23817,23825 ****
  In this simple case, the ability to omit the middle operand is not
  especially useful.  When it becomes useful is when the first operand
  does, or may (if it is a macro argument), contain a side effect.  Then
! repeating the operand in the middle would perform the side effect
! twice.  Omitting the middle operand uses the value already computed
! without the undesirable effects of recomputing it.
  
  
  File: gcc.info,  Node: __int128,  Next: Long Long,  Prev: Conditionals,  Up: C Extensions
--- 23673,23681 ----
  In this simple case, the ability to omit the middle operand is not
  especially useful.  When it becomes useful is when the first operand
  does, or may (if it is a macro argument), contain a side effect.  Then
! repeating the operand in the middle would perform the side effect twice.
! Omitting the middle operand uses the value already computed without the
! undesirable effects of recomputing it.
  
  
  File: gcc.info,  Node: __int128,  Next: Long Long,  Prev: Conditionals,  Up: C Extensions
*************** File: gcc.info,  Node: __int128,  Next:
*** 23827,23838 ****
  6.8 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: C Extensions
--- 23683,23694 ----
  6.8 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: C Extensions
*************** File: gcc.info,  Node: Long Long,  Next:
*** 23842,23868 ****
  
  ISO C99 supports data types for integers that are at least 64 bits wide,
  and as an extension GCC supports them in C90 mode and in C++.  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.
! Addition, subtraction, and bitwise boolean operations on these types
! are open-coded on all types of machines.  Multiplication is open-coded
! if the machine supports a fullword-to-doubleword widening multiply
  instruction.  Division and shifts are open-coded only on machines that
  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: Floating Types,  Prev: Long Long,  Up: C Extensions
--- 23698,23723 ----
  
  ISO C99 supports data types for integers that are at least 64 bits wide,
  and as an extension GCC supports them in C90 mode and in C++.  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.
! Addition, subtraction, and bitwise boolean operations on these types are
! open-coded on all types of machines.  Multiplication is open-coded if
! the machine supports a fullword-to-doubleword widening multiply
  instruction.  Division and shifts are open-coded only on machines that
  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: Floating Types,  Prev: Long Long,  Up: C Extensions
*************** File: gcc.info,  Node: Complex,  Next: F
*** 23871,23907 ****
  ====================
  
  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' or
! `j' (either 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 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, you should
! include `<complex.h>' and use the macros `I' or `_Complex_I' instead.
  
   To extract the real part of a complex-valued expression EXP, write
! `__real__ EXP'.  Likewise, use `__imag__' to extract the imaginary
! part.  This is a GNU extension; for values of floating type, you should
! use the ISO C99 functions `crealf', `creal', `creall', `cimagf',
! `cimag' and `cimagl', declared in `<complex.h>' and also provided as
! built-in functions by GCC.
  
!  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.
  
   GCC can allocate complex automatic variables in a noncontiguous
--- 23726,23762 ----
  ====================
  
  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' or 'j'
! (either 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 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, you should
! include '<complex.h>' and use the macros 'I' or '_Complex_I' instead.
  
   To extract the real part of a complex-valued expression EXP, write
! '__real__ EXP'.  Likewise, use '__imag__' to extract the imaginary part.
! This is a GNU extension; for values of floating type, you should use the
! ISO C99 functions 'crealf', 'creal', 'creall', 'cimagf', 'cimag' and
! 'cimagl', declared in '<complex.h>' and also provided as built-in
! functions by GCC.
  
!  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.
  
   GCC can allocate complex automatic variables in a noncontiguous
*************** the imaginary part is on the stack (or v
*** 23910,23917 ****
  debug info format can represent this, so use of DWARF 2 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.
  
  
--- 23765,23772 ----
  debug info format can represent this, so use of DWARF 2 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.
  
  
*************** File: gcc.info,  Node: Floating Types,
*** 23920,23941 ****
  6.11 Additional Floating Types
  ==============================
  
! As an extension, GNU C supports additional floating types, `__float80'
! and `__float128' to support 80-bit (`XFmode') and 128-bit (`TFmode')
  floating types.  Support for 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' and `q' or `Q' for `_float128'.  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;
  
!  Not all targets support additional floating-point types.  `__float80'
! and `__float128' types are supported on x86 and IA-64 targets.  The
! `__float128' type is supported on hppa HP-UX targets.
  
  
  File: gcc.info,  Node: Half-Precision,  Next: Decimal Float,  Prev: Floating Types,  Up: C Extensions
--- 23775,23796 ----
  6.11 Additional Floating Types
  ==============================
  
! As an extension, GNU C supports additional floating types, '__float80'
! and '__float128' to support 80-bit ('XFmode') and 128-bit ('TFmode')
  floating types.  Support for 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' and 'q' or 'Q' for '_float128'.  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;
  
!  Not all targets support additional floating-point types.  '__float80'
! and '__float128' types are supported on x86 and IA-64 targets.  The
! '__float128' type is supported on hppa HP-UX targets.
  
  
  File: gcc.info,  Node: Half-Precision,  Next: Decimal Float,  Prev: Floating Types,  Up: C Extensions
*************** File: gcc.info,  Node: Half-Precision,
*** 23944,23988 ****
  ==================================
  
  On ARM targets, GCC supports half-precision (16-bit) floating point via
! the `__fp16' type.  You must enable this type explicitly with the
! `-mfp16-format' command-line option in order to use it.
  
   ARM supports 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 `__fp16' type is a storage format only.  For purposes of
! arithmetic and other operations, `__fp16' values in C or C++
! expressions are automatically promoted to `float'.  In addition, you
! cannot declare a function with a return value or parameters of type
! `__fp16'.
  
!  Note that conversions from `double' to `__fp16' involve an
! intermediate conversion to `float'.  Because of rounding, this can
! sometimes produce a different result than a direct conversion.
  
!  ARM provides hardware support for conversions between `__fp16' and
! `float' values as an extension to VFP and NEON (Advanced SIMD).  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 `float' values as library calls.
  
  
  File: gcc.info,  Node: Decimal Float,  Next: Hex Floats,  Prev: Half-Precision,  Up: C Extensions
--- 23799,23842 ----
  ==================================
  
  On ARM targets, GCC supports half-precision (16-bit) floating point via
! the '__fp16' type.  You must enable this type explicitly with the
! '-mfp16-format' command-line option in order to use it.
  
   ARM supports 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 '__fp16' type is a storage format only.  For purposes of arithmetic
! and other operations, '__fp16' values in C or C++ expressions are
! automatically promoted to 'float'.  In addition, you cannot declare a
! function with a return value or parameters of type '__fp16'.
  
!  Note that conversions from 'double' to '__fp16' involve an intermediate
! conversion to 'float'.  Because of rounding, this can sometimes produce
! a different result than a direct conversion.
  
!  ARM provides hardware support for conversions between '__fp16' and
! 'float' values as an extension to VFP and NEON (Advanced SIMD). 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 'float' values as library calls.
  
  
  File: gcc.info,  Node: Decimal Float,  Next: Hex Floats,  Prev: Half-Precision,  Up: C Extensions
*************** File: gcc.info,  Node: Decimal Float,  N
*** 23990,24012 ****
  6.13 Decimal Floating Types
  ===========================
  
! As an extension, GNU C supports decimal floating types as defined in
! the N1312 draft of ISO/IEC WDTR24732.  Support for decimal floating
! types in GCC will evolve as the draft technical report changes.
! Calling 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:
--- 23844,23866 ----
  6.13 Decimal Floating Types
  ===========================
  
! As an extension, GNU C supports decimal floating types as defined in the
! N1312 draft of ISO/IEC WDTR24732.  Support for decimal floating types in
! GCC will evolve as the draft technical report changes.  Calling
! 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:
*************** is incomplete:
*** 24017,24028 ****
       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 2 debug information format.
  
  
--- 23871,23882 ----
       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 2 debug information format.
  
  
*************** File: gcc.info,  Node: Hex Floats,  Next
*** 24032,24051 ****
  ===============
  
  ISO C99 supports 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++.
! 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: Fixed-Point,  Next: Named Address Spaces,  Prev: Hex Floats,  Up: C Extensions
--- 23886,23905 ----
  ===============
  
  ISO C99 supports 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++.  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: Fixed-Point,  Next: Named Address Spaces,  Prev: Hex Floats,  Up: C Extensions
*************** will evolve as the draft technical repor
*** 24059,24135 ****
  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:
--- 23913,23967 ----
  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:
*************** File: gcc.info,  Node: Named Address Spa
*** 24149,24160 ****
  As an extension, GNU C supports named address spaces as defined in the
  N1275 draft of ISO/IEC DTR 18037.  Support for named address spaces in
  GCC will evolve as the draft technical report changes.  Calling
! conventions for any target might also change.  At present, only the
! AVR, SPU, M32C, and RL78 targets support address spaces other than the
  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.16.1 AVR Named Address Spaces
--- 23981,23992 ----
  As an extension, GNU C supports named address spaces as defined in the
  N1275 draft of ISO/IEC DTR 18037.  Support for named address spaces in
  GCC will evolve as the draft technical report changes.  Calling
! conventions for any target might also change.  At present, only the AVR,
! SPU, M32C, and RL78 targets support address spaces other than the
  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.16.1 AVR Named Address Spaces
*************** more details.
*** 24162,24199 ****
  
  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.
  
   Per default, any data including read-only data is located in RAM (the
  generic address space) so that non-generic address spaces are needed to
  locate read-only data in flash memory _and_ to generate the right
  instructions to access this data without using (inline) assembler code.
  
! `__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.
  
! `__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
  
--- 23994,24031 ----
  
  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.
  
   Per default, any data including read-only data is located in RAM (the
  generic address space) so that non-generic address spaces are needed to
  locate read-only data in flash memory _and_ to generate the right
  instructions to access this data without using (inline) assembler code.
  
! '__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.
  
! '__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:
*** 24241,24273 ****
       }
       #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 (http://nongnu.org/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 shows undefined behavior. The only
!      address space that supports reading across the 64 KiB flash
!      segment boundaries is `__memx'.
  
!    * 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.
  
     * 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;
--- 24073,24105 ----
       }
       #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 (http://nongnu.org/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 shows undefined behavior.  The only
!      address space that supports reading across the 64 KiB flash segment
!      boundaries is '__memx'.
  
!    * 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.
  
     * 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;
*************** Limitations and caveats
*** 24275,24293 ****
       Such code requires at least binutils 2.23, see
       PR13503 (http://sourceware.org/PR13503).
  
- 
  6.16.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.16.3 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.
--- 24107,24124 ----
       Such code requires at least binutils 2.23, see
       PR13503 (http://sourceware.org/PR13503).
  
  6.16.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.16.3 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
*** 24296,24309 ****
  -------------------------------
  
  On the SPU target variables may be declared as belonging to another
! address space by qualifying the type with the `__ea' address space
  identifier:
  
       extern int __ea i;
  
! The compiler generates special code to access the variable `i'.  It may
! use runtime library support, or generate special machine instructions
! to access that address space.
  
  
  File: gcc.info,  Node: Zero Length,  Next: Empty Structures,  Prev: Named Address Spaces,  Up: C Extensions
--- 24127,24140 ----
  -------------------------------
  
  On the SPU target variables may be declared as belonging to another
! address space by qualifying the type with the '__ea' address space
  identifier:
  
       extern int __ea i;
  
! The compiler generates special code to access the variable 'i'.  It may
! use runtime library support, or generate special machine instructions to
! access that address space.
  
  
  File: gcc.info,  Node: Zero Length,  Next: Empty Structures,  Prev: Named Address Spaces,  Up: C Extensions
*************** variable-length object:
*** 24324,24359 ****
         malloc (sizeof (struct line) + this_length);
       thisline->length = this_length;
  
!  In ISO C90, you would have to give `contents' a length of 1, which
! means either you waste space or complicate the argument to `malloc'.
  
   In ISO C99, you would use a "flexible array member", which is slightly
  different in 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.)
  
!  Non-empty initialization of zero-length arrays is treated like any
! case where there are more initializer elements than the array holds, in
! that a suitable warning about "excess elements in array" is given, and
! the excess elements (all of them, in this case) are ignored.
  
   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[];
--- 24155,24189 ----
         malloc (sizeof (struct line) + this_length);
       thisline->length = this_length;
  
!  In ISO C90, you would have to give 'contents' a length of 1, which
! means either you waste space or complicate the argument to 'malloc'.
  
   In ISO C99, you would use a "flexible array member", which is slightly
  different in 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.)
  
!  Non-empty initialization of zero-length arrays is treated like any case
! where there are more initializer elements than the array holds, in that
! a suitable warning about "excess elements in array" is given, and the
! excess elements (all of them, in this case) are ignored.
  
   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[];
*************** E.g. in the following, `f1' is construct
*** 24363,24380 ****
         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 at subsequent offsets.  To avoid undue complication and confusion
! with initialization of deeply nested arrays, we simply disallow any
! non-empty initialization except when the structure is the top-level
! object.  For example:
  
       struct foo { int x; int y[]; };
       struct bar { struct foo z; };
--- 24193,24210 ----
         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
! at subsequent offsets.  To avoid undue complication and confusion with
! initialization of deeply nested arrays, we simply disallow any non-empty
! initialization except when the structure is the top-level object.  For
! example:
  
       struct foo { int x; int y[]; };
       struct bar { struct foo z; };
*************** GCC permits a C structure to have no mem
*** 24396,24403 ****
       };
  
   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: Variable Length,  Next: Variadic Macros,  Prev: Empty Structures,  Up: C Extensions
--- 24226,24233 ----
       };
  
   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: Variable Length,  Next: Variadic Macros,  Prev: Empty Structures,  Up: C Extensions
*************** structure or a union.  For example:
*** 24434,24450 ****
         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.  (If you use both variable-length arrays and
! `alloca' in the same function, deallocation of a variable-length array
! also deallocates anything more recently allocated with `alloca'.)
  
   You can also use variable-length arrays as arguments to functions:
  
--- 24264,24280 ----
         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.  (If you use both variable-length arrays and 'alloca' in the
! same function, deallocation of a variable-length array also deallocates
! anything more recently allocated with 'alloca'.)
  
   You can also use variable-length arrays as arguments to functions:
  
*************** also deallocates anything more recently
*** 24456,24462 ****
  
   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.
--- 24286,24292 ----
  
   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
*** 24467,24475 ****
         /* ... */
       }
  
!  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
--- 24297,24305 ----
         /* ... */
       }
  
!  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
*************** example:
*** 24491,24501 ****
  
       #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
  that allowed you to give a name to the variable arguments just like any
--- 24321,24331 ----
  
       #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
  that allowed you to give a name to the variable arguments just like any
*************** be used with either of the above forms o
*** 24511,24518 ****
  
   In standard C, you are not allowed to leave the variable argument out
  entirely; but you are allowed to pass an empty argument.  For example,
! this invocation is invalid in ISO C, because there is no comma after
! the string:
  
       debug ("A message")
  
--- 24341,24348 ----
  
   In standard C, you are not allowed to leave the variable argument out
  entirely; but you are allowed to pass an empty argument.  For example,
! this invocation is invalid in ISO C, because there is no comma after the
! string:
  
       debug ("A message")
  
*************** the expansion of the macro still has the
*** 24522,24533 ****
  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
--- 24352,24363 ----
  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
*************** File: gcc.info,  Node: Escaped Newlines,
*** 24540,24555 ****
  6.21 Slightly Looser Rules for Escaped Newlines
  ===============================================
  
! The preprocessor treatment of escaped newlines is more relaxed than
! that specified by the C90 standard, which requires the newline to
! immediately follow a backslash.  GCC's implementation allows whitespace
! in the form of spaces, horizontal and vertical tabs, and form feeds
! between the backslash and the subsequent newline.  The preprocessor
! issues a warning, but treats it as a valid escaped newline and combines
! the two lines to form a single logical line.  This works within
! comments and tokens, as well as between tokens.  Comments are _not_
! treated as whitespace for the purposes of this relaxation, since they
! have not yet been replaced with spaces.
  
  
  File: gcc.info,  Node: Subscripting,  Next: Pointer Arith,  Prev: Escaped Newlines,  Up: C Extensions
--- 24370,24385 ----
  6.21 Slightly Looser Rules for Escaped Newlines
  ===============================================
  
! The preprocessor treatment of escaped newlines is more relaxed than that
! specified by the C90 standard, which requires the newline to immediately
! follow a backslash.  GCC's implementation allows whitespace in the form
! of spaces, horizontal and vertical tabs, and form feeds between the
! backslash and the subsequent newline.  The preprocessor issues a
! warning, but treats it as a valid escaped newline and combines the two
! lines to form a single logical line.  This works within comments and
! tokens, as well as between tokens.  Comments are _not_ treated as
! whitespace for the purposes of this relaxation, since they have not yet
! been replaced with spaces.
  
  
  File: gcc.info,  Node: Subscripting,  Next: Pointer Arith,  Prev: Escaped Newlines,  Up: C Extensions
*************** File: gcc.info,  Node: Subscripting,  Ne
*** 24557,24568 ****
  6.22 Non-Lvalue Arrays May Have Subscripts
  ==========================================
  
! 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:
  
       struct foo {int a[4];};
  
--- 24387,24398 ----
  6.22 Non-Lvalue Arrays May Have Subscripts
  ==========================================
  
! 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:
  
       struct foo {int a[4];};
  
*************** mode.  For example, this is valid in GNU
*** 24576,24593 ****
  
  File: gcc.info,  Node: Pointer Arith,  Next: Pointers to Arrays,  Prev: Subscripting,  Up: C Extensions
  
! 6.23 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: Pointers to Arrays,  Next: Initializers,  Prev: Pointer Arith,  Up: C Extensions
--- 24406,24423 ----
  
  File: gcc.info,  Node: Pointer Arith,  Next: Pointers to Arrays,  Prev: Subscripting,  Up: C Extensions
  
! 6.23 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: Pointers to Arrays,  Next: Initializers,  Prev: Pointer Arith,  Up: C Extensions
*************** File: gcc.info,  Node: Pointers to Array
*** 24595,24606 ****
  6.24 Pointers to Arrays with Qualifiers Work as Expected
  ========================================================
  
! 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
       transpose (int N, int M, double out[M][N], const double in[N][M]);
--- 24425,24435 ----
  6.24 Pointers to Arrays with Qualifiers Work as Expected
  ========================================================
  
! 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
       transpose (int N, int M, double out[M][N], const double in[N][M]);
*************** File: gcc.info,  Node: Initializers,  Ne
*** 24615,24624 ****
  6.25 Non-Constant Initializers
  ==============================
  
! As in standard C++ and ISO C99, the elements of an aggregate
! initializer for an automatic variable are not required to be constant
! expressions in GNU C.  Here is an example of an initializer with
! run-time varying elements:
  
       foo (float f, float g)
       {
--- 24444,24453 ----
  6.25 Non-Constant Initializers
  ==============================
  
! As in standard C++ and ISO C99, the elements of an aggregate initializer
! for an automatic variable are not required to be constant expressions in
! GNU C.  Here is an example of an initializer with run-time varying
! elements:
  
       foo (float f, float g)
       {
*************** initializer; it is an lvalue.  As an ext
*** 24639,24650 ****
  literals in C90 mode and in C++, though the semantics are somewhat
  different in C++.
  
!  Usually, the specified type 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});
--- 24468,24479 ----
  literals in C90 mode and in C++, though the semantics are somewhat
  different in C++.
  
!  Usually, the specified type 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:
*** 24669,24681 ****
  but then the compound literal is equivalent to a cast.
  
   As a GNU extension, GCC allows initialization of objects with static
! storage duration by compound literals (which is not possible in ISO
! C99, because the initializer is not a constant).  It is handled as if
! the object is initialized only with the bracket enclosed list if the
! types of the compound literal and the object match.  The initializer
! list of the compound literal must be constant.  If the object being
! initialized has array type of unknown size, the size is determined by
! compound literal size.
  
       static struct foo x = (struct foo) {1, 'a', 'b'};
       static int y[] = (int []) {1, 2, 3};
--- 24498,24510 ----
  but then the compound literal is equivalent to a cast.
  
   As a GNU extension, GCC allows initialization of objects with static
! storage duration by compound literals (which is not possible in ISO C99,
! because the initializer is not a constant).  It is handled as if the
! object is initialized only with the bracket enclosed list if the types
! of the compound literal and the object match.  The initializer list of
! the compound literal must be constant.  If the object being initialized
! has array type of unknown size, the size is determined by compound
! literal size.
  
       static struct foo x = (struct foo) {1, 'a', 'b'};
       static int y[] = (int []) {1, 2, 3};
*************** The above lines are equivalent to the fo
*** 24688,24706 ****
  
   In C, a compound literal designates an unnamed object with static or
  automatic storage duration.  In C++, a compound literal designates a
! temporary object, which only lives until the end of its
! full-expression.  As a result, well-defined C code that takes the
! address of a subobject of a compound literal can be undefined in C++,
! so the C++ compiler 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++ has
! undefined behavior because the lifetime of the array ends after the
! declaration of `foo'.
  
   As an optimization, the C++ compiler sometimes gives array compound
  literals longer lifetimes: when the array either appears outside a
! function or has const-qualified type.  If `foo' and its initializer had
! elements of `char *const' type 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
  code compiled as C++.
--- 24517,24534 ----
  
   In C, a compound literal designates an unnamed object with static or
  automatic storage duration.  In C++, a compound literal designates a
! temporary object, which only lives until the end of its full-expression.
! As a result, well-defined C code that takes the address of a subobject
! of a compound literal can be undefined in C++, so the C++ compiler
! 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++ has undefined behavior because the
! lifetime of the array ends after the declaration of 'foo'.
  
   As an optimization, the C++ compiler sometimes gives array compound
  literals longer lifetimes: when the array either appears outside a
! function or has const-qualified type.  If 'foo' and its initializer had
! elements of 'char *const' type 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
  code compiled as C++.
*************** indices or structure field names they ap
*** 24720,24726 ****
  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 };
--- 24548,24554 ----
  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
*** 24733,24742 ****
  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 };
--- 24561,24570 ----
  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
*** 24748,24754 ****
  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; };
--- 24576,24582 ----
  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
*** 24762,24786 ****
       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 field members are implicitly initialized the same as 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,
  
       union foo { int i; double d; };
  
       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
--- 24590,24614 ----
       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 field members are implicitly initialized the same as 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,
  
       union foo { int i; double d; };
  
       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
*** 24794,24812 ****
  
       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 };
  
--- 24622,24638 ----
  
       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 };
  
*************** File: gcc.info,  Node: Case Ranges,  Nex
*** 24821,24839 ****
  6.28 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:
  
--- 24647,24665 ----
  6.28 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: Cast to Union,  N
*** 24850,24859 ****
  =========================
  
  A cast to union type is similar to other casts, except that the type
! specified is a union type.  You can specify the type either with `union
! TAG' or with a typedef name.  A cast to union is actually a
! constructor, not a cast, and hence does not yield an lvalue like normal
! casts.  (*Note Compound Literals::.)
  
   The types that may be cast to the union type are those of the members
  of the union.  Thus, given the following union and variables:
--- 24676,24685 ----
  =========================
  
  A cast to union type is similar to other casts, except that the type
! specified is a union type.  You can specify the type either with 'union
! TAG' or with a typedef name.  A cast to union is actually a constructor,
! not a cast, and hence does not yield an lvalue like normal casts.
! (*Note Compound Literals::.)
  
   The types that may be cast to the union type are those of the members
  of the union.  Thus, given the following union and variables:
*************** of the union.  Thus, given the following
*** 24862,24868 ****
       int x;
       double y;
  
! both `x' and `y' can be cast to type `union foo'.
  
   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:
--- 24688,24694 ----
       int x;
       double y;
  
! both 'x' and 'y' can be cast to type 'union foo'.
  
   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:
*************** In GNU C, you declare certain things abo
*** 24906,24999 ****
  program which help the compiler optimize function calls and check your
  code more carefully.
  
!  The keyword `__attribute__' allows you to specify special attributes
  when making a declaration.  This keyword is followed by an attribute
  specification inside double parentheses.  The following attributes are
! currently defined for functions on all targets: `aligned',
! `alloc_size', `alloc_align', `assume_aligned', `noreturn',
! `returns_twice', `noinline', `noclone', `no_icf', `always_inline',
! `flatten', `pure', `const', `nothrow', `sentinel', `format',
! `format_arg', `no_instrument_function', `no_split_stack', `section',
! `constructor', `destructor', `used', `unused', `deprecated', `weak',
! `malloc', `alias', `ifunc', `warn_unused_result', `nonnull',
! `returns_nonnull', `gnu_inline', `externally_visible', `hot', `cold',
! `artificial', `no_sanitize_address', `no_address_safety_analysis',
! `no_sanitize_thread', `no_sanitize_undefined', `no_reorder',
! `bnd_legacy', `bnd_instrument', `stack_protect', `error' and `warning'.
  Several other attributes are defined for functions on particular target
! systems.  Other attributes, including `section' are supported for
  variables declarations (*note Variable Attributes::), labels (*note
  Label Attributes::) and for types (*note Type Attributes::).
  
   GCC plugins may provide their own attributes.
  
!  You may also specify attributes with `__' preceding and following each
  keyword.  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 `__noreturn__' instead of `noreturn'.
  
   *Note Attribute Syntax::, for details of the exact syntax for using
  attributes.
  
! `alias ("TARGET")'
!      The `alias' attribute causes the declaration to be emitted as an
       alias for another symbol, which must be specified.  For instance,
  
            void __f () { /* Do something. */; }
            void f () __attribute__ ((weak, alias ("__f")));
  
!      defines `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.
  
       Not all target machines support this attribute.
  
! `aligned (ALIGNMENT)'
       This attribute specifies a minimum alignment for the function,
       measured in bytes.
  
       You cannot use this attribute to decrease the alignment of a
       function, only to increase it.  However, when you explicitly
       specify a function alignment this 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 your linker.  On many 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_size'
!      The `alloc_size' attribute is used to tell the compiler that the
       function return value points to memory, where the size is given by
       one or two of the functions parameters.  GCC uses this information
!      to improve the correctness 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 allocated size is either the value of the single
!      function argument specified or the product of the two function
!      arguments specified.  Argument numbering starts at one.
  
       For instance,
  
            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.
  
! `alloc_align'
!      The `alloc_align' attribute is used to tell the compiler that the
       function return value points to memory, where the returned pointer
!      minimum alignment is given by one of the functions parameters.
!      GCC uses this information to improve pointer alignment analysis.
  
       The function parameter denoting the allocated alignment is
       specified by one integer argument, whose number is the argument of
--- 24732,24825 ----
  program which help the compiler optimize function calls and check your
  code more carefully.
  
!  The keyword '__attribute__' allows you to specify special attributes
  when making a declaration.  This keyword is followed by an attribute
  specification inside double parentheses.  The following attributes are
! currently defined for functions on all targets: 'aligned', 'alloc_size',
! 'alloc_align', 'assume_aligned', 'noreturn', 'returns_twice',
! 'noinline', 'noclone', 'no_icf', 'always_inline', 'flatten', 'pure',
! 'const', 'nothrow', 'sentinel', 'format', 'format_arg',
! 'no_instrument_function', 'no_split_stack', 'section', 'constructor',
! 'destructor', 'used', 'unused', 'deprecated', 'weak', 'malloc', 'alias',
! 'ifunc', 'warn_unused_result', 'nonnull', 'returns_nonnull',
! 'gnu_inline', 'externally_visible', 'hot', 'cold', 'artificial',
! 'no_sanitize_address', 'no_address_safety_analysis',
! 'no_sanitize_thread', 'no_sanitize_undefined', 'no_reorder',
! 'bnd_legacy', 'bnd_instrument', 'stack_protect', 'error' and 'warning'.
  Several other attributes are defined for functions on particular target
! systems.  Other attributes, including 'section' are supported for
  variables declarations (*note Variable Attributes::), labels (*note
  Label Attributes::) and for types (*note Type Attributes::).
  
   GCC plugins may provide their own attributes.
  
!  You may also specify attributes with '__' preceding and following each
  keyword.  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 '__noreturn__' instead of 'noreturn'.
  
   *Note Attribute Syntax::, for details of the exact syntax for using
  attributes.
  
! 'alias ("TARGET")'
!      The 'alias' attribute causes the declaration to be emitted as an
       alias for another symbol, which must be specified.  For instance,
  
            void __f () { /* Do something. */; }
            void f () __attribute__ ((weak, alias ("__f")));
  
!      defines '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.
  
       Not all target machines support this attribute.
  
! 'aligned (ALIGNMENT)'
       This attribute specifies a minimum alignment for the function,
       measured in bytes.
  
       You cannot use this attribute to decrease the alignment of a
       function, only to increase it.  However, when you explicitly
       specify a function alignment this 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 your linker.  On many 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_size'
!      The 'alloc_size' attribute is used to tell the compiler that the
       function return value points to memory, where the size is given by
       one or two of the functions parameters.  GCC uses this information
!      to improve the correctness 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
!      allocated size is either the value of the single function argument
!      specified or the product of the two function arguments specified.
!      Argument numbering starts at one.
  
       For instance,
  
            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.
  
! 'alloc_align'
!      The 'alloc_align' attribute is used to tell the compiler that the
       function return value points to memory, where the returned pointer
!      minimum alignment is given by one of the functions parameters.  GCC
!      uses this information to improve pointer alignment analysis.
  
       The function parameter denoting the allocated alignment is
       specified by one integer argument, whose number is the argument of
*************** attributes.
*** 25003,25013 ****
  
            void* my_memalign(size_t, size_t) __attribute__((alloc_align(1)))
  
!      declares that `my_memalign' returns memory with minimum alignment
       given by parameter 1.
  
! `assume_aligned'
!      The `assume_aligned' attribute is used to tell the compiler that
       the function return value points to memory, where the returned
       pointer minimum alignment is given by the first argument.  If the
       attribute has two arguments, the second argument is misalignment
--- 24829,24839 ----
  
            void* my_memalign(size_t, size_t) __attribute__((alloc_align(1)))
  
!      declares that 'my_memalign' returns memory with minimum alignment
       given by parameter 1.
  
! 'assume_aligned'
!      The 'assume_aligned' attribute is used to tell the compiler that
       the function return value points to memory, where the returned
       pointer minimum alignment is given by the first argument.  If the
       attribute has two arguments, the second argument is misalignment
*************** attributes.
*** 25018,25027 ****
            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 pointer and that
!      `my_alloc2' returns a pointer whose value modulo 32 is equal to 8.
  
! `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
--- 24844,24853 ----
            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 pointer and that
!      'my_alloc2' returns a pointer whose value modulo 32 is equal to 8.
  
! '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
*************** attributes.
*** 25031,25143 ****
       and a failure to inline an indirect call may or may not be
       diagnosed.
  
! `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.
  
! `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.
  
! `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.
  
! `flatten'
       Generally, inlining into a function is limited.  For a function
       marked with this attribute, every call inside this function is
       inlined, if possible.  Whether the function itself is considered
       for inlining depends on its size and the current inlining
       parameters.
  
! `error ("MESSAGE")'
       If this 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 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, when using
!      this attribute the problem is diagnosed earlier and with exact
!      location of the call even in presence of inline functions or when
!      not emitting debugging information.
  
! `warning ("MESSAGE")'
       If this attribute is used on a function declaration and a call to
       such a function is not eliminated through dead code elimination or
       other optimizations, a warning that includes MESSAGE is diagnosed.
       This is useful for compile-time checking, especially together with
!      `__builtin_constant_p' and inline functions.  While it is possible
!      to define the function with a message in `.gnu.warning*' section,
!      when using this attribute the problem is diagnosed earlier and
!      with exact location of the call even in presence of inline
!      functions or when not emitting debugging information.
  
! `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.
  
! `const'
       Many functions do not examine any values except their arguments,
       and have no effects except the return value.  Basically this is
!      just slightly more strict class than the `pure' attribute below,
       since function is not allowed to read global memory.
  
       Note that a function that has pointer arguments and examines the
!      data pointed to must _not_ be declared `const'.  Likewise, a
!      function that calls a non-`const' function usually must not be
!      `const'.  It does not make sense for a `const' function to return
!      `void'.
  
! `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.
  
--- 24857,24967 ----
       and a failure to inline an indirect call may or may not be
       diagnosed.
  
! '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.
  
! '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.
  
! '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.
  
! 'flatten'
       Generally, inlining into a function is limited.  For a function
       marked with this attribute, every call inside this function is
       inlined, if possible.  Whether the function itself is considered
       for inlining depends on its size and the current inlining
       parameters.
  
! 'error ("MESSAGE")'
       If this 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 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, when using this
!      attribute the problem is diagnosed earlier and with exact location
!      of the call even in presence of inline functions or when not
!      emitting debugging information.
  
! 'warning ("MESSAGE")'
       If this attribute is used on a function declaration and a call to
       such a function is not eliminated through dead code elimination or
       other optimizations, a warning that includes MESSAGE is diagnosed.
       This is useful for compile-time checking, especially together with
!      '__builtin_constant_p' and inline functions.  While it is possible
!      to define the function with a message in '.gnu.warning*' section,
!      when using this attribute the problem is diagnosed earlier and with
!      exact location of the call even in presence of inline functions or
!      when not emitting debugging information.
  
! '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.
  
! 'const'
       Many functions do not examine any values except their arguments,
       and have no effects except the return value.  Basically this is
!      just slightly more strict class than the 'pure' attribute below,
       since function is not allowed to read global memory.
  
       Note that a function that has pointer arguments and examines the
!      data pointed to must _not_ be declared 'const'.  Likewise, a
!      function that calls a non-'const' function usually must not be
!      'const'.  It does not make sense for a 'const' function to return
!      'void'.
  
! '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.
  
*************** attributes.
*** 25154,25162 ****
  
       These attributes are not currently implemented for Objective-C.
  
! `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
--- 24978,24986 ----
  
       These attributes are not currently implemented for Objective-C.
  
! '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
*************** attributes.
*** 25172,25206 ****
       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::.)
  
! `disinterrupt'
       On Epiphany and MeP targets, this attribute causes the compiler to
       emit instructions to disable interrupts for the duration of the
       given function.
  
! `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.
  
--- 24996,25028 ----
       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::.)
  
! 'disinterrupt'
       On Epiphany and MeP targets, this attribute causes the compiler to
       emit instructions to disable interrupts for the duration of the
       given function.
  
! '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.
  
*************** attributes.
*** 25211,25327 ****
  
       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
!      virtual function and, for either of those two conditions, the
!      class 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.
  
! `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.
  
! `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.
  
! `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.
  
- `far'
       On MeP targets this causes the compiler to use a calling convention
       that assumes the called function is too far away for the built-in
       addressing modes.
  
! `fast_interrupt'
       Use this attribute on the M32C and RX ports 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'.
  
! `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.
  
! `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:
  
--- 25033,25149 ----
  
       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
!      virtual function and, for either of those two conditions, the class
!      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.
  
! '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.
  
! '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.
  
! '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.
! 
! 'far'
  
       On MeP targets this causes the compiler to use a calling convention
       that assumes the called function is too far away for the built-in
       addressing modes.
  
! 'fast_interrupt'
       Use this attribute on the M32C and RX ports 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'.
  
! '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.
  
! '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:
  
*************** attributes.
*** 25329,25457 ****
            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, and should be `printf', `scanf', `strftime',
!      `gnu_printf', `gnu_scanf', `gnu_strftime' or `strfmon'.  (You can
!      also use `__printf__', `__scanf__', `__strftime__' or
!      `__strfmon__'.)  On MinGW targets, `ms_printf', `ms_scanf', and
!      `ms_strftime' are also present.  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 Microsoft Windows targets,
!      values prefixed with `ms_' refer to the formats accepted by the
!      `msvcrt.dll' library.  The parameter STRING-INDEX specifies which
       argument is the format 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.
  
!      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 carried out by this version of the compiler.
  
       The target may also provide additional types of format checks.
       *Note Format Checks Specific to Particular Target Machines: Target
       Format Checks.
  
! `format_arg (STRING-INDEX)'
!      The `format_arg' attribute specifies that a function takes a format
!      string 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).  For example, the
!      declaration:
  
            extern char *
            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.
  
       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.
  
!      The target may also allow additional types in `format-arg'
       attributes.  *Note Format Checks Specific to Particular Target
       Machines: Target Format Checks.
  
! `function_vector'
!      Use this attribute on the H8/300, H8/300H, and H8S to indicate
!      that the specified function should be called through the function
       vector.  Calling a function through the function vector reduces
!      code size, however; the function vector has a limited size
!      (maximum 128 entries on the H8/300 and 64 entries on the H8/300H
!      and H8S) and shares space with the interrupt vector.
  
       On SH2A targets, this attribute declares a function to be called
       using the TBR relative addressing mode.  The argument to this
       attribute is the entry number of the same function in a vector
       table containing all the TBR relative addressable functions.  For
!      correct operation the TBR must be setup accordingly to point to
!      the start of the vector table before any functions with this
!      attribute are invoked.  Usually a good place to do the
!      initialization is the startup routine.  The TBR relative vector
!      table can have at max 256 function entries.  The jumps to these
!      functions are generated using a SH2A specific, non delayed branch
!      instruction JSR/N @(disp8,TBR).  You must use GAS and GLD from GNU
!      binutils version 2.7 or later for this attribute to work correctly.
  
       Please refer the example of M16C target, to see the use of this
       attribute while declaring a function,
--- 25151,25277 ----
            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, and should be 'printf', 'scanf', 'strftime',
!      'gnu_printf', 'gnu_scanf', 'gnu_strftime' or 'strfmon'.  (You can
!      also use '__printf__', '__scanf__', '__strftime__' or
!      '__strfmon__'.)  On MinGW targets, 'ms_printf', 'ms_scanf', and
!      'ms_strftime' are also present.  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 Microsoft Windows targets,
!      values prefixed with 'ms_' refer to the formats accepted by the
!      'msvcrt.dll' library.  The parameter STRING-INDEX specifies which
       argument is the format 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.
  
!      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
!      carried out by this version of the compiler.
  
       The target may also provide additional types of format checks.
       *Note Format Checks Specific to Particular Target Machines: Target
       Format Checks.
  
! 'format_arg (STRING-INDEX)'
!      The 'format_arg' attribute specifies that a function takes a format
!      string 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).  For example, the declaration:
  
            extern char *
            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.
  
       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.
  
!      The target may also allow additional types in 'format-arg'
       attributes.  *Note Format Checks Specific to Particular Target
       Machines: Target Format Checks.
  
! 'function_vector'
!      Use this attribute on the H8/300, H8/300H, and H8S to indicate that
!      the specified function should be called through the function
       vector.  Calling a function through the function vector reduces
!      code size, however; the function vector has a limited size (maximum
!      128 entries on the H8/300 and 64 entries on the H8/300H and H8S)
!      and shares space with the interrupt vector.
  
       On SH2A targets, this attribute declares a function to be called
       using the TBR relative addressing mode.  The argument to this
       attribute is the entry number of the same function in a vector
       table containing all the TBR relative addressable functions.  For
!      correct operation the TBR must be setup accordingly to point to the
!      start of the vector table before any functions with this attribute
!      are invoked.  Usually a good place to do the initialization is the
!      startup routine.  The TBR relative vector table can have at max 256
!      function entries.  The jumps to these functions are generated using
!      a SH2A specific, non delayed branch instruction JSR/N @(disp8,TBR).
!      You must use GAS and GLD from GNU binutils version 2.7 or later for
!      this attribute to work correctly.
  
       Please refer the example of M16C target, to see the use of this
       attribute while declaring a function,
*************** attributes.
*** 25461,25473 ****
       being made to the same function, it saves 2 bytes of code per each
       of these calls.
  
!      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.
--- 25281,25293 ----
       being made to the same function, it saves 2 bytes of code per each
       of these calls.
  
!      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.
*************** attributes.
*** 25476,25482 ****
       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)
--- 25296,25302 ----
       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)
*************** attributes.
*** 25493,25511 ****
  
       This attribute is ignored for R8C target.
  
! `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 routine can be selected for the particular processor or other
       system characteristics determined then.  To use this attribute,
!      first define the implementation functions available, and a
!      resolver function that returns a pointer to the selected
!      implementation function.  The implementation functions'
!      declarations must match the API of the function being implemented,
!      the resolver's declaration is be a function returning pointer to
!      void function returning void:
  
            void *my_memcpy (void *dst, const void *src, size_t len)
            {
--- 25313,25331 ----
  
       This attribute is ignored for R8C target.
  
! '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 routine can be selected for the particular processor or other
       system characteristics determined then.  To use this attribute,
!      first define the implementation functions available, and a resolver
!      function that returns a pointer to the selected implementation
!      function.  The implementation functions' declarations must match
!      the API of the function being implemented, the resolver's
!      declaration is be a function returning pointer to void function
!      returning void:
  
            void *my_memcpy (void *dst, const void *src, size_t len)
            {
*************** attributes.
*** 25533,25565 ****
       higher and GNU C Library version 2.11.1 are required to use this
       feature.
  
! `interrupt'
       Use this attribute on the ARC, ARM, AVR, CR16, Epiphany, M32C,
       M32R/D, m68k, MeP, MIPS, MSP430, NDS32, RL78, RX, Visium and
       Xstormy16 ports 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.  With Epiphany targets it may also generate
!      a special section with code to initialize the interrupt vector
!      table.
  
       Note, interrupt handlers for the Blackfin, H8/300, H8/300H, H8S,
       MicroBlaze, and SH processors can be specified via the
!      `interrupt_handler' attribute.
  
       Note, on the ARC, you must specify the kind of interrupt to be
       handled in a parameter to the interrupt attribute like this:
  
            void f () __attribute__ ((interrupt ("ilink1")));
  
!      Permissible values for this parameter are: `ilink1' and `ilink2'.
  
       Note, on the AVR, the hardware globally disables interrupts when an
       interrupt is executed.  The first instruction of an interrupt
!      handler declared with this attribute is a `SEI' instruction to
!      re-enable interrupts.  See also the `signal' function attribute
!      that does not insert a `SEI' instruction.  If both `signal' and
!      `interrupt' are specified for the same function, `signal' is
       silently ignored.
  
       Note, for the ARM, you can specify the kind of interrupt to be
--- 25353,25384 ----
       higher and GNU C Library version 2.11.1 are required to use this
       feature.
  
! 'interrupt'
       Use this attribute on the ARC, ARM, AVR, CR16, Epiphany, M32C,
       M32R/D, m68k, MeP, MIPS, MSP430, NDS32, RL78, RX, Visium and
       Xstormy16 ports 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.  With Epiphany targets it may also generate a
!      special section with code to initialize the interrupt vector table.
  
       Note, interrupt handlers for the Blackfin, H8/300, H8/300H, H8S,
       MicroBlaze, and SH processors can be specified via the
!      'interrupt_handler' attribute.
  
       Note, on the ARC, you must specify the kind of interrupt to be
       handled in a parameter to the interrupt attribute like this:
  
            void f () __attribute__ ((interrupt ("ilink1")));
  
!      Permissible values for this parameter are: 'ilink1' and 'ilink2'.
  
       Note, on the AVR, the hardware globally disables interrupts when an
       interrupt is executed.  The first instruction of an interrupt
!      handler declared with this attribute is a 'SEI' instruction to
!      re-enable interrupts.  See also the 'signal' function attribute
!      that does not insert a 'SEI' instruction.  If both 'signal' and
!      'interrupt' are specified for the same function, 'signal' is
       silently ignored.
  
       Note, for the ARM, you can specify the kind of interrupt to be
*************** attributes.
*** 25568,25633 ****
  
            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.
  
       Note, for the MSP430 you can provide an argument to the interrupt
       attribute which specifies a name or number.  If the argument is a
!      number it indicates the slot in the interrupt vector table (0 -
!      31) to which 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.
  
       You can also use the following function attributes to modify how
       normal functions interact with interrupt functions:
  
!     `critical'
            Critical functions disable interrupts upon entry and restore
            the previous interrupt state upon exit.  Critical functions
!           cannot also have the `naked' or `reentrant' attributes.  They
!           can have the `interrupt' attribute.
  
!     `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.
  
- 
       On Epiphany targets one or more optional parameters can be added
       like this:
  
            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 parameter(s) may be omitted entirely, in which case no
!      interrupt vector table entry is provided.
  
       Note, on Epiphany targets, interrupts are enabled inside the
!      function unless the `disinterrupt' attribute is also specified.
  
       On Epiphany targets, you can also use the following attribute to
       modify the behavior of an interrupt handler:
!     `forwarder_section'
            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.
  
       The following examples are all valid uses of these attributes on
--- 25387,25451 ----
  
            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.
  
       Note, for the MSP430 you can provide an argument to the interrupt
       attribute which specifies a name or number.  If the argument is a
!      number it indicates the slot in the interrupt vector table (0 - 31)
!      to which 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.
  
       You can also use the following function attributes to modify how
       normal functions interact with interrupt functions:
  
!      'critical'
            Critical functions disable interrupts upon entry and restore
            the previous interrupt state upon exit.  Critical functions
!           cannot also have the 'naked' or 'reentrant' attributes.  They
!           can have the 'interrupt' attribute.
  
!      '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.
  
       On Epiphany targets one or more optional parameters can be added
       like this:
  
            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
!      parameter(s) may be omitted entirely, in which case no interrupt
!      vector table entry is provided.
  
       Note, on Epiphany targets, interrupts are enabled inside the
!      function unless the 'disinterrupt' attribute is also specified.
  
       On Epiphany targets, you can also use the following attribute to
       modify the behavior of an interrupt handler:
!      'forwarder_section'
            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.
  
       The following examples are all valid uses of these attributes on
*************** attributes.
*** 25640,25659 ****
            void __attribute__ ((interrupt ("dma0, dma1"), forwarder_section ("tramp")))
              external_dma_handler ();
  
!      On MIPS targets, 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.
  
!     `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 ();
--- 25458,25477 ----
            void __attribute__ ((interrupt ("dma0, dma1"), forwarder_section ("tramp")))
              external_dma_handler ();
  
!      On MIPS targets, 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.
  
!      '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 ();
*************** attributes.
*** 25674,25709 ****
       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.
  
!      On RL78, 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').
  
       On RX targets, you may specify one or more vector numbers 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
       in the default table (note that preprocessor macros may be used for
--- 25492,25523 ----
       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.
  
!      On RL78, 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').
  
       On RX targets, you may specify one or more vector numbers 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
       in the default table (note that preprocessor macros may be used for
*************** attributes.
*** 25712,25912 ****
  
       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 ();
  
! `interrupt_handler'
!      Use this attribute on the Blackfin, m68k, H8/300, H8/300H, H8S,
!      and SH 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.
  
! `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.
  
! `isr'
       Use this attribute on ARM to write Interrupt Service Routines.
!      This is an alias to the `interrupt' attribute above.
  
! `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'
       On the Blackfin, this attribute specifies a function to be placed
       into L2 SRAM. The function is put into a specific section named
!      `.l1.text'. With `-mfdpic', callers of such functions use an
       inlined PLT.
  
! `leaf'
       Calls to external functions with this attribute must return to the
       current compilation unit only by return or by exception handling.
       In particular, leaf functions are not allowed to call callback
!      function passed to it from the current compilation unit or
!      directly call functions exported by the unit or longjmp into the
!      unit.  Leaf function 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 attribute is intended for library functions to improve
!      dataflow analysis.  The compiler takes the hint that any data not
!      escaping the current compilation unit can not 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 invoke signals and signal handlers
       might be defined in the current compilation unit and use static
       variables.  The only compliant way to write such a signal handler
!      is to declare such variables `volatile'.
  
!      The attribute has no effect on functions defined within the
!      current compilation unit.  This is to allow easy merging of
!      multiple compilation units into one, for example, by using the
!      link-time optimization.  For this reason the attribute is not
!      allowed on types to annotate indirect calls.
  
! `long_call'
! `medium_call'
! `short_call'
       These attributes specify how a particular function is called on
!      ARC, ARM and Epiphany - with `medium_call' being specific to ARC.
!      These attributes override the `-mlong-calls' (*note ARM Options::
!      and *note ARC Options::) and `-mmedium-calls' (*note ARC Options::)
!      command-line switches 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.
  
!      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.
  
! `longcall'
! `shortcall'
!      On Blackfin and PowerPC, 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, on the RS/6000 and
!      PowerPC, the `#pragma longcall' setting.
  
       *Note RS/6000 and PowerPC Options::, for more information on
       whether long calls are necessary.
  
! `long_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 `near' attribute has the
       opposite effect; it specifies that non-PIC calls should be made
!      using the more efficient `jal' instruction.
  
! `malloc'
!      This tells the compiler 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.
  
       Using this attribute can improve optimization.  Functions like
!      `malloc' and `calloc' have this property because they return a
       pointer to uninitialized or zeroed-out storage.  However, functions
!      like `realloc' do not have this property, as they can return a
       pointer to storage containing pointers.
  
! `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::).
  
! `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).
  
! `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 ABI
       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 x86/AMD 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
       for popping the hidden pointer together with the rest of the
--- 25526,25730 ----
  
       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 ();
  
! 'interrupt_handler'
!      Use this attribute on the Blackfin, m68k, H8/300, H8/300H, H8S, and
!      SH 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.
  
! '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.
  
! 'isr'
       Use this attribute on ARM to write Interrupt Service Routines.
!      This is an alias to the 'interrupt' attribute above.
  
! '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'
       On the Blackfin, this attribute specifies a function to be placed
       into L2 SRAM. The function is put into a specific section named
!      '.l1.text'.  With '-mfdpic', callers of such functions use an
       inlined PLT.
  
! 'leaf'
       Calls to external functions with this attribute must return to the
       current compilation unit only by return or by exception handling.
       In particular, leaf functions are not allowed to call callback
!      function passed to it from the current compilation unit or directly
!      call functions exported by the unit or longjmp into the unit.  Leaf
!      function 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 attribute is intended for library functions to improve dataflow
!      analysis.  The compiler takes the hint that any data not escaping
!      the current compilation unit can not 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 invoke signals and signal handlers
       might be defined in the current compilation unit and use static
       variables.  The only compliant way to write such a signal handler
!      is to declare such variables 'volatile'.
  
!      The attribute has no effect on functions defined within the current
!      compilation unit.  This is to allow easy merging of multiple
!      compilation units into one, for example, by using the link-time
!      optimization.  For this reason the attribute is not allowed on
!      types to annotate indirect calls.
  
! 'long_call'
! 'medium_call'
! 'short_call'
       These attributes specify how a particular function is called on
!      ARC, ARM and Epiphany - with 'medium_call' being specific to ARC.
!      These attributes override the '-mlong-calls' (*note ARM Options::
!      and *note ARC Options::) and '-mmedium-calls' (*note ARC Options::)
!      command-line switches 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.
  
!      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.
  
! 'longcall'
! 'shortcall'
!      On Blackfin and PowerPC, 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, on the RS/6000 and PowerPC, the
!      '#pragma longcall' setting.
  
       *Note RS/6000 and PowerPC Options::, for more information on
       whether long calls are necessary.
  
! 'long_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 'near' attribute has the
       opposite effect; it specifies that non-PIC calls should be made
!      using the more efficient 'jal' instruction.
  
! 'malloc'
!      This tells the compiler 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.
  
       Using this attribute can improve optimization.  Functions like
!      'malloc' and 'calloc' have this property because they return a
       pointer to uninitialized or zeroed-out storage.  However, functions
!      like 'realloc' do not have this property, as they can return a
       pointer to storage containing pointers.
  
! '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::).
  
! '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).
  
! '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 ABI
       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 x86/AMD 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
       for popping the hidden pointer together with the rest of the
*************** attributes.
*** 25917,25990 ****
       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.
  
- `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 arguments the maximum allowed value is 1000000.
  
       If both arguments are zero, hotpatching is disabled.
  
! `naked'
       This attribute is available on the ARM, AVR, MCORE, MSP430, NDS32,
       RL78, RX and SPU ports.  It 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.
  
! `near'
       On MeP targets this attribute causes the compiler to assume the
       called function is close enough to use the normal calling
!      convention, overriding the `-mtf' command-line option.
  
! `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.
  
! `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::).
  
! `no_instrument_function'
!      If `-finstrument-functions' is given, profiling function calls are
       generated at entry and exit of most user-compiled functions.
       Functions with this attribute are not so instrumented.
  
! `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.
  
! `stack_protect'
       This function attribute make a stack protection of the function if
!      flags `fstack-protector' or `fstack-protector-strong' or
!      `fstack-protector-explicit' are set.
  
! `noinline'
       This function 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
--- 25735,25810 ----
       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.
! 
! '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
!      arguments the maximum allowed value is 1000000.
  
       If both arguments are zero, hotpatching is disabled.
  
! 'naked'
       This attribute is available on the ARM, AVR, MCORE, MSP430, NDS32,
       RL78, RX and SPU ports.  It 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.
  
! 'near'
       On MeP targets this attribute causes the compiler to assume the
       called function is close enough to use the normal calling
!      convention, overriding the '-mtf' command-line option.
  
! '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.
  
! '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::).
  
! 'no_instrument_function'
!      If '-finstrument-functions' is given, profiling function calls are
       generated at entry and exit of most user-compiled functions.
       Functions with this attribute are not so instrumented.
  
! '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.
  
! 'stack_protect'
       This function attribute make a stack protection of the function if
!      flags 'fstack-protector' or 'fstack-protector-strong' or
!      'fstack-protector-explicit' are set.
  
! 'noinline'
       This function 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
*************** attributes.
*** 25995,26027 ****
       (*note Extended Asm::) in the called function, to serve as a
       special side-effect.
  
! `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.
  
! `no_icf'
!      This function attribute prevents a functions from being merged
!      with another semantically equivalent function.
  
! `nonnull (ARG-INDEX, ...)'
!      The `nonnull' attribute specifies that some function parameters
       should be non-null pointers.  For instance, the declaration:
  
            extern void *
            my_memcpy (void *dest, const void *src, size_t len)
                    __attribute__((nonnull (1, 2)));
  
!      causes the compiler to check that, in calls to `my_memcpy',
       arguments DEST and SRC are non-null.  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.  The compiler may also choose to make optimizations based
       on the knowledge that certain function arguments will never be
       null.
  
!      If no argument index list 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:
  
--- 25815,25847 ----
       (*note Extended Asm::) in the called function, to serve as a
       special side-effect.
  
! '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.
  
! 'no_icf'
!      This function attribute prevents a functions from being merged with
!      another semantically equivalent function.
  
! 'nonnull (ARG-INDEX, ...)'
!      The 'nonnull' attribute specifies that some function parameters
       should be non-null pointers.  For instance, the declaration:
  
            extern void *
            my_memcpy (void *dest, const void *src, size_t len)
                    __attribute__((nonnull (1, 2)));
  
!      causes the compiler to check that, in calls to 'my_memcpy',
       arguments DEST and SRC are non-null.  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.  The compiler may also choose to make optimizations based
       on the knowledge that certain function arguments will never be
       null.
  
!      If no argument index list 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:
  
*************** attributes.
*** 26029,26044 ****
            my_memcpy (void *dest, const void *src, size_t len)
                    __attribute__((nonnull));
  
! `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.
  
! `returns_nonnull'
!      The `returns_nonnull' attribute specifies that the function return
       value should be a non-null pointer.  For instance, the declaration:
  
            extern void *
--- 25849,25864 ----
            my_memcpy (void *dest, const void *src, size_t len)
                    __attribute__((nonnull));
  
! '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.
  
! 'returns_nonnull'
!      The 'returns_nonnull' attribute specifies that the function return
       value should be a non-null pointer.  For instance, the declaration:
  
            extern void *
*************** attributes.
*** 26047,26057 ****
       lets the compiler optimize callers based on the knowledge that the
       return value will never be null.
  
! `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));
  
--- 25867,25877 ----
       lets the compiler optimize callers based on the knowledge that the
       return value will never be null.
  
! '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));
  
*************** attributes.
*** 26062,26106 ****
              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'.
  
       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.
  
! `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.
  
! `optimize'
!      The `optimize' attribute is used to specify that a function is to
       be compiled with different optimization options than specified on
       the command line.  Arguments can either be numbers or strings.
       Numbers are assumed to be an optimization level.  Strings that
!      begin with `O' are assumed to be an optimization option, while
!      other options are assumed to be used with a `-f' prefix.  You can
!      also use the `#pragma GCC optimize' pragma to set the optimization
       options that affect more than one function.  *Note Function
!      Specific Option Pragmas::, for details about the `#pragma GCC
       optimize' pragma.
  
       This can be used for instance to have frequently-executed functions
--- 25882,25926 ----
              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'.
  
       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.
  
! '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.
  
! 'optimize'
!      The 'optimize' attribute is used to specify that a function is to
       be compiled with different optimization options than specified on
       the command line.  Arguments can either be numbers or strings.
       Numbers are assumed to be an optimization level.  Strings that
!      begin with 'O' are assumed to be an optimization option, while
!      other options are assumed to be used with a '-f' prefix.  You can
!      also use the '#pragma GCC optimize' pragma to set the optimization
       options that affect more than one function.  *Note Function
!      Specific Option Pragmas::, for details about the '#pragma GCC
       optimize' pragma.
  
       This can be used for instance to have frequently-executed functions
*************** attributes.
*** 26108,26188 ****
       faster and larger code, while other functions can be compiled with
       less aggressive 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.
  
! `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.
  
! `pure'
       Many functions have no effects except the return value and their
       return value depends only on the parameters and/or global
       variables.  Such a function can be subject to common subexpression
       elimination and loop optimization just as an arithmetic operator
       would be.  These functions should be declared with the attribute
!      `pure'.  For example,
  
            int square (int) __attribute__ ((pure));
  
!      says that the hypothetical function `square' is safe to call fewer
       times than the program says.
  
!      Some of 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 two consecutive calls (such as `feof' in a
       multithreading environment).
  
! `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.
  
!      When profile feedback is available, via `-fprofile-use', hot
       functions are automatically detected and this attribute is ignored.
  
! `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
--- 25928,26008 ----
       faster and larger code, while other functions can be compiled with
       less aggressive 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.
  
! '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.
  
! 'pure'
       Many functions have no effects except the return value and their
       return value depends only on the parameters and/or global
       variables.  Such a function can be subject to common subexpression
       elimination and loop optimization just as an arithmetic operator
       would be.  These functions should be declared with the attribute
!      'pure'.  For example,
  
            int square (int) __attribute__ ((pure));
  
!      says that the hypothetical function 'square' is safe to call fewer
       times than the program says.
  
!      Some of 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 two consecutive calls (such as 'feof' in a
       multithreading environment).
  
! '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.
  
!      When profile feedback is available, via '-fprofile-use', hot
       functions are automatically detected and this attribute is ignored.
  
! '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
*************** attributes.
*** 26190,26392 ****
       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.
  
!      When profile feedback is available, via `-fprofile-use', cold
       functions are automatically detected and this attribute is ignored.
  
! `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.
  
! `bnd_legacy'
!      The `bnd_legacy' attribute on functions is used to inform the
       compiler that the function should not be instrumented when compiled
!      with the `-fcheck-pointer-bounds' option.
  
! `bnd_instrument'
!      The `bnd_instrument' attribute on functions is used to inform the
       compiler that the function should be instrumented when compiled
!      with the `-fchkp-instrument-marked-only' option.
  
! `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
       of their arguments on the stack.
  
       Beware that on some ELF systems this attribute is unsuitable for
       global functions in shared libraries with lazy binding (which is
!      the default).  Lazy binding sends the first call via resolving
!      code in the loader, which might assume EAX, EDX and ECX can be
       clobbered, as per the standard calling conventions.  Solaris 8 is
       affected by this.  Systems with the GNU C Library version 2.1 or
       higher and FreeBSD are believed to be safe since the loaders there
!      save EAX, EDX and ECX.  (Lazy binding can be disabled with the
       linker or the loader if desired, to avoid the problem.)
  
! `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.
  
! `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.
  
! `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.
  
       The nineteen 32-bit registers comprising general register R0 to
       R14, control register GBR, and system registers MACH, MACL, and PR
!      and the vector table address offset are saved into a register
!      bank.  Register banks are stacked in first-in last-out (FILO)
!      sequence.  Restoration from the bank is executed by issuing a
!      RESBANK instruction.
  
! `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.
  
! `saveall'
       Use this attribute on the Blackfin, 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.
  
! `save_volatiles'
       Use this attribute on the MicroBlaze to indicate that the function
       is an interrupt handler.  All volatile registers (in addition to
!      non-volatile registers) are saved in the function prologue.  If
!      the function is a leaf function, only volatiles used by the
!      function are saved.  A normal function return is generated instead
!      of a return from interrupt.
  
! `break_handler'
       Use this attribute on the MicroBlaze ports 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));
  
! `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'
!      This function attribute ensures that a parameter in a function
!      call is an explicit `NULL'.  The attribute is only valid on
!      variadic functions.  By default, the sentinel is located at
!      position zero, the last parameter of the function call.  If an
!      optional integer position argument P is supplied to the attribute,
!      the sentinel must be located at position P counting backwards from
!      the end of the argument list.
  
            __attribute__ ((sentinel))
            is equivalent to
            __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 pointer
!      type.  If your system defines the `NULL' macro with an integer type
!      then you need to add an explicit cast.  GCC replaces `stddef.h'
       with a copy that redefines NULL appropriately.
  
       The warnings for missing or incorrect sentinels are enabled with
!      `-Wformat'.
  
! `short_call'
!      See `long_call'.
  
! `shortcall'
!      See `longcall'.
  
! `signal'
       Use this attribute on the AVR to indicate that the specified
       function is an interrupt handler.  The compiler generates function
       entry and exit sequences suitable for use in an interrupt handler
       when this attribute is present.
  
!      See also the `interrupt' function attribute.
  
       The AVR hardware globally disables interrupts when an interrupt is
!      executed.  Interrupt handler functions defined 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.
  
!      If both `signal' and `interrupt' are specified for the same
!      function, `signal' is silently ignored.
  
! `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.
--- 26010,26211 ----
       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.
  
!      When profile feedback is available, via '-fprofile-use', cold
       functions are automatically detected and this attribute is ignored.
  
! '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.
  
! 'bnd_legacy'
!      The 'bnd_legacy' attribute on functions is used to inform the
       compiler that the function should not be instrumented when compiled
!      with the '-fcheck-pointer-bounds' option.
  
! 'bnd_instrument'
!      The 'bnd_instrument' attribute on functions is used to inform the
       compiler that the function should be instrumented when compiled
!      with the '-fchkp-instrument-marked-only' option.
  
! '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
       of their arguments on the stack.
  
       Beware that on some ELF systems this attribute is unsuitable for
       global functions in shared libraries with lazy binding (which is
!      the default).  Lazy binding sends the first call via resolving code
!      in the loader, which might assume EAX, EDX and ECX can be
       clobbered, as per the standard calling conventions.  Solaris 8 is
       affected by this.  Systems with the GNU C Library version 2.1 or
       higher and FreeBSD are believed to be safe since the loaders there
!      save EAX, EDX and ECX. (Lazy binding can be disabled with the
       linker or the loader if desired, to avoid the problem.)
  
! '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.
  
! '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.
  
! '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.
  
       The nineteen 32-bit registers comprising general register R0 to
       R14, control register GBR, and system registers MACH, MACL, and PR
!      and the vector table address offset are saved into a register bank.
!      Register banks are stacked in first-in last-out (FILO) sequence.
!      Restoration from the bank is executed by issuing a RESBANK
!      instruction.
  
! '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.
  
! 'saveall'
       Use this attribute on the Blackfin, 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.
  
! 'save_volatiles'
       Use this attribute on the MicroBlaze to indicate that the function
       is an interrupt handler.  All volatile registers (in addition to
!      non-volatile registers) are saved in the function prologue.  If the
!      function is a leaf function, only volatiles used by the function
!      are saved.  A normal function return is generated instead of a
!      return from interrupt.
  
! 'break_handler'
       Use this attribute on the MicroBlaze ports 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));
  
! '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'
!      This function attribute ensures that a parameter in a function call
!      is an explicit 'NULL'.  The attribute is only valid on variadic
!      functions.  By default, the sentinel is located at position zero,
!      the last parameter of the function call.  If an optional integer
!      position argument P is supplied to the attribute, the sentinel must
!      be located at position P counting backwards from the end of the
!      argument list.
  
            __attribute__ ((sentinel))
            is equivalent to
            __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 pointer
!      type.  If your system defines the 'NULL' macro with an integer type
!      then you need to add an explicit cast.  GCC replaces 'stddef.h'
       with a copy that redefines NULL appropriately.
  
       The warnings for missing or incorrect sentinels are enabled with
!      '-Wformat'.
  
! 'short_call'
!      See 'long_call'.
  
! 'shortcall'
!      See 'longcall'.
  
! 'signal'
       Use this attribute on the AVR to indicate that the specified
       function is an interrupt handler.  The compiler generates function
       entry and exit sequences suitable for use in an interrupt handler
       when this attribute is present.
  
!      See also the 'interrupt' function attribute.
  
       The AVR hardware globally disables interrupts when an interrupt is
!      executed.  Interrupt handler functions defined 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.
  
!      If both 'signal' and 'interrupt' are specified for the same
!      function, 'signal' is silently ignored.
  
! '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.
*************** attributes.
*** 26395,26734 ****
            void f () __attribute__ ((interrupt_handler,
                                      sp_switch ("alt_stack")));
  
! `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.
  
! `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.
  
! `target'
!      The `target' attribute is used to specify that a function is to be
       compiled with different target options than specified on the
       command line.  This can be used for instance to have functions
       compiled with a different ISA (instruction set architecture) than
!      the default.  You can also use the `#pragma GCC target' pragma to
       set more than one function to be compiled with specific target
       options.  *Note Function Specific Option Pragmas::, for details
!      about the `#pragma GCC target' pragma.
  
       For instance on an x86, you could compile one function with
!      `target("sse4.1,arch=core2")' 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 the user 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")));
            int sse3_func (void) __attribute__ ((__target__ ("sse3")));
  
!      You can either use multiple strings to specify multiple options,
!      or separate the options with a comma (`,').
  
!      The `target' attribute is presently implemented for x86, PowerPC,
       and Nios II targets only.  The options supported are specific to
       each target.
  
       On the x86, the following options are allowed:
  
!     `abm'
!     `no-abm'
            Enable/disable the generation of the advanced bit
            instructions.
  
!     `aes'
!     `no-aes'
            Enable/disable the generation of the AES instructions.
  
!     `default'
            *Note Function Multiversioning::, where it is used to specify
            the default function version.
  
!     `mmx'
!     `no-mmx'
            Enable/disable the generation of the MMX instructions.
  
!     `pclmul'
!     `no-pclmul'
            Enable/disable the generation of the PCLMUL instructions.
  
!     `popcnt'
!     `no-popcnt'
            Enable/disable the generation of the POPCNT instruction.
  
!     `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.
  
!     `fma4'
!     `no-fma4'
            Enable/disable the generation of the FMA4 instructions.
  
!     `xop'
!     `no-xop'
            Enable/disable the generation of the XOP instructions.
  
!     `lwp'
!     `no-lwp'
            Enable/disable the generation of the LWP instructions.
  
!     `ssse3'
!     `no-ssse3'
            Enable/disable the generation of the SSSE3 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.
  
!     `fused-madd'
!     `no-fused-madd'
            Enable/disable the generation of the fused multiply/add
            instructions.
  
!     `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.
  
!     `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.  The
!           `target("fpmath=sse,387")' option must be specified as
!           `target("fpmath=sse+387")' because the comma would separate
            different 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.
  
!     `mfpgpr'
!     `no-mfpgpr'
            Generate code that uses (does not use) the FP move to/from
            general purpose register instructions implemented on the
            POWER6X processor and other processors that support the
            extended PowerPC V2.05 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.
  
       When compiling for Nios II, the following options are allowed:
  
!     `custom-INSN=N'
!     `no-custom-INSN'
!           Each `custom-INSN=N' attribute locally enables use of a
!           custom instruction with encoding N when generating code that
!           uses INSN.  Similarly, `no-custom-INSN' locally inhibits use
!           of the custom instruction INSN.  These target attributes
!           correspond to the `-mcustom-INSN=N' and `-mno-custom-INSN'
!           command-line options, and support the same set of INSN
!           keywords.  *Note Nios II Options::, for more information.
  
!     `custom-fpu-cfg=NAME'
!           This attribute corresponds to the `-mcustom-fpu-cfg=NAME'
            command-line option, to select a predefined set of custom
            instructions named NAME.  *Note Nios II Options::, for more
            information.
--- 26214,26553 ----
            void f () __attribute__ ((interrupt_handler,
                                      sp_switch ("alt_stack")));
  
! '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.
  
! '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.
  
! 'target'
!      The 'target' attribute is used to specify that a function is to be
       compiled with different target options than specified on the
       command line.  This can be used for instance to have functions
       compiled with a different ISA (instruction set architecture) than
!      the default.  You can also use the '#pragma GCC target' pragma to
       set more than one function to be compiled with specific target
       options.  *Note Function Specific Option Pragmas::, for details
!      about the '#pragma GCC target' pragma.
  
       For instance on an x86, you could compile one function with
!      'target("sse4.1,arch=core2")' 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 the user 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")));
            int sse3_func (void) __attribute__ ((__target__ ("sse3")));
  
!      You can either use multiple strings to specify multiple options, or
!      separate the options with a comma (',').
  
!      The 'target' attribute is presently implemented for x86, PowerPC,
       and Nios II targets only.  The options supported are specific to
       each target.
  
       On the x86, the following options are allowed:
  
!      'abm'
!      'no-abm'
            Enable/disable the generation of the advanced bit
            instructions.
  
!      'aes'
!      'no-aes'
            Enable/disable the generation of the AES instructions.
  
!      'default'
            *Note Function Multiversioning::, where it is used to specify
            the default function version.
  
!      'mmx'
!      'no-mmx'
            Enable/disable the generation of the MMX instructions.
  
!      'pclmul'
!      'no-pclmul'
            Enable/disable the generation of the PCLMUL instructions.
  
!      'popcnt'
!      'no-popcnt'
            Enable/disable the generation of the POPCNT instruction.
  
!      '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.
  
!      'fma4'
!      'no-fma4'
            Enable/disable the generation of the FMA4 instructions.
  
!      'xop'
!      'no-xop'
            Enable/disable the generation of the XOP instructions.
  
!      'lwp'
!      'no-lwp'
            Enable/disable the generation of the LWP instructions.
  
!      'ssse3'
!      'no-ssse3'
            Enable/disable the generation of the SSSE3 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.
  
!      'fused-madd'
!      'no-fused-madd'
            Enable/disable the generation of the fused multiply/add
            instructions.
  
!      '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.
  
!      '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.  The
!           'target("fpmath=sse,387")' option must be specified as
!           'target("fpmath=sse+387")' because the comma would separate
            different 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.
  
!      'mfpgpr'
!      'no-mfpgpr'
            Generate code that uses (does not use) the FP move to/from
            general purpose register instructions implemented on the
            POWER6X processor and other processors that support the
            extended PowerPC V2.05 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.
  
       When compiling for Nios II, the following options are allowed:
  
!      'custom-INSN=N'
!      'no-custom-INSN'
!           Each 'custom-INSN=N' attribute locally enables use of a custom
!           instruction with encoding N when generating code that uses
!           INSN.  Similarly, 'no-custom-INSN' locally inhibits use of the
!           custom instruction INSN.  These target attributes correspond
!           to the '-mcustom-INSN=N' and '-mno-custom-INSN' command-line
!           options, and support the same set of INSN keywords.  *Note
!           Nios II Options::, for more information.
  
!      'custom-fpu-cfg=NAME'
!           This attribute corresponds to the '-mcustom-fpu-cfg=NAME'
            command-line option, to select a predefined set of custom
            instructions named NAME.  *Note Nios II Options::, for more
            information.
*************** attributes.
*** 26736,26776 ****
       On the x86 and PowerPC back ends, 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'.
  
! `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.
  
! `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
       referenced only in inline assembly.
  
       When applied to a member function of a C++ class template, the
!      attribute also means that the function is instantiated if the
!      class itself is instantiated.
  
! `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.
  
! `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
--- 26555,26595 ----
       On the x86 and PowerPC back ends, 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'.
  
! '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.
  
! '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
       referenced only in inline assembly.
  
       When applied to a member function of a C++ class template, the
!      attribute also means that the function is instantiated if the class
!      itself is instantiated.
  
! '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.
  
! '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
*************** attributes.
*** 26780,26786 ****
  
       Calls to FOO are mapped to calls to FOO{20040821}.
  
! `visibility ("VISIBILITY_TYPE")'
       This attribute affects the linkage of the declaration to which it
       is attached.  There are four supported VISIBILITY_TYPE values:
       default, hidden, protected or internal visibility.
--- 26599,26605 ----
  
       Calls to FOO are mapped to calls to FOO{20040821}.
  
! 'visibility ("VISIBILITY_TYPE")'
       This attribute affects the linkage of the declaration to which it
       is attached.  There are four supported VISIBILITY_TYPE values:
       default, hidden, protected or internal visibility.
*************** attributes.
*** 26789,26798 ****
            f () { /* Do something. */; }
            int i __attribute__ ((visibility ("hidden")));
  
!      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
--- 26608,26617 ----
            f () { /* Do something. */; }
            int i __attribute__ ((visibility ("hidden")));
  
!      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
*************** attributes.
*** 26808,26840 ****
            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
            mean that a function is _never_ called from another module.
!           Compare this with hidden functions which, while they cannot
!           be referenced directly by other modules, can be referenced
            indirectly via function pointers.  By indicating that a
!           function cannot be called from outside the module, GCC may
!           for 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.
  
--- 26627,26658 ----
            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
            mean that a function is _never_ called from another module.
!           Compare this with hidden functions which, while they cannot be
!           referenced directly by other modules, can be referenced
            indirectly via function pointers.  By indicating that a
!           function cannot be called from outside the module, GCC may for
!           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.
  
*************** attributes.
*** 26866,26872 ****
  
       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
--- 26684,26690 ----
  
       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
*************** attributes.
*** 26877,26894 ****
       If both the template and enclosing class have explicit visibility,
       the visibility from the template is used.
  
! `vliw'
!      On MeP, the `vliw' attribute tells the compiler to emit
       instructions in VLIW mode instead of core mode.  Note that this
       attribute is not allowed unless a VLIW coprocessor has been
       configured and enabled through command-line options.
  
! `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 ()
--- 26695,26712 ----
       If both the template and enclosing class have explicit visibility,
       the visibility from the template is used.
  
! 'vliw'
!      On MeP, the 'vliw' attribute tells the compiler to emit
       instructions in VLIW mode instead of core mode.  Note that this
       attribute is not allowed unless a VLIW coprocessor has been
       configured and enabled through command-line options.
  
! '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 ()
*************** attributes.
*** 26900,26922 ****
  
       results in warning on line 5.
  
! `weak'
!      The `weak' attribute causes the declaration 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 non-function declarations.  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.  Optionally, the TARGET may be given as
!      an argument to `weakref' itself.  In either case, `weakref'
!      implicitly marks the declaration as `weak'.  Without a TARGET,
!      given as an argument to `weakref' or to `alias', `weakref' is
!      equivalent to `weak'.
  
            static int x() __attribute__ ((weakref ("y")));
            /* is equivalent to... */
--- 26718,26740 ----
  
       results in warning on line 5.
  
! 'weak'
!      The 'weak' attribute causes the declaration 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 non-function declarations.  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.  Optionally, the TARGET may be given as
!      an argument to 'weakref' itself.  In either case, 'weakref'
!      implicitly marks the declaration as 'weak'.  Without a TARGET,
!      given as an argument to 'weakref' or to 'alias', 'weakref' is
!      equivalent to 'weak'.
  
            static int x() __attribute__ ((weakref ("y")));
            /* is equivalent to... */
*************** attributes.
*** 26926,26934 ****
            static int x() __attribute__ ((alias ("y")));
  
       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.
  
--- 26744,26752 ----
            static int x() __attribute__ ((alias ("y")));
  
       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.
  
*************** attributes.
*** 26937,26970 ****
       symbol, declaring it as weak, compiling the two separate
       translation units and performing a reloadable link on them.
  
!      At present, a declaration to which `weakref' is attached can only
!      be `static'.
! 
  
   You can specify multiple attributes in a declaration by separating them
  by commas within the double parentheses or by immediately following an
  attribute declaration with another attribute declaration.
  
!  Some people object to the `__attribute__' feature, suggesting that ISO
! C's `#pragma' should be used instead.  At the time `__attribute__' was
  designed, there were two reasons for not doing this.
  
!   1. It is impossible to generate `#pragma' commands from a macro.
  
!   2. There is no telling what the same `#pragma' might mean in another
       compiler.
  
   These two reasons applied to almost any application that might have
! been proposed for `#pragma'.  It was basically a mistake to use
! `#pragma' for _anything_.
  
!  The ISO C99 standard includes `_Pragma', which now allows pragmas to
! be generated from macros.  In addition, a `#pragma GCC' namespace is
! now in use for GCC-specific pragmas.  However, it has been found
! convenient to use `__attribute__' to achieve a natural attachment of
! attributes to their corresponding declarations, whereas `#pragma GCC'
! is of use for constructs that do not naturally form part of the
! grammar.  *Note Pragmas Accepted by GCC: Pragmas.
  
  
  File: gcc.info,  Node: Label Attributes,  Next: Attribute Syntax,  Prev: Function Attributes,  Up: C Extensions
--- 26755,26787 ----
       symbol, declaring it as weak, compiling the two separate
       translation units and performing a reloadable link on them.
  
!      At present, a declaration to which 'weakref' is attached can only
!      be 'static'.
  
   You can specify multiple attributes in a declaration by separating them
  by commas within the double parentheses or by immediately following an
  attribute declaration with another attribute declaration.
  
!  Some people object to the '__attribute__' feature, suggesting that ISO
! C's '#pragma' should be used instead.  At the time '__attribute__' was
  designed, there were two reasons for not doing this.
  
!   1. It is impossible to generate '#pragma' commands from a macro.
  
!   2. There is no telling what the same '#pragma' might mean in another
       compiler.
  
   These two reasons applied to almost any application that might have
! been proposed for '#pragma'.  It was basically a mistake to use
! '#pragma' for _anything_.
  
!  The ISO C99 standard includes '_Pragma', which now allows pragmas to be
! generated from macros.  In addition, a '#pragma GCC' namespace is now in
! use for GCC-specific pragmas.  However, it has been found convenient to
! use '__attribute__' to achieve a natural attachment of attributes to
! their corresponding declarations, whereas '#pragma GCC' is of use for
! constructs that do not naturally form part of the grammar.  *Note
! Pragmas Accepted by GCC: Pragmas.
  
  
  File: gcc.info,  Node: Label Attributes,  Next: Attribute Syntax,  Prev: Function Attributes,  Up: C Extensions
*************** for details of the exact syntax for usin
*** 26977,26985 ****
  are available for functions (*note Function Attributes::), variables
  (*note Variable Attributes::) and for types (*note Type Attributes::).
  
!  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);
--- 26794,26802 ----
  are available for functions (*note Function Attributes::), variables
  (*note Variable Attributes::) and for types (*note Type Attributes::).
  
!  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);
*************** are available for functions (*note Funct
*** 26994,27019 ****
          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: Attribute Syntax,  Next: Function Prototypes,  Prev: Label Attributes,  Up: C Extensions
--- 26811,26835 ----
          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: Attribute Syntax,  Next: Function Prototypes,  Prev: Label Attributes,  Up: C Extensions
*************** File: gcc.info,  Node: Attribute Syntax,
*** 27021,27027 ****
  6.33 Attribute Syntax
  =====================
  
! This section describes the syntax with which `__attribute__' may be
  used, and the constructs to which attribute specifiers bind, for the C
  language.  Some details may vary for C++ and Objective-C.  Because of
  infelicities in the grammar for attributes, some forms described here
--- 26837,26843 ----
  6.33 Attribute Syntax
  =====================
  
! This section describes the syntax with which '__attribute__' may be
  used, and the constructs to which attribute specifiers bind, for the C
  language.  Some details may vary for C++ and Objective-C.  Because of
  infelicities in the grammar for attributes, some forms described here
*************** may not be successfully parsed in all ca
*** 27030,27037 ****
   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.
  
--- 26846,26853 ----
   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.
  
*************** for details of the semantics of attribut
*** 27042,27069 ****
  and enumerated types.  *Note Label Attributes::, for details of the
  semantics of attributes applying to labels.
  
!  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.
  
!    * A word (which may be an identifier such as `unused', or a reserved
!      word such as `const').
  
     * A word, followed by, in parentheses, 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.
  
--- 26858,26885 ----
  and enumerated types.  *Note Label Attributes::, for details of the
  semantics of attributes applying to labels.
  
!  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.
  
!    * A word (which may be an identifier such as 'unused', or a reserved
!      word such as 'const').
  
     * A word, followed by, in parentheses, 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.
  
*************** Label Attributes
*** 27074,27093 ****
  ................
  
  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 is permissible for a declaration, which could begin
! with an attribute list, to be labelled in C++.  Declarations cannot be
! labelled in C90 or C99, so the ambiguity does not arise there.
  
  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
--- 26890,26909 ----
  ................
  
  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
! is permissible for a declaration, which could begin with an attribute
! list, to be labelled in C++.  Declarations cannot be labelled in C90 or
! C99, so the ambiguity does not arise there.
  
  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
*** 27112,27132 ****
  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
--- 26928,26947 ----
  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
*************** identifier before whose declarator they
*** 27142,27163 ****
           __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
--- 26957,26978 ----
           __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.
*** 27167,27193 ****
  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.
  
   For example,
--- 26982,27008 ----
  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.
  
   For example,
*************** TYPE-QUALIFIER-AND-ATTRIBUTE-SPECIFIER-L
*** 27195,27207 ****
       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
--- 27010,27022 ----
       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
*************** the attributes immediately before the id
*** 27215,27222 ****
  attribute applied to a function return type is treated as applying to
  the function type, and such an attribute applied to an array element
  type is treated as applying to the array type.  If an attribute that
! only applies to function types is applied to a pointer-to-function
! type, it is treated as applying to the pointer target type; if such an
  attribute is applied to a function return type that is not a
  pointer-to-function type, it is treated as applying to the function
  type.
--- 27030,27037 ----
  attribute applied to a function return type is treated as applying to
  the function type, and such an attribute applied to an array element
  type is treated as applying to the array type.  If an attribute that
! only applies to function types is applied to a pointer-to-function type,
! it is treated as applying to the pointer target type; if such an
  attribute is applied to a function return type that is not a
  pointer-to-function type, it is treated as applying to the function
  type.
*************** old-style non-prototype definition.  Con
*** 27248,27268 ****
         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 former type is the same as the latter type before
! promotion.  Thus in GNU C the above example is equivalent to the
! following:
  
       int isroot (uid_t);
  
--- 27063,27082 ----
         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
! former type is the same as the latter type before promotion.  Thus in
! GNU C the above example is equivalent to the following:
  
       int isroot (uid_t);
  
*************** File: gcc.info,  Node: C++ Comments,  Ne
*** 27281,27292 ****
  6.35 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: Dollar Signs,  Next: Character Escapes,  Prev: C++ Comments,  Up: C Extensions
--- 27095,27106 ----
  6.35 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: Dollar Signs,  Next: Character Escapes,  Prev: C++ Comments,  Up: C Extensions
*************** File: gcc.info,  Node: Character Escapes
*** 27305,27312 ****
  6.37 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: Variable Attributes,  Next: Type Attributes,  Prev: Character Escapes,  Up: C Extensions
--- 27119,27126 ----
  6.37 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: Variable Attributes,  Next: Type Attributes,  Prev: Character Escapes,  Up: C Extensions
*************** File: gcc.info,  Node: Variable Attribut
*** 27314,27355 ****
  6.38 Specifying Attributes of Variables
  =======================================
  
! The keyword `__attribute__' allows you to specify special attributes of
! variables or structure fields.  This keyword is followed by an
! attribute specification inside double parentheses.  Some attributes are
! currently defined generically for variables.  Other attributes are
! defined for variables on particular target systems.  Other attributes
! are available for functions (*note Function Attributes::), labels
! (*note Label Attributes::) and for types (*note Type Attributes::).
! Other front ends might define more attributes (*note Extensions to the
! C++ Language: C++ Extensions.).
  
!  You may also specify attributes with `__' preceding and following each
  keyword.  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 `__aligned__' instead of `aligned'.
  
   *Note Attribute Syntax::, for details of the exact syntax for using
  attributes.
  
! `aligned (ALIGNMENT)'
       This attribute specifies a minimum alignment for the variable or
       structure field, measured in bytes.  For example, the declaration:
  
            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
--- 27128,27169 ----
  6.38 Specifying Attributes of Variables
  =======================================
  
! The keyword '__attribute__' allows you to specify special attributes of
! variables or structure fields.  This keyword is followed by an attribute
! specification inside double parentheses.  Some attributes are currently
! defined generically for variables.  Other attributes are defined for
! variables on particular target systems.  Other attributes are available
! for functions (*note Function Attributes::), labels (*note Label
! Attributes::) and for types (*note Type Attributes::).  Other front ends
! might define more attributes (*note Extensions to the C++ Language: C++
! Extensions.).
  
!  You may also specify attributes with '__' preceding and following each
  keyword.  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 '__aligned__' instead of 'aligned'.
  
   *Note Attribute Syntax::, for details of the exact syntax for using
  attributes.
  
! 'aligned (ALIGNMENT)'
       This attribute specifies a minimum alignment for the variable or
       structure field, measured in bytes.  For example, the declaration:
  
            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
*************** attributes.
*** 27362,27368 ****
       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:
--- 27176,27182 ----
       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:
*************** attributes.
*** 27370,27429 ****
            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 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.
  
!      The `aligned' attribute can also be used for functions (*note
       Function Attributes::.)
  
! `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.
  
!      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.
  
! `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
--- 27184,27242 ----
            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 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.
  
!      The 'aligned' attribute can also be used for functions (*note
       Function Attributes::.)
  
! '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.
  
!      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.
  
! '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
*************** attributes.
*** 27439,27466 ****
       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 Function Attributes::, *note Type Attributes::.)
  
! `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.
  
!      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.
  
! `packed'
!      The `packed' attribute specifies that a variable or structure field
       should have the smallest possible alignment--one byte for a
       variable, and one bit for a field, unless you specify a larger
!      value with the `aligned' attribute.
  
!      Here is a structure in which the field `x' is packed, so that it
!      immediately follows `a':
  
            struct foo
            {
--- 27252,27279 ----
       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 Function Attributes::, *note Type Attributes::.)
  
! '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.
  
!      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.
  
! 'packed'
!      The 'packed' attribute specifies that a variable or structure field
       should have the smallest possible alignment--one byte for a
       variable, and one bit for a field, unless you specify a larger
!      value with the 'aligned' attribute.
  
!      Here is a structure in which the field 'x' is packed, so that it
!      immediately follows 'a':
  
            struct foo
            {
*************** attributes.
*** 27468,27485 ****
              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.
  
! `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:
  
--- 27281,27298 ----
              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.
  
! '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:
  
*************** attributes.
*** 27501,27530 ****
              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.
  
! `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;
  
--- 27314,27343 ----
              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.
  
! '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;
  
*************** attributes.
*** 27536,27563 ****
              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.
  
! `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.
  
! `unused'
       This attribute, attached to a variable, means that the variable is
       meant to be possibly unused.  GCC does not produce a warning for
       this variable.
  
! `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.
--- 27349,27375 ----
              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.
  
! '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.
  
! 'unused'
       This attribute, attached to a variable, means that the variable is
       meant to be possibly unused.  GCC does not produce a warning for
       this variable.
  
! '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.
*************** attributes.
*** 27566,27597 ****
       attribute also means that the member is instantiated if the class
       itself is instantiated.
  
! `vector_size (BYTES)'
!      This attribute specifies the vector size for the variable,
!      measured in bytes.  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 (a vector of
!      4 units of 4 bytes), the corresponding mode of `foo' is V4SI.
  
       This attribute is only applicable to integral and float scalars,
       although arrays, pointers, and function return values are allowed
       in conjunction with this construct.
  
!      Aggregates with this attribute are invalid, even if they are of
!      the same size as a corresponding scalar.  For example, the
!      declaration:
  
            struct S { int a; };
            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'.
  
! `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
--- 27378,27408 ----
       attribute also means that the member is instantiated if the class
       itself is instantiated.
  
! 'vector_size (BYTES)'
!      This attribute specifies the vector size for the variable, measured
!      in bytes.  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 (a vector of
!      4 units of 4 bytes), the corresponding mode of 'foo' is V4SI.
  
       This attribute is only applicable to integral and float scalars,
       although arrays, pointers, and function return values are allowed
       in conjunction with this construct.
  
!      Aggregates with this attribute are invalid, even if they are of the
!      same size as a corresponding scalar.  For example, the declaration:
  
            struct S { int a; };
            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'.
  
! '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
*************** attributes.
*** 27606,27644 ****
       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.
  
! `weak'
!      The `weak' attribute is described in *note Function Attributes::.
  
! `dllimport'
!      The `dllimport' attribute is described in *note Function
       Attributes::.
  
! `dllexport'
!      The `dllexport' attribute is described in *note Function
       Attributes::.
  
- 
  6.38.1 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. Notice that just like the `section'
!      attribute, `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 (http://nongnu.org/avr-libc/user-manual/) */
            #include <avr/pgmspace.h>
  
--- 27417,27454 ----
       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.
  
! 'weak'
!      The 'weak' attribute is described in *note Function Attributes::.
  
! 'dllimport'
!      The 'dllimport' attribute is described in *note Function
       Attributes::.
  
! 'dllexport'
!      The 'dllexport' attribute is described in *note Function
       Attributes::.
  
  6.38.1 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.  Notice that just like the 'section'
!      attribute, '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 (http://nongnu.org/avr-libc/user-manual/) */
            #include <avr/pgmspace.h>
  
*************** attributes.
*** 27657,27668 ****
       See also the *note AVR Named Address Spaces:: section for an
       alternate way to locate and access data in flash memory.
  
! `io'
! `io (ADDR)'
!      Variables with the `io' attribute are used to address
!      memory-mapped peripherals in the io address range.  If an address
!      is specified, the variable is assigned that address, and the value
!      is interpreted as an address in the data address space.  Example:
  
            volatile int porta __attribute__((io (0x22)));
  
--- 27467,27478 ----
       See also the *note AVR Named Address Spaces:: section for an
       alternate way to locate and access data in flash memory.
  
! 'io'
! 'io (ADDR)'
!      Variables with the 'io' attribute are used to address memory-mapped
!      peripherals in the io address range.  If an address is specified,
!      the variable is assigned that address, and the value is interpreted
!      as an address in the data address space.  Example:
  
            volatile int porta __attribute__((io (0x22)));
  
*************** attributes.
*** 27675,27857 ****
  
            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'
! `address (ADDR)'
!      Variables with the `address' attribute are used to address
       memory-mapped peripherals that may lie outside the io address
       range.
  
            volatile int porta __attribute__((address (0x600)));
  
- 
  6.38.2 Blackfin Variable Attributes
  -----------------------------------
  
  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'.
  
  6.38.3 H8/300 Variable Attributes
  ---------------------------------
  
  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 operations on data in the eight-bit data area.  Note the
!      eight-bit data area is limited to 256 bytes of data.
  
       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
       data in the tiny data section.  Note the tiny data area is limited
       to slightly under 32KB of data.
  
- 
  6.38.4 IA-64 Variable Attributes
  --------------------------------
  
  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.
  
- 
  6.38.5 M32R/D Variable Attributes
  ---------------------------------
  
  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).
  
  6.38.6 MeP Variable Attributes
  ------------------------------
  
! The MeP target has a number of addressing modes and busses.  The `near'
  space spans the standard memory space's first 16 megabytes (24 bits).
! The `far' space spans the entire 32-bit memory space.  The `based'
! space is a 128-byte region in the memory space that is addressed
! relative to the `$tp' register.  The `tiny' space is a 65536-byte
! region relative to the `$gp' register.  In addition to these memory
! regions, the MeP target has a separate 16-bit control bus which is
! specified with `cb' attributes.
  
! `based'
!      Any variable with the `based' attribute is assigned to the
!      `.based' section, and is accessed with relative to the `$tp'
!      register.
  
! `tiny'
!      Likewise, the `tiny' attribute assigned variables to the `.tiny'
!      section, relative to the `$gp' register.
  
! `near'
!      Variables with the `near' attribute are assumed to have addresses
       that fit in a 24-bit addressing mode.  This is the default for
!      large variables (`-mtiny=4' is the default) but this attribute can
!      override `-mtiny=' for small variables, or override `-ml'.
  
! `far'
!      Variables with the `far' attribute are addressed using a full
       32-bit address.  Since this covers the entire memory space, this
       allows modules to make no assumptions about where variables might
       be stored.
  
! `io'
! `io (ADDR)'
!      Variables with the `io' attribute are used to address
!      memory-mapped peripherals.  If an address is specified, the
!      variable is assigned that address, else it is not assigned an
!      address (it is assumed some other module assigns an address).
!      Example:
  
            int timer_count __attribute__((io(0x123)));
  
! `cb'
! `cb (ADDR)'
!      Variables with the `cb' attribute are used to access the control
!      bus, using special instructions.  `addr' indicates the control bus
       address.  Example:
  
            int cpu_clock __attribute__((cb(0x123)));
  
- 
  6.38.7 PowerPC Variable Attributes
  ----------------------------------
  
  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::.
  
  6.38.8 SPU Variable Attributes
  ------------------------------
  
! The SPU supports the `spu_vector' attribute for variables.  For
  documentation of this attribute please see the documentation in *note
  SPU Type Attributes::.
  
  6.38.9 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.
  
!      Currently `-m[no-]ms-bitfields' is provided for the Microsoft
       Windows x86 compilers to match the native Microsoft compiler.
  
       The Microsoft structure layout algorithm is fairly simple with the
--- 27485,27663 ----
  
            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'
! 'address (ADDR)'
!      Variables with the 'address' attribute are used to address
       memory-mapped peripherals that may lie outside the io address
       range.
  
            volatile int porta __attribute__((address (0x600)));
  
  6.38.2 Blackfin Variable Attributes
  -----------------------------------
  
  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'.
  
  6.38.3 H8/300 Variable Attributes
  ---------------------------------
  
  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
!      operations on data in the eight-bit data area.  Note the eight-bit
!      data area is limited to 256 bytes of data.
  
       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
       data in the tiny data section.  Note the tiny data area is limited
       to slightly under 32KB of data.
  
  6.38.4 IA-64 Variable Attributes
  --------------------------------
  
  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.
  
  6.38.5 M32R/D Variable Attributes
  ---------------------------------
  
  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).
  
  6.38.6 MeP Variable Attributes
  ------------------------------
  
! The MeP target has a number of addressing modes and busses.  The 'near'
  space spans the standard memory space's first 16 megabytes (24 bits).
! The 'far' space spans the entire 32-bit memory space.  The 'based' space
! is a 128-byte region in the memory space that is addressed relative to
! the '$tp' register.  The 'tiny' space is a 65536-byte region relative to
! the '$gp' register.  In addition to these memory regions, the MeP target
! has a separate 16-bit control bus which is specified with 'cb'
! attributes.
  
! 'based'
!      Any variable with the 'based' attribute is assigned to the '.based'
!      section, and is accessed with relative to the '$tp' register.
  
! 'tiny'
!      Likewise, the 'tiny' attribute assigned variables to the '.tiny'
!      section, relative to the '$gp' register.
  
! 'near'
!      Variables with the 'near' attribute are assumed to have addresses
       that fit in a 24-bit addressing mode.  This is the default for
!      large variables ('-mtiny=4' is the default) but this attribute can
!      override '-mtiny=' for small variables, or override '-ml'.
  
! 'far'
!      Variables with the 'far' attribute are addressed using a full
       32-bit address.  Since this covers the entire memory space, this
       allows modules to make no assumptions about where variables might
       be stored.
  
! 'io'
! 'io (ADDR)'
!      Variables with the 'io' attribute are used to address memory-mapped
!      peripherals.  If an address is specified, the variable is assigned
!      that address, else it is not assigned an address (it is assumed
!      some other module assigns an address).  Example:
  
            int timer_count __attribute__((io(0x123)));
  
! 'cb'
! 'cb (ADDR)'
!      Variables with the 'cb' attribute are used to access the control
!      bus, using special instructions.  'addr' indicates the control bus
       address.  Example:
  
            int cpu_clock __attribute__((cb(0x123)));
  
  6.38.7 PowerPC Variable Attributes
  ----------------------------------
  
  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::.
  
  6.38.8 SPU Variable Attributes
  ------------------------------
  
! The SPU supports the 'spu_vector' attribute for variables.  For
  documentation of this attribute please see the documentation in *note
  SPU Type Attributes::.
  
  6.38.9 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.
  
!      Currently '-m[no-]ms-bitfields' is provided for the Microsoft
       Windows x86 compilers to match the native Microsoft compiler.
  
       The Microsoft structure layout algorithm is fairly simple with the
*************** Two attributes are currently defined for
*** 27863,27884 ****
            which they are declared: the first member has the lowest
            memory address and the last member the highest.
  
!        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 offset so that:
  
                 offset % alignment_requirement == 0
  
!        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.
  
       MSVC interprets zero-length bit-fields in the following ways:
  
--- 27669,27690 ----
            which they are declared: the first member has the lowest
            memory address and the last member the highest.
  
!        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
!           offset so that:
  
                 offset % alignment_requirement == 0
  
!        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.
  
       MSVC interprets zero-length bit-fields in the following ways:
  
*************** Two attributes are currently defined for
*** 27894,27906 ****
                    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:
--- 27700,27712 ----
                    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:
*************** Two attributes are currently defined for
*** 27919,27927 ****
                    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
--- 27725,27733 ----
                    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
*************** Two attributes are currently defined for
*** 27929,27935 ****
  
              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.
  
--- 27735,27741 ----
  
              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.
  
*************** Two attributes are currently defined for
*** 27943,27949 ****
                         long : 0;
                       } t4;
  
!                Here, `t4' takes up 4 bytes.
  
         3. Zero-length bit-fields following non-bit-field members are
            ignored:
--- 27749,27755 ----
                         long : 0;
                       } t4;
  
!                Here, 't4' takes up 4 bytes.
  
         3. Zero-length bit-fields following non-bit-field members are
            ignored:
*************** Two attributes are currently defined for
*** 27955,27975 ****
                    char bar;
                  } t5;
  
!           Here, `t5' takes up 2 bytes.
  
  6.38.10 Xstormy16 Variable Attributes
  -------------------------------------
  
  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: Alignment,  Prev: Variable Attributes,  Up: C Extensions
--- 27761,27780 ----
                    char bar;
                  } t5;
  
!           Here, 't5' takes up 2 bytes.
  
  6.38.10 Xstormy16 Variable Attributes
  -------------------------------------
  
  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: Alignment,  Prev: Variable Attributes,  Up: C Extensions
*************** File: gcc.info,  Node: Type Attributes,
*** 27977,27998 ****
  6.39 Specifying Attributes of Types
  ===================================
  
! The keyword `__attribute__' allows you to specify special attributes of
! `struct' and `union' types when you define such types.  This keyword is
! followed by an attribute specification inside double parentheses.
! Eight attributes are currently defined for types: `aligned', `packed',
! `transparent_union', `unused', `deprecated', `visibility', `may_alias'
! and `bnd_variable_size'.  Other attributes are defined for functions
! (*note Function Attributes::), labels (*note Label Attributes::) and
! for variables (*note Variable Attributes::).
  
!  You may also specify any one of these attributes with `__' preceding
  and following its keyword.  This allows you to use these attributes in
  header files without being concerned about a possible macro of the same
! name.  For example, you may use `__aligned__' instead of `aligned'.
  
   You may specify type attributes in an enum, struct or union type
! declaration or definition, or for other types in a `typedef'
  declaration.
  
   For an enum, struct or union type, you may specify attributes either
--- 27782,27803 ----
  6.39 Specifying Attributes of Types
  ===================================
  
! The keyword '__attribute__' allows you to specify special attributes of
! 'struct' and 'union' types when you define such types.  This keyword is
! followed by an attribute specification inside double parentheses.  Eight
! attributes are currently defined for types: 'aligned', 'packed',
! 'transparent_union', 'unused', 'deprecated', 'visibility', 'may_alias'
! and 'bnd_variable_size'.  Other attributes are defined for functions
! (*note Function Attributes::), labels (*note Label Attributes::) and for
! variables (*note Variable Attributes::).
  
!  You may also specify any one of these attributes with '__' preceding
  and following its keyword.  This allows you to use these attributes in
  header files without being concerned about a possible macro of the same
! name.  For example, you may use '__aligned__' instead of 'aligned'.
  
   You may specify type attributes in an enum, struct or union type
! declaration or definition, or for other types in a 'typedef'
  declaration.
  
   For an enum, struct or union type, you may specify attributes either
*************** preferred.
*** 28003,28009 ****
   *Note Attribute Syntax::, for details of the exact syntax for using
  attributes.
  
! `aligned (ALIGNMENT)'
       This attribute specifies a minimum alignment (in bytes) for
       variables of the specified type.  For example, the declarations:
  
--- 27808,27814 ----
   *Note Attribute Syntax::, for details of the exact syntax for using
  attributes.
  
! 'aligned (ALIGNMENT)'
       This attribute specifies a minimum alignment (in bytes) for
       variables of the specified type.  For example, the declarations:
  
*************** attributes.
*** 28011,28099 ****
            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 S { short f[3]; } __attribute__ ((aligned));
  
!      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.
       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 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
       time-efficient alignment for a given type and then declare only
!      individual stand-alone objects of that type, the compiler's
!      ability to select a time-efficient alignment is primarily useful
!      only when you plan to create arrays of variables having the
!      relevant (efficiently aligned) type.  If you declare or use arrays
!      of variables of an efficiently-aligned type, then it is likely
!      that your program also does pointer arithmetic (or subscripting,
!      which amounts to the same thing) on pointers to the relevant type,
!      and the code that the compiler generates for these pointer
!      arithmetic operations is often more efficient for
!      efficiently-aligned types than for other types.
  
!      The `aligned' attribute can only increase the alignment; but you
!      can decrease it by specifying `packed' as well.  See below.
  
!      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.
  
! `packed'
!      This attribute, attached to `struct' or `union' type definition,
       specifies that each member (other than zero-width bit-fields) of
       the structure or union is placed to minimize the memory required.
!      When attached to an `enum' definition, it indicates that the
       smallest integral type should be used.
  
!      Specifying this attribute for `struct' and `union' types is
!      equivalent to specifying the `packed' attribute on each of the
!      structure or union members.  Specifying the `-fshort-enums' flag
!      on the 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
--- 27816,27904 ----
            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 S { short f[3]; } __attribute__ ((aligned));
  
!      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.
       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 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
       time-efficient alignment for a given type and then declare only
!      individual stand-alone objects of that type, the compiler's ability
!      to select a time-efficient alignment is primarily useful only when
!      you plan to create arrays of variables having the relevant
!      (efficiently aligned) type.  If you declare or use arrays of
!      variables of an efficiently-aligned type, then it is likely that
!      your program also does pointer arithmetic (or subscripting, which
!      amounts to the same thing) on pointers to the relevant type, and
!      the code that the compiler generates for these pointer arithmetic
!      operations is often more efficient for efficiently-aligned types
!      than for other types.
  
!      The 'aligned' attribute can only increase the alignment; but you
!      can decrease it by specifying 'packed' as well.  See below.
  
!      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.
  
! 'packed'
!      This attribute, attached to 'struct' or 'union' type definition,
       specifies that each member (other than zero-width bit-fields) of
       the structure or union is placed to minimize the memory required.
!      When attached to an 'enum' definition, it indicates that the
       smallest integral type should be used.
  
!      Specifying this attribute for 'struct' and 'union' types is
!      equivalent to specifying the 'packed' attribute on each of the
!      structure or union members.  Specifying the '-fshort-enums' flag on
!      the 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
*************** attributes.
*** 28109,28120 ****
                 struct my_unpacked_struct s;
              };
  
!      You may only specify this attribute on the definition of an `enum',
!      `struct' or `union', not on a `typedef' that does not also define
       the enumerated type, structure or union.
  
! `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.
  
--- 27914,27926 ----
                 struct my_unpacked_struct s;
              };
  
!      You may only specify this attribute on the definition of an 'enum',
!      'struct' or 'union', not on a 'typedef' that does not also define
       the enumerated type, structure or union.
  
! '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.
  
*************** attributes.
*** 28124,28130 ****
       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
--- 27930,27936 ----
       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
*************** attributes.
*** 28135,28147 ****
  
       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__))
              {
--- 27941,27953 ----
  
       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__))
              {
*************** attributes.
*** 28151,28172 ****
  
            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);
            }
  
! `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
--- 27957,27978 ----
  
            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);
            }
  
! '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
*************** attributes.
*** 28174,28190 ****
       defined and then not referenced, but contain constructors and
       destructors that have nontrivial bookkeeping functions.
  
! `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 declaration of the deprecated type, to enable users to easily
!      find further information about why the type is deprecated, or what
!      they should do instead.  Note that the warnings only occur for
!      uses and then only if the type is being applied to an identifier
!      that itself is not being declared as deprecated.
  
            typedef int T1 __attribute__ ((deprecated));
            T1 x;
--- 27980,27996 ----
       defined and then not referenced, but contain constructors and
       destructors that have nontrivial bookkeeping functions.
  
! '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
!      declaration of the deprecated type, to enable users to easily find
!      further information about why the type is deprecated, or what they
!      should do instead.  Note that the warnings only occur for uses and
!      then only if the type is being applied to an identifier that itself
!      is not being declared as deprecated.
  
            typedef int T1 __attribute__ ((deprecated));
            T1 x;
*************** attributes.
*** 28199,28215 ****
       deprecated.  Similarly for line 6.  The optional MSG argument,
       which must be a string, is printed in the warning if present.
  
!      The `deprecated' attribute can also be used for functions and
       variables (*note Function Attributes::, *note Variable
       Attributes::.)
  
! `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.
--- 28005,28021 ----
       deprecated.  Similarly for line 6.  The optional MSG argument,
       which must be a string, is printed in the warning if present.
  
!      The 'deprecated' attribute can also be used for functions and
       variables (*note Function Attributes::, *note Variable
       Attributes::.)
  
! '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.
*************** attributes.
*** 28235,28271 ****
              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.
  
! `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 keyword and the name of the type; it cannot appear after
!      the body of the type.
  
       Note that the type visibility is applied to vague linkage entities
       associated with the class (vtable, typeinfo node, etc.).  In
       particular, if a class is thrown as an exception in one shared
       object and caught in another, the class must have default
!      visibility.  Otherwise the two shared objects are unable to use
!      the same typeinfo node and exception handling will break.
  
! `designated_init'
       This attribute may only be applied to structure types.  It
       indicates that any initialization of an object of this type must
       use designated initializers rather than positional initializers.
!      The intent of this attribute is to allow the programmer to
!      indicate that a structure's layout may change, and that therefore
!      relying on positional initialization will result in future
!      breakage.
  
       GCC emits warnings based on this attribute by default; use
!      `-Wno-designated-init' to suppress them.
  
! `bnd_variable_size'
       When applied to a structure field, this attribute tells Pointer
       Bounds Checker that the size of this field should not be computed
       using static type information.  It may be used to mark
--- 28041,28076 ----
              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.
  
! '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
!      keyword and the name of the type; it cannot appear after the body
!      of the type.
  
       Note that the type visibility is applied to vague linkage entities
       associated with the class (vtable, typeinfo node, etc.).  In
       particular, if a class is thrown as an exception in one shared
       object and caught in another, the class must have default
!      visibility.  Otherwise the two shared objects are unable to use the
!      same typeinfo node and exception handling will break.
  
! 'designated_init'
       This attribute may only be applied to structure types.  It
       indicates that any initialization of an object of this type must
       use designated initializers rather than positional initializers.
!      The intent of this attribute is to allow the programmer to indicate
!      that a structure's layout may change, and that therefore relying on
!      positional initialization will result in future breakage.
  
       GCC emits warnings based on this attribute by default; use
!      '-Wno-designated-init' to suppress them.
  
! 'bnd_variable_size'
       When applied to a structure field, this attribute tells Pointer
       Bounds Checker that the size of this field should not be computed
       using static type information.  It may be used to mark
*************** attributes.
*** 28291,28308 ****
            S *p = (S *)malloc (sizeof(S) + 100);
            p->data[10] = 0; //OK
  
- 
   To specify multiple attributes, separate them by commas within the
! double parentheses: for example, `__attribute__ ((aligned (16),
  packed))'.
  
  6.39.1 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:
  
       class __declspec(notshared) C {
       public:
--- 28096,28112 ----
            S *p = (S *)malloc (sizeof(S) + 100);
            p->data[10] = 0; //OK
  
   To specify multiple attributes, separate them by commas within the
! double parentheses: for example, '__attribute__ ((aligned (16),
  packed))'.
  
  6.39.1 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:
  
       class __declspec(notshared) C {
       public:
*************** For example:
*** 28313,28376 ****
       __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'.)
  
  6.39.2 MeP Type Attributes
  --------------------------
  
  Many of the MeP variable attributes may be applied to types as well.
! Specifically, the `based', `tiny', `near', and `far' attributes may be
! applied to either.  The `io' and `cb' attributes may not be applied to
  types.
  
  6.39.3 PowerPC Type Attributes
  ------------------------------
  
  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.
  
  6.39.4 SPU Type Attributes
  --------------------------
  
! The SPU supports the `spu_vector' attribute for types.  This attribute
  allows one to declare vector data types supported by the
  Sony/Toshiba/IBM SPU Language Extensions Specification.  It is intended
! to support the `__vector' keyword.
  
  6.39.5 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.
  
!      Currently `-m[no-]ms-bitfields' is provided for the Microsoft
       Windows x86 compilers to match the native Microsoft compiler.
  
  
--- 28117,28181 ----
       __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'.)
  
  6.39.2 MeP Type Attributes
  --------------------------
  
  Many of the MeP variable attributes may be applied to types as well.
! Specifically, the 'based', 'tiny', 'near', and 'far' attributes may be
! applied to either.  The 'io' and 'cb' attributes may not be applied to
  types.
  
  6.39.3 PowerPC Type Attributes
  ------------------------------
  
  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.
  
  6.39.4 SPU Type Attributes
  --------------------------
  
! The SPU supports the 'spu_vector' attribute for types.  This attribute
  allows one to declare vector data types supported by the
  Sony/Toshiba/IBM SPU Language Extensions Specification.  It is intended
! to support the '__vector' keyword.
  
  6.39.5 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.
  
!      Currently '-m[no-]ms-bitfields' is provided for the Microsoft
       Windows x86 compilers to match the native Microsoft compiler.
  
  
*************** File: gcc.info,  Node: Alignment,  Next:
*** 28379,28407 ****
  6.40 Inquiring on Alignment of Types or Variables
  =================================================
  
! The keyword `__alignof__' allows you to inquire about how an object is
  aligned, or the minimum alignment usually required by a type.  Its
! syntax is just like `sizeof'.
  
!  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 reference
! 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 with GCC's `__attribute__' extension (*note
  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.
  
--- 28184,28212 ----
  6.40 Inquiring on Alignment of Types or Variables
  =================================================
  
! The keyword '__alignof__' allows you to inquire about how an object is
  aligned, or the minimum alignment usually required by a type.  Its
! syntax is just like 'sizeof'.
  
!  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 reference 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 with GCC's '__attribute__' extension (*note
  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.
  
*************** File: gcc.info,  Node: Inline,  Next: Vo
*** 28411,28435 ****
  6.41 An Inline Function is As Fast As a Macro
  =============================================
  
! By declaring a function inline, you can direct GCC to make calls to
! that function faster.  One way GCC can achieve this is to integrate
! that function's code into the code for its callers.  This makes
! execution faster by eliminating the function-call overhead; in
! addition, if any of the actual argument values are constant, their
! known values may permit simplifications at compile time so that not all
! of the inline function's code needs to be included.  The effect on code
! size is less predictable; 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=c11', `-std=gnu99' or `-std=gnu11' (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
--- 28216,28240 ----
  6.41 An Inline Function is As Fast As a Macro
  =============================================
  
! By declaring a function inline, you can direct GCC to make calls to that
! function faster.  One way GCC can achieve this is to integrate that
! function's code into the code for its callers.  This makes execution
! faster by eliminating the function-call overhead; in addition, if any of
! the actual argument values are constant, their known values may permit
! simplifications at compile time so that not all of the inline function's
! code needs to be included.  The effect on code size is less predictable;
! 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=c11', '-std=gnu99' or '-std=gnu11' (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:
*** 28439,28450 ****
       }
  
   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
--- 28244,28255 ----
       }
  
   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
*** 28454,28514 ****
       }
  
   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'.
! Some calls cannot be integrated for various reasons (in particular,
! calls that precede the function's definition cannot be integrated, and
! neither can recursive calls within the definition).  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 can't 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 variable-length data types (*note
! Variable Length::), use of computed goto (*note Labels as Values::),
! use of nonlocal goto, and nested functions (*note Nested Functions::).
! 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.
  
  
--- 28259,28319 ----
       }
  
   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'.  Some
! calls cannot be integrated for various reasons (in particular, calls
! that precede the function's definition cannot be integrated, and neither
! can recursive calls within the definition).  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 can't 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 variable-length data types (*note
! Variable Length::), use of computed goto (*note Labels as Values::), use
! of nonlocal goto, and nested functions (*note Nested Functions::).
! 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.
  
  
*************** allow you to violate the restriction on
*** 28531,28548 ****
  between two sequence points.
  
   Accesses to non-volatile objects are not ordered with respect to
! volatile accesses.  You cannot use a volatile object as a memory
! barrier to order a sequence of writes to non-volatile memory.  For
! instance:
  
       int *ptr = SOMETHING;
       volatile int vobj;
       *ptr = SOMETHING;
       vobj = 1;
  
! Unless *PTR and VOBJ can be aliased, it is not guaranteed that the
! write to *PTR occurs by the time the update of VOBJ happens.  If you
! need this guarantee, you must use a stronger memory barrier such as:
  
       int *ptr = SOMETHING;
       volatile int vobj;
--- 28336,28352 ----
  between two sequence points.
  
   Accesses to non-volatile objects are not ordered with respect to
! volatile accesses.  You cannot use a volatile object as a memory barrier
! to order a sequence of writes to non-volatile memory.  For instance:
  
       int *ptr = SOMETHING;
       volatile int vobj;
       *ptr = SOMETHING;
       vobj = 1;
  
! Unless *PTR and VOBJ can be aliased, it is not guaranteed that the write
! to *PTR occurs by the time the update of VOBJ happens.  If you need this
! guarantee, you must use a stronger memory barrier such as:
  
       int *ptr = SOMETHING;
       volatile int vobj;
*************** volatile object being pointed to.
*** 28560,28568 ****
  
   Assignments are also expressions and have an rvalue.  However when
  assigning to a scalar volatile, the volatile object is not reread,
! regardless of whether the assignment expression's rvalue is used or
! not.  If the assignment's rvalue is used, the value is that assigned to
! the volatile object.  For instance, there is no read of VOBJ in all the
  following cases:
  
       int obj;
--- 28364,28372 ----
  
   Assignments are also expressions and have an rvalue.  However when
  assigning to a scalar volatile, the volatile object is not reread,
! regardless of whether the assignment expression's rvalue is used or not.
! If the assignment's rvalue is used, the value is that assigned to the
! volatile object.  For instance, there is no read of VOBJ in all the
  following cases:
  
       int obj;
*************** File: gcc.info,  Node: Using Assembly La
*** 28589,28613 ****
  6.43 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, but to include assembly language at top
! level you must use basic `asm'.
  
!  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 Labels::         Specifying the assembler name to use for a C symbol.
  * Explicit Reg Vars::  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
--- 28393,28417 ----
  6.43 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, but to include assembly language at top
! level you must use basic 'asm'.
  
!  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 Labels::         Specifying the assembler name to use for a C symbol.
  * Explicit Reg Vars::  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:
*** 28615,28708 ****
  6.43.1 Basic Asm -- Assembler Instructions Without Operands
  -----------------------------------------------------------
  
! A basic `asm' statement has the following syntax:
  
       asm [ volatile ] ( ASSEMBLERINSTRUCTIONS )
  
!  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 optional `volatile' qualifier has no effect.  All basic `asm'
       blocks are implicitly volatile.
  
  Parameters
  ..........
  
  ASSEMBLERINSTRUCTIONS
!      This is a literal string that specifies the assembler code. The
       string can contain any instructions recognized by the assembler,
       including directives.  GCC does not parse the assembler
       instructions themselves and does not know what they mean or even
       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' typically produces smaller, safer, and more
  efficient code, and in most cases it is a better solution than basic
! `asm'.  However, there are two situations where only basic `asm' can be
  used:
  
!    * Extended `asm' statements have to be inside a C function, so to
!      write inline assembly language at file scope ("top-level"),
!      outside of C functions, you must use basic `asm'.  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.
  
!    * Functions declared with the `naked' attribute also require basic
!      `asm' (*note Function Attributes::).
  
!  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.
  
   Since GCC does not parse the ASSEMBLERINSTRUCTIONS, it has no
! visibility of any symbols it references. This may result in GCC
  discarding those symbols as unreferenced.
  
!  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.
  
!  Here is an example of basic `asm' for i386:
  
       /* Note that this code will not compile with -masm=intel */
       #define DebugBreak() asm("int $3")
--- 28419,28512 ----
  6.43.1 Basic Asm -- Assembler Instructions Without Operands
  -----------------------------------------------------------
  
! A basic 'asm' statement has the following syntax:
  
       asm [ volatile ] ( ASSEMBLERINSTRUCTIONS )
  
!  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 optional 'volatile' qualifier has no effect.  All basic 'asm'
       blocks are implicitly volatile.
  
  Parameters
  ..........
  
  ASSEMBLERINSTRUCTIONS
!      This is a literal string that specifies the assembler code.  The
       string can contain any instructions recognized by the assembler,
       including directives.  GCC does not parse the assembler
       instructions themselves and does not know what they mean or even
       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' typically produces smaller, safer, and more
  efficient code, and in most cases it is a better solution than basic
! 'asm'.  However, there are two situations where only basic 'asm' can be
  used:
  
!    * Extended 'asm' statements have to be inside a C function, so to
!      write inline assembly language at file scope ("top-level"), outside
!      of C functions, you must use basic 'asm'.  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.
  
!    * Functions declared with the 'naked' attribute also require basic
!      'asm' (*note Function Attributes::).
  
!  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.
  
   Since GCC does not parse the ASSEMBLERINSTRUCTIONS, it has no
! visibility of any symbols it references.  This may result in GCC
  discarding those symbols as unreferenced.
  
!  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.
  
!  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
*** 28713,28721 ****
  6.43.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 [volatile] ( ASSEMBLERTEMPLATE
--- 28517,28525 ----
  6.43.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 [volatile] ( ASSEMBLERTEMPLATE
*************** assembler template:
*** 28729,28750 ****
                             : CLOBBERS
                             : GOTOLABELS)
  
!  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::.
  
! `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::.
  
--- 28533,28554 ----
                             : CLOBBERS
                             : GOTOLABELS)
  
!  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::.
  
! '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::.
  
*************** Parameters
*** 28753,28769 ****
  
  ASSEMBLERTEMPLATE
       This is a literal string that is the template for the assembler
!      code. It is a combination of fixed text and tokens that refer to
!      the input, output, and goto parameters. *Note AssemblerTemplate::.
  
  OUTPUTOPERANDS
       A comma-separated list of the C variables modified by the
!      instructions in the ASSEMBLERTEMPLATE.  An empty list is
!      permitted.  *Note OutputOperands::.
  
  INPUTOPERANDS
!      A comma-separated list of C expressions read by the instructions
!      in the ASSEMBLERTEMPLATE.  An empty list is permitted.  *Note
       InputOperands::.
  
  CLOBBERS
--- 28557,28573 ----
  
  ASSEMBLERTEMPLATE
       This is a literal string that is the template for the assembler
!      code.  It is a combination of fixed text and tokens that refer to
!      the input, output, and goto parameters.  *Note AssemblerTemplate::.
  
  OUTPUTOPERANDS
       A comma-separated list of the C variables modified by the
!      instructions in the ASSEMBLERTEMPLATE.  An empty list is permitted.
!      *Note OutputOperands::.
  
  INPUTOPERANDS
!      A comma-separated list of C expressions read by the instructions in
!      the ASSEMBLERTEMPLATE.  An empty list is permitted.  *Note
       InputOperands::.
  
  CLOBBERS
*************** CLOBBERS
*** 28772,28782 ****
       is permitted.  *Note Clobbers::.
  
  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.
--- 28576,28586 ----
       is permitted.  *Note Clobbers::.
  
  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
*** 28786,28805 ****
  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.
  
!  Note that extended `asm' statements must be inside a function. Only
! basic `asm' may be outside functions (*note Basic Asm::).  Functions
! declared with the `naked' attribute also 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;
--- 28590,28609 ----
  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.
  
!  Note that extended 'asm' statements must be inside a function.  Only
! basic 'asm' may be outside functions (*note Basic Asm::).  Functions
! declared with the 'naked' attribute also 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
*** 28811,28837 ****
  
       printf("%d\n", dst);
  
!  This code copies `src' to `dst' and add 1 to `dst'.
  
  6.43.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, including `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)
       {
--- 28615,28640 ----
  
       printf("%d\n", dst);
  
!  This code copies 'src' to 'dst' and add 1 to 'dst'.
  
  6.43.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, including '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)
       {
*************** possible.
*** 28847,28855 ****
       }
  
   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 `volatile' disables this type of
  optimization.
  
       void do_print(uint32_t dwSomeValue)
--- 28650,28658 ----
       }
  
   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 'volatile' disables this type of
  optimization.
  
       void do_print(uint32_t dwSomeValue)
*************** optimization.
*** 28869,28877 ****
       }
  
   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;
--- 28672,28680 ----
       }
  
   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
*** 28898,28926 ****
       printf("msr: %llx\n", msr);
  
   GCC's optimizers do not treat this code like the non-volatile code in
! 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', 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'. 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.43.2.2 Assembler Template
--- 28701,28729 ----
       printf("msr: %llx\n", msr);
  
   GCC's optimizers do not treat this code like the non-volatile code in
! 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', 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'.  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.43.2.2 Assembler Template
*************** resolve this problem.
*** 28929,28963 ****
  An assembler template is a literal string containing assembler
  instructions.  The compiler replaces tokens in the template that refer
  to inputs, outputs, and goto labels, and then outputs the resulting
! string to the assembler. The string can contain any instructions
! recognized by the assembler, including directives. GCC does not parse
  the assembler instructions themselves and does not know what they mean
! or even whether they are valid assembler input. However, it does count
  the statements (*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)
! may not work as expected. Similarly, calling functions directly from an
  assembler template requires a detailed understanding of the target
  assembler and ABI.
  
   Since GCC does not parse the assembler template, it has no visibility
! of any symbols it references. This may result in GCC discarding those
! symbols as unreferenced unless they are also listed as input, output,
! or goto operands.
  
  Special format strings
  ......................
--- 28732,28766 ----
  An assembler template is a literal string containing assembler
  instructions.  The compiler replaces tokens in the template that refer
  to inputs, outputs, and goto labels, and then outputs the resulting
! string to the assembler.  The string can contain any instructions
! recognized by the assembler, including directives.  GCC does not parse
  the assembler instructions themselves and does not know what they mean
! or even whether they are valid assembler input.  However, it does count
  the statements (*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)
! may not work as expected.  Similarly, calling functions directly from an
  assembler template requires a detailed understanding of the target
  assembler and ABI.
  
   Since GCC does not parse the assembler template, it has no visibility
! of any symbols it references.  This may result in GCC discarding those
! symbols as unreferenced unless they are also listed as input, output, or
! goto operands.
  
  Special format strings
  ......................
*************** Special format strings
*** 28965,29012 ****
  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 using one dialect will likely fail if compiled using another.
! *Note x86 Options::.
  
!  If your code needs to support multiple assembler dialects (for
! example, if you are writing public headers that need to support a
! variety of compilation options), use constructs of this form:
  
       { 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"
  
--- 28768,28815 ----
  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
! using one dialect will likely fail if compiled using another.  *Note x86
! Options::.
  
!  If your code needs to support multiple assembler dialects (for example,
! if you are writing public headers that need to support a variety of
! compilation options), use constructs of this form:
  
       { 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
*** 29029,29039 ****
  6.43.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;
  
--- 28832,28842 ----
  6.43.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
*** 29052,29088 ****
  ASMSYMBOLICNAME
       Specifies a symbolic name for the operand.  Reference the name in
       the assembler template by enclosing it in square brackets (i.e.
!      `%[Value]'). The scope of the name is the `asm' statement that
!      contains the definition. Any valid C variable name 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.
  
!      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
       specific register you want, local register variables may provide a
       solution (*note Local Reg Vars::).
  
--- 28855,28891 ----
  ASMSYMBOLICNAME
       Specifies a symbolic name for the operand.  Reference the name in
       the assembler template by enclosing it in square brackets (i.e.
!      '%[Value]').  The scope of the name is the 'asm' statement that
!      contains the definition.  Any valid C variable name 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.
  
!      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
       specific register you want, local register variables may provide a
       solution (*note Local Reg Vars::).
  
*************** CVARIABLENAME
*** 29091,29146 ****
       variable name.  The enclosing parentheses are a required part of
       the syntax.
  
- 
   When the compiler selects the registers to use to represent the output
  operands, it does not use any of the clobbered registers (*note
  Clobbers::).
  
!  Output operand expressions must be lvalues. The compiler cannot check
  whether the operands have data types that are reasonable for the
! 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
! producing outputs. This assumption may be false if the assembler code
  actually consists of more than one instruction.
  
   The same problem can occur if one output parameter (A) allows a
  register constraint and another output parameter (B) allows a memory
! constraint.  The code generated by GCC to access the memory address in
! B 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 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'). Typically these qualifiers are hardware
! dependent. 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;
--- 28894,28948 ----
       variable name.  The enclosing parentheses are a required part of
       the syntax.
  
   When the compiler selects the registers to use to represent the output
  operands, it does not use any of the clobbered registers (*note
  Clobbers::).
  
!  Output operand expressions must be lvalues.  The compiler cannot check
  whether the operands have data types that are reasonable for the
! 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
! producing outputs.  This assumption may be false if the assembler code
  actually consists of more than one instruction.
  
   The same problem can occur if one output parameter (A) allows a
  register constraint and another output parameter (B) allows a memory
! constraint.  The code generated by GCC to access the memory address in B
! 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 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').  Typically these qualifiers are hardware dependent.
! 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':
*** 29150,29167 ****
            : "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.
  
   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;
--- 28952,28969 ----
            : "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.
  
   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
*** 29181,29196 ****
          : [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.43.2.4 Input Operands
  .......................
  
! Input operands make values from C variables and expressions available
! to the assembly code.
  
   Operands are separated by commas.  Each operand has this format:
  
--- 28983,28998 ----
          : [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.43.2.4 Input Operands
  .......................
  
! Input operands make values from C variables and expressions available to
! the assembly code.
  
   Operands are separated by commas.  Each operand has this format:
  
*************** to the assembly code.
*** 29199,29241 ****
  ASMSYMBOLICNAME
       Specifies a symbolic name for the operand.  Reference the name in
       the assembler template by enclosing it in square brackets (i.e.
!      `%[Value]'). The scope of the name is the `asm' statement that
!      contains the definition. Any valid C variable name 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.
  
!      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 Reg Vars::).
  
!      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.
  
- 
   When the compiler selects the registers to use to represent the input
  operands, it does not use any of the clobbered registers (*note
  Clobbers::).
--- 29001,29042 ----
  ASMSYMBOLICNAME
       Specifies a symbolic name for the operand.  Reference the name in
       the assembler template by enclosing it in square brackets (i.e.
!      '%[Value]').  The scope of the name is the 'asm' statement that
!      contains the definition.  Any valid C variable name 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.
  
!      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 Reg Vars::).
  
!      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.
  
   When the compiler selects the registers to use to represent the input
  operands, it does not use any of the clobbered registers (*note
  Clobbers::).
*************** consecutive colons where the output oper
*** 29248,29276 ****
          : "r" (Offset / 8));
  
   *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'). Typically these qualifiers are hardware
! dependent. 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"
          : "=r" (foo)
--- 29049,29077 ----
          : "r" (Offset / 8));
  
   *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').  Typically these qualifiers are hardware dependent.
! 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"
          : "=r" (foo)
*************** they are in the same place in the genera
*** 29286,29313 ****
  .................
  
  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.
  
   Clobber descriptions may not in any way overlap with an input or output
! 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 Reg
! Vars::) 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.
  
!  When the compiler selects which registers to use to represent input
! and output operands, it does not use any of the clobbered registers. As
! a result, clobbered registers are available for any use in the
! assembler code.
  
   Here is a realistic example for the VAX showing the use of clobbered
  registers:
--- 29087,29114 ----
  .................
  
  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.
  
   Clobber descriptions may not in any way overlap with an input or output
! 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 Reg
! Vars::) 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.
  
!  When the compiler selects which registers to use to represent input and
! output operands, it does not use any of the clobbered registers.  As a
! result, clobbered registers are available for any use in the assembler
! code.
  
   Here is a realistic example for the VAX showing the use of clobbered
  registers:
*************** registers:
*** 29319,29390 ****
  
   Also, there are two 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.
  
       Flushing registers to memory has performance implications and may
       be an issue for time-sensitive code.  You can use a trick to avoid
       this if the size of the memory being accessed is known at compile
!      time. For example, if accessing ten bytes of a string, use a
       memory input like:
  
!      `{"m"( ({ struct { char x[10]; } *p = (void *)ptr ; *p; }) )}'.
! 
  
  6.43.2.6 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::).
  
!  An `asm goto' statement cannot have outputs.  This is due to an
  internal restriction of the compiler: control transfer instructions
  cannot have outputs.  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.
  
!  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 operands.  For example, if the `asm' has three
! inputs and references two labels, refer to the first label as `%l3' and
! the second as `%l4').
  
   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.
  
!  Here is an example of `asm goto' for i386:
  
       asm goto (
           "btl %1, %0\n\t"
--- 29120,29189 ----
  
   Also, there are two 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.
  
       Flushing registers to memory has performance implications and may
       be an issue for time-sensitive code.  You can use a trick to avoid
       this if the size of the memory being accessed is known at compile
!      time.  For example, if accessing ten bytes of a string, use a
       memory input like:
  
!      '{"m"( ({ struct { char x[10]; } *p = (void *)ptr ; *p; }) )}'.
  
  6.43.2.6 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::).
  
!  An 'asm goto' statement cannot have outputs.  This is due to an
  internal restriction of the compiler: control transfer instructions
  cannot have outputs.  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.
  
!  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 operands.  For example, if the 'asm' has three
! inputs and references two labels, refer to the first label as '%l3' and
! the second as '%l4').
  
   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.
  
!  Here is an example of 'asm goto' for i386:
  
       asm goto (
           "btl %1, %0\n\t"
*************** GOTOLABELS section when using this appro
*** 29399,29405 ****
       carry:
       return 1;
  
!  The following example shows an `asm goto' that uses a memory clobber.
  
       int frob(int x)
       {
--- 29198,29204 ----
       carry:
       return 1;
  
!  The following example shows an 'asm goto' that uses a memory clobber.
  
       int frob(int x)
       {
*************** GOTOLABELS section when using this appro
*** 29418,29426 ****
  ..............................
  
  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) );
--- 29217,29225 ----
  ..............................
  
  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.
*** 29446,29515 ****
       }
  
   With no modifiers, this is what the output from the operands would be
! for the `att' and `intel' dialects of assembler:
  
  Operand   masm=att   masm=intel
! --------------------------------------- 
! `%0'      `%eax'     `eax'
! `%1'      `$2'       `2'
! `%2'      `$.L2'     `OFFSET FLAT:.L2'
  
   The table below shows the list of supported modifiers and their
  effects.
  
! Modifier   Description                                  Operand   `masm=att' `masm=intel'
! ------------------------------------------------------------------------------------------ 
! `z'        Print the opcode suffix for the size of the  `%z0'     `l'        
!            current integer operand (one of                                   
!            `b'/`w'/`l'/`q').                                                 
! `b'        Print the QImode name of the register.       `%b0'     `%al'      `al'
! `h'        Print the QImode name for a "high" register. `%h0'     `%ah'      `ah'
! `w'        Print the HImode name of the register.       `%w0'     `%ax'      `ax'
! `k'        Print the SImode name of the register.       `%k0'     `%eax'     `eax'
! `q'        Print the DImode name of the register.       `%q0'     `%rax'     `rax'
! `l'        Print the label name with no punctuation.    `%l2'     `.L2'      `.L2'
! `c'        Require a constant operand and print the     `%c1'     `2'        `2'
!            constant expression with no punctuation.                          
  
! 6.43.2.8 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 know what the stack looked like--it's not clear how
!      the rest of the stack "slides up".
  
       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:
--- 29245,29316 ----
       }
  
   With no modifiers, this is what the output from the operands would be
! for the 'att' and 'intel' dialects of assembler:
  
  Operand   masm=att   masm=intel
! ---------------------------------------
! '%0'      '%eax'     'eax'
! '%1'      '$2'       '2'
! '%2'      '$.L2'     'OFFSET
!                      FLAT:.L2'
  
   The table below shows the list of supported modifiers and their
  effects.
  
! Modifier   Description                                  Operand   'masm=att' 'masm=intel'
! ------------------------------------------------------------------------------------------
! 'z'        Print the opcode suffix for the size of      '%z0'     'l'
!            the current integer operand (one of
!            'b'/'w'/'l'/'q').
! 'b'        Print the QImode name of the register.       '%b0'     '%al'      'al'
! 'h'        Print the QImode name for a "high"           '%h0'     '%ah'      'ah'
!            register.
! 'w'        Print the HImode name of the register.       '%w0'     '%ax'      'ax'
! 'k'        Print the SImode name of the register.       '%k0'     '%eax'     'eax'
! 'q'        Print the DImode name of the register.       '%q0'     '%rax'     'rax'
! 'l'        Print the label name with no punctuation.    '%l2'     '.L2'      '.L2'
! 'c'        Require a constant operand and print the     '%c1'     '2'        '2'
!            constant expression with no punctuation.
  
! 6.43.2.8 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
!      know what the stack looked like--it's not clear how the rest of the
!      stack "slides up".
  
       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:
*** 29517,29571 ****
            asm ("foo" : "=&t" (a) : "f" (b));
  
    3. Some operands need to be in particular places on the stack.  All
!      output operands fall in this category--GCC has no other way to
!      know which registers the outputs appear in unless you indicate
!      this in 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)");
  
  
  File: gcc.info,  Node: Constraints,  Next: Asm Labels,  Prev: Extended Asm,  Up: Using Assembly Language with C
  
! 6.43.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.
  
  * Menu:
  
--- 29318,29370 ----
            asm ("foo" : "=&t" (a) : "f" (b));
  
    3. Some operands need to be in particular places on the stack.  All
!      output operands fall in this category--GCC has no other way to know
!      which registers the outputs appear in unless you indicate this in
!      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)");
  
  
  File: gcc.info,  Node: Constraints,  Next: Asm Labels,  Prev: Extended Asm,  Up: Using Assembly Language with C
  
! 6.43.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.
  
  * Menu:
  
*************** whitespace
*** 29591,29603 ****
       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
--- 29390,29402 ----
       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
*************** whitespace
*** 29613,29724 ****
       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.
  
       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:
  
            addl #35,r12
  
--- 29412,29521 ----
       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.
  
       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:
  
            addl #35,r12
  
*************** whitespace
*** 29728,29746 ****
       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.
  
  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.
  
  
--- 29525,29543 ----
       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.
  
  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.
*** 29764,29793 ****
  
   If all the operands fit any one alternative, the instruction is valid.
  Otherwise, for each alternative, the compiler counts how many
! 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.
  
  
  File: gcc.info,  Node: Modifiers,  Next: Machine Constraints,  Prev: Multi-Alternative,  Up: Constraints
--- 29561,29590 ----
  
   If all the operands fit any one alternative, the instruction is valid.
  Otherwise, for each alternative, the compiler counts how many
! 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.
  
  
  File: gcc.info,  Node: Modifiers,  Next: Machine Constraints,  Prev: Multi-Alternative,  Up: Constraints
*************** File: gcc.info,  Node: Modifiers,  Next:
*** 29797,29875 ****
  
  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.
  
       A operand which is read by the instruction can be tied to an
       earlyclobber operand if its only use as an input occurs before the
       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.  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.
  
- 
  
  File: gcc.info,  Node: Machine Constraints,  Prev: Modifiers,  Up: Constraints
  
--- 29594,29671 ----
  
  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.
  
       A operand which is read by the instruction can be tied to an
       earlyclobber operand if its only use as an input occurs before the
       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.  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.
  
  
  File: gcc.info,  Node: Machine Constraints,  Prev: Modifiers,  Up: Constraints
  
*************** File: gcc.info,  Node: Machine Constrain
*** 29877,31264 ****
  ............................................
  
  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 or SIMD vector register
  
!     `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
! 
! 
! _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 