home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / share / doc / gcc-4.3-base / NEWS.html < prev    next >
Encoding:
Extensible Markup Language  |  2008-10-24  |  45.4 KB  |  1,042 lines

  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2.   <!DOCTYPE html
  3.             PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  4.             "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.      <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  23.   
  24.   
  25.    <head>
  26.  
  27.     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  28.     <link rev="made" href="mailto:gcc@gcc.gnu.org" />
  29.     <link rel="shortcut icon" href="http://gcc.gnu.org/favicon.ico" />
  30.     <link rel="stylesheet" type="text/css" href="/gnu.css" />
  31.     <link rel="stylesheet" type="text/css" href="http://gcc.gnu.org/gcc.css" />
  32.   
  33.  <title>
  34. GCC 4.3 Release Series — Changes, New Features, and Fixes
  35. - GNU Project - Free Software Foundation (FSF)</title>
  36.    </head>
  37.  
  38.  
  39. <!-- GCC maintainers, please do not hesitate to update/contribute entries
  40.      concerning those part of GCC you maintain!  2002-03-23, Gerald.
  41. -->
  42.  
  43. <body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="#FF0000" vlink="#9900DD">
  44.  
  45.  
  46.  
  47. <h1 align="center">
  48. GCC 4.3 Release Series<br />Changes, New Features, and Fixes
  49. </h1>
  50.  
  51. <h2>Caveats</h2>
  52.  
  53.   <ul>
  54.     <li id="mpfrcaveats">GCC requires the <a
  55.     href="http://gmplib.org/">GMP</a> and <a
  56.     href="http://www.mpfr.org/">MPFR</a> libraries for building all
  57.     the various front-end languages it supports.  See the <a
  58.     href="http://gcc.gnu.org/install/prerequisites.html">prerequisites
  59.     page</a> for version requirements.</li>
  60.  
  61.     <li>ColdFire targets now treat <code>long double</code> as having
  62.     the same format as <code>double</code>.  In earlier versions of GCC,
  63.     they used the 68881 <code>long double</code> format instead.</li>
  64.  
  65.     <li>The <code>m68k-uclinux</code> target now uses the same
  66.     calling conventions as <code>m68k-linux-gnu</code>.  You can
  67.     select the original calling conventions by configuring for
  68.     <code>m68k-uclinuxoldabi</code> instead.  Note that
  69.     <code>m68k-uclinuxoldabi</code> also retains the original
  70.     80-bit <code>long double</code> on ColdFire targets.</li>
  71.  
  72.     <li>The <code>-fforce-mem</code> option has been removed
  73.     because it has had no effect in the last few GCC releases.</li>
  74.  
  75.     <li>The i386 <code>-msvr3-shlib</code> option has been removed
  76.     since it is no longer used.</li>
  77.  
  78.     <li><code>Fastcall</code> for i386 has been changed not to pass
  79.     aggregate arguments in registers, following Microsoft compilers.</li>
  80.  
  81.     <li>Support for the AOF assembler has been removed from the ARM
  82.     back end; this affects only the targets <code>arm-semi-aof</code>
  83.     and <code>armel-semi-aof</code>, which are no longer recognized.
  84.     We removed these targets without a deprecation period because we
  85.     discovered that they have been unusable since GCC 4.0.0.</li>
  86.  
  87.     <li>Support for the TMS320C3x/C4x processor (targets
  88.     <code>c4x-*</code> and <code>tic4x-*</code>) has been removed.
  89.     This support had been deprecated since GCC 4.0.0.</li>
  90.  
  91.     <li><p>Support for a number of older systems and recently
  92.     unmaintained or untested target ports of GCC has been declared
  93.     obsolete in GCC 4.3.  Unless there is activity to revive them, the
  94.     next release of GCC will have their sources permanently
  95.     <strong>removed</strong>.</p>
  96.  
  97.     <p>All GCC ports for the following processor architectures have
  98.     been declared obsolete:</p>
  99.  
  100.     <ul>
  101.       <li>National Semiconductor CRX (<code>crx-*</code>)</li>
  102.       <li>Morpho MT (<code>mt-*</code>)</li>
  103.     </ul>
  104.  
  105.     <p>The following aliases for processor architectures have been
  106.     declared obsolete.  Users should use the indicated generic target
  107.     names instead, with compile-time options such as
  108.     <code>-mcpu</code> or configure-time options such as
  109.     <code>--with-cpu</code> to control the configuration more
  110.     precisely.</p>
  111.  
  112.     <ul>
  113.       <li><code>strongarm*-*-*</code>, <code>ep9312*-*-*</code>,
  114.         <code>xscale*-*-*</code> (use <code>arm*-*-*</code>
  115.         instead).</li>
  116.       <li><code>parisc*-*-*</code> (use <code>hppa*-*-*</code>
  117.         instead).</li>
  118.       <li><code>m680[012]0-*-*</code> (use <code>m68k-*-*</code>
  119.         instead).</li>
  120.     </ul>
  121.  
  122.     <p>All GCC ports for the following operating systems have been
  123.     declared obsolete:</p>
  124.  
  125.     <ul>
  126.       <li>BeOS (<code>*-*-beos*</code>)</li>
  127.       <li>kaOS (<code>*-*-kaos*</code>)</li>
  128.       <li>GNU/Linux using the a.out object format
  129.         (<code>*-*-linux*aout*</code>)</li>
  130.       <li>GNU/Linux using version 1 of the GNU C Library
  131.         (<code>*-*-linux*libc1*</code>)</li>
  132.       <li>Solaris versions before Solaris 7
  133.         (<code>*-*-solaris2.[0-6]</code>,
  134.         <code>*-*-solaris2.[0-6].*</code>)</li>
  135.       <li>Miscellaneous System V (<code>*-*-sysv*</code>)</li>
  136.       <li>WindISS (<code>*-*-windiss*</code>)</li>
  137.     </ul>
  138.  
  139.     <p>Also, those for some individual systems on particular
  140.     architectures have been obsoleted:</p>
  141.  
  142.     <ul>
  143.       <li>UNICOS/mk on DEC Alpha
  144.         (<code>alpha*-*-unicosmk*</code>)</li>
  145.       <li>CRIS with a.out object format
  146.         (<code>cris-*-aout</code>)</li>
  147.       <li>BSD 4.3 on PA-RISC (<code>hppa1.1-*-bsd*</code>)</li>
  148.       <li>OSF/1 on PA-RISC (<code>hppa1.1-*-osf*</code>)</li>
  149.       <li>PRO on PA-RISC (<code>hppa1.1-*-pro*</code>)</li>
  150.       <li>Sequent PTX on IA32 (<code>i[34567]86-sequent-ptx4*</code>,
  151.         <code>i[34567]86-sequent-sysv4*</code>)</li>
  152.       <li>SCO Open Server 5 on IA32
  153.         (<code>i[34567]86-*-sco3.2v5*</code>)</li>
  154.       <li>UWIN on IA32 (<code>i[34567]86-*-uwin*</code>) (support for
  155.         UWIN as a host was previously <a
  156.         href="http://gcc.gnu.org/ml/gcc-announce/2001/msg00000.html">removed
  157.         in 2001</a>, leaving only the support for UWIN as a target now
  158.         being deprecated)</li>
  159.       <li>ChorusOS on PowerPC (<code>powerpc-*-chorusos*</code>)</li>
  160.       <li>All VAX configurations apart from NetBSD and OpenBSD
  161.         (<code>vax-*-bsd*</code>, <code>vax-*-sysv*</code>,
  162.         <code>vax-*-ultrix*</code>)</li>
  163.     </ul>
  164.  
  165.     </li>
  166.  
  167.     <li>The <code><a
  168.     href="http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning-Options"
  169.     >-Wconversion</a></code> option has been modified. Its purpose now
  170.     is to warn for implicit conversions that may alter a value. This
  171.     new behavior is available for both C and C++. Warnings about
  172.     conversions between signed and unsigned integers can be disabled
  173.     by using <code>-Wno-sign-conversion</code>. In C++, they are
  174.     disabled by default unless <code>-Wsign-conversion</code> is
  175.     explicitly requested. The old behavior of
  176.     <code>-Wconversion</code>, that is, warn for prototypes causing a
  177.     type conversion that is different from what would happen to the
  178.     same argument in the absence of a prototype, has been moved to a
  179.     new option <code>-Wtraditional-conversion</code>, which is only
  180.     available for C.</li>
  181.  
  182.     <li>The <code>-m386, -m486, -mpentium</code> and
  183.     <code>-mpentiumpro</code> tuning options have been removed because
  184.     they were deprecated for more than 3 GCC major releases. Use
  185.     <code>-mtune=i386</code>, <code>-mtune=i486</code>, 
  186.     <code>-mtune=pentium</code> or <code>-mtune=pentiumpro</code> as a
  187.     replacement.</li>
  188.  
  189.     <li>The <code>-funsafe-math-optimizations</code> option now automatically
  190.     turns on <code>-fno-trapping-math</code> in addition to
  191.     <code>-fno-signed-zeros</code>, as it enables reassociation and thus
  192.     may introduce or remove traps.</li>
  193.  
  194.     <li>More information on porting to GCC 4.3 from previous versions
  195.     of GCC can be found in
  196.     the <a href="http://gcc.gnu.org/gcc-4.3/porting_to.html">porting
  197.     guide</a> for this release.</li>
  198.   </ul>
  199.  
  200. <h2>General Optimizer Improvements</h2>
  201.  
  202.   <ul>
  203.     <li id="mpfropts">The GCC middle-end has been integrated with the
  204.     <a href="http://www.mpfr.org/">MPFR</a> library.  This allows GCC
  205.     to evaluate and replace at compile-time calls to built-in math
  206.     functions having constant arguments with their mathematically
  207.     equivalent results.  In making use of <a
  208.     href="http://www.mpfr.org/">MPFR</a>, GCC can generate correct
  209.     results regardless of the math library implementation or floating
  210.     point precision of the host platform.  This also allows GCC to
  211.     generate identical results regardless of whether one compiles in
  212.     native or cross-compile configurations to a particular target.
  213.     The following built-in functions take advantage of this new
  214.     capability: <code>acos</code>, <code>acosh</code>,
  215.     <code>asin</code>, <code>asinh</code>, <code>atan2</code>,
  216.     <code>atan</code>, <code>atanh</code>, <code>cbrt</code>,
  217.     <code>cos</code>, <code>cosh</code>, <code>drem</code>,
  218.     <code>erf</code>, <code>erfc</code>, <code>exp10</code>,
  219.     <code>exp2</code>, <code>exp</code>, <code>expm1</code>,
  220.     <code>fdim</code>, <code>fma</code>, <code>fmax</code>,
  221.     <code>fmin</code>, <code>gamma_r</code>, <code>hypot</code>,
  222.     <code>j0</code>, <code>j1</code>, <code>jn</code>,
  223.     <code>lgamma_r</code>, <code>log10</code>, <code>log1p</code>,
  224.     <code>log2</code>, <code>log</code>, <code>pow10</code>,
  225.     <code>pow</code>, <code>remainder</code>, <code>remquo</code>,
  226.     <code>sin</code>, <code>sincos</code>, <code>sinh</code>,
  227.     <code>tan</code>, <code>tanh</code>, <code>tgamma</code>,
  228.     <code>y0</code>, <code>y1</code> and <code>yn</code>.  The
  229.     <code>float</code> and <code>long double</code> variants of these
  230.     functions (e.g. <code>sinf</code> and <code>sinl</code>) are also
  231.     handled.  The <code>sqrt</code> and <code>cabs</code> functions
  232.     with constant arguments were already optimized in prior GCC
  233.     releases.  Now they also use <a href="http://www.mpfr.org/">MPFR</a>. </li>
  234.  
  235.     <li>A new <em>forward propagation</em> pass on RTL was added.  The new pass
  236.       replaces several slower transformations, resulting in compile-time
  237.       improvements as well as better code generation in some cases.</li>
  238.  
  239.     <li> A new command-line switch <code>-frecord-gcc-switches</code> has been
  240.     added to GCC, although it is only enabled for some targets.  The switch
  241.     causes the command line that was used to invoke the compiler to be recorded
  242.     into the object file that is being created.  The exact format of this
  243.     recording is target and binary file format dependent, but it usually takes
  244.     the form of a note section containing ASCII text.  The switch is related to
  245.     the <code>-fverbose-asm</code> switch, but that one only records the
  246.     information in the assembler output file as comments, so the information
  247.     never reaches the object file.
  248.     </li>
  249.  
  250.     <li>The inliner heuristic is now aware of stack frame consumption.  New
  251.     command-line parameters <code>--param large-stack-frame</code>
  252.     and <code>--param large-stack-frame-growth</code>
  253.     can be used to limit stack frame size growth caused by inlining.</li>
  254.  
  255.     <li>During feedback directed optimizations, the expected block size
  256.     the <code>memcpy</code>, <code>memset</code> and <code>bzero</code>
  257.     functions operate on is discovered and for cases of commonly used small
  258.     sizes, specialized inline code is generated.</li>
  259.  
  260.     <li><code>__builtin_expect</code> no longer requires its argument to be
  261.     a compile time constant.</li>
  262.  
  263.     <li id="ipa">Interprocedural optimization was reorganized to work on
  264.     functions in SSA form.  This enables more precise and cheaper dataflow
  265.     analysis and makes writing interprocedural optimizations easier.  The
  266.     following improvements have been implemented on top of this
  267.     framework:
  268.     <ul>
  269.      <li>Pre-inline optimization: Selected local optimization passes are
  270.          run before the inliner (and other interprocedural passes) are
  271.          executed.  This significantly improves the accuracy of code growth
  272.          estimates used by the inliner and reduces the overall memory
  273.          footprint for large compilation units.</li>
  274.      <li>Early inlining (a simple bottom-up inliner pass inlining only
  275.          functions whose body is smaller than the expected call overhead)
  276.          is now executed with the early optimization passes, thus inlining
  277.          already optimized function bodies into an unoptimized function
  278.          that is subsequently optimized by early optimizers.  This enables
  279.          the compiler to quickly eliminate abstraction penalty in C++
  280.          programs.</li>
  281.      <li>Interprocedural constant propagation now operate on SSA form
  282.          increasing accuracy of the analysis.</li>
  283.     </ul>
  284.     </li>
  285.  
  286.     <li>A new internal representation for GIMPLE statements has been
  287.       contributed, resulting in compile-time memory savings.</li>
  288.   </ul>
  289.  
  290. <h2>New Languages and Language specific improvements</h2>
  291.  
  292. <ul>
  293.   <li>We have added new command-line options
  294.   <code>-finstrument-functions-exclude-function-list</code> and
  295.   <code>-finstrument-functions-exclude-file-list</code>.  They provide
  296.   more control over which functions are annotated
  297.   by the <code>-finstrument-functions</code> option.</li>
  298. </ul>
  299.  
  300. <h3>C family</h3>
  301.  
  302.   <ul>
  303.     <li>
  304.     Implicit conversions between generic vector types are now
  305.     only permitted when the two vectors in question have the same number
  306.     of elements and compatible element types.  (Note that the restriction
  307.     involves <em>compatible</em> element types, not
  308.     implicitly-convertible element types: thus, a vector type with element
  309.     type <code>int</code> may not be implicitly converted to a vector
  310.     type with element type <code>unsigned int</code>.)
  311.     This restriction, which is in line with specifications for SIMD
  312.     architectures such as AltiVec, may be relaxed using the
  313.     flag <code>-flax-vector-conversions</code>.
  314.     This flag is intended only as a compatibility measure and should not
  315.     be used for new code.
  316.     </li>
  317.     <li>
  318.       <code>-Warray-bounds</code> has been added and is now enabled by
  319.       default for <code>-Wall</code> . It produces warnings for array
  320.       subscripts that can be determined at compile time to be always
  321.       out of bounds. <code>-Wno-array-bounds</code> will disable the
  322.       warning.
  323.     </li>
  324.     <li>
  325.      The <code>constructor</code> and <code>destructor</code> function
  326.      attributes now accept optional priority arguments which control
  327.      the order in which the constructor and destructor functions are
  328.      run.
  329.     </li>
  330.  
  331.     <li>
  332.     New <a
  333.     href="http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html"
  334.     >command-line options</a> <code>-Wtype-limits</code>, 
  335.     <code>-Wold-style-declaration</code>,
  336.     <code>-Wmissing-parameter-type</code>, <code>-Wempty-body</code>,
  337.     <code>-Wclobbered</code> and <code>-Wignored-qualifiers</code>
  338.     have been added for finer control of the diverse warnings enabled by
  339.     <code>-Wextra</code>.
  340.     </li>
  341.  
  342.     <li>
  343.     A new function attribute <code>alloc_size</code> has been added to
  344.     mark up <code>malloc</code> style functions. For constant sized
  345.     allocations this can be used to find out the size of the returned
  346.     pointer using the <code>__builtin_object_size()</code> function
  347.     for buffer overflow checking and similar.
  348.     This supplements the already built-in <code>malloc</code> and
  349.     <code>calloc</code> constant size handling.
  350.     </li>
  351.  
  352.     <li>
  353.     Integer constants written in binary are now supported as a GCC
  354.     extension.  They consist of a prefix <code>0b</code> or
  355.     <code>0B</code>, followed by a sequence of 0 and 1 digits.
  356.     </li>
  357.  
  358.     <li>
  359.     A new predefined macro <code>__COUNTER__</code> has been added.
  360.     It expands to sequential integral values starting from 0.  In
  361.     conjunction with the <code>##</code> operator, this provides a
  362.     convenient means to generate unique identifiers.
  363.     </li>
  364.  
  365.     <li>
  366.     A new command-line option <code>-fdirectives-only</code> has been
  367.     added.  It enables a special preprocessing mode which improves the
  368.     performance of applications like distcc and ccache.
  369.     </li>
  370.  
  371.     <li>
  372.     Fixed-point data types and operators have been added.
  373.     They are based on Chapter 4 of the Embedded-C specification (n1169.pdf).
  374.     Currently, only MIPS targets are supported.
  375.     </li>
  376.  
  377.   </ul>
  378.  
  379. <h3>C++</h3>
  380.   <ul>
  381.   <li><a href="cxx0x_status.html">Experimental support for the upcoming
  382.   ISO C++ standard, C++0x</a>.</li>
  383.  
  384.   <li><code>-Wc++0x-compat</code> has been added and is now enabled by
  385.   default for <code>-Wall</code>. It produces warnings for constructs
  386.   whose meaning differs between ISO C++ 1998 and C++0x.</li>
  387.  
  388.   <li>The <code>-Wparentheses</code> option now works for C++ as it
  389.   does for C.  It warns if parentheses are omitted when operators with
  390.   confusing precedence are nested.  It also warns about ambiguous else
  391.   statements.  Since <code>-Wparentheses</code> is enabled by
  392.   <code>-Wall</code>, this may cause additional warnings with existing
  393.   C++ code which uses <code>-Wall</code>.  These new warnings may be
  394.   disabled by using <code>-Wall -Wno-parentheses</code>.</li>
  395.  
  396.   <li>The <code>-Wmissing-declarations</code> now works for C++ as it
  397.   does for C.</li>
  398.  
  399.   <li>The <code>-fvisibility-ms-compat</code> flag was added, to make it
  400.   easier to port larger projects using shared libraries from Microsoft's
  401.   Visual Studio to ELF and Mach-O systems.</li>
  402.  
  403.   <li>C++ attribute handling has been overhauled for template
  404.   arguments (ie dependent types). In particular,
  405.   <code>__attribute__((aligned(T)));</code> works for C++ types.</li>
  406.  
  407.   </ul>
  408.  
  409.   <h4>Runtime Library (libstdc++)</h4>
  410.   <ul>
  411.     <li><a href="cxx0x_status.html">Experimental support for the upcoming
  412.     ISO C++ standard, C++0x</a>.</li>
  413.     <li> Support for TR1 mathematical special functions and regular
  414.     expressions. The implementation status for TR1 can be tracked in
  415.     <a href="http://gcc.gnu.org/onlinedocs/libstdc++/ext/tr1.html">
  416.     tr1.html </a> </li>
  417.     <li> Default <code>what</code> implementations give more elaborate
  418.     exception strings for <code>bad_cast</code>,
  419.     <code>bad_typeid</code>, <code>bad_exception</code>, and
  420.     <code>bad_alloc</code>. </li>
  421.     <li> Header dependencies have been streamlined, reducing
  422.     unnecessary includes and pre-processed bloat. </li>
  423.     <li> Variadic template implementations of items in <tuple> and
  424.     <functional>.  </li>
  425.  
  426.     <li> An experimental <a
  427.     href="http://gcc.gnu.org/onlinedocs/libstdc++/ext/parallel_mode.html">
  428.     parallel mode </a> has been added. This is a parallel
  429.     implementation of many C++ Standard library algorithms, like
  430.     <code>std::accumulate</code>, <code>std::for_each</code>,
  431.     <code>std::transform</code>, or <code>std::sort</code>, to give
  432.     but four examples. These algorithms can be substituted for the normal
  433.     (sequential) libstdc++ algorithms on a piecemeal basis, or
  434.     all existing algorithms can be transformed via the
  435.     <code>-D_GLIBCXX_PARALLEL</code> macro.</li>
  436.  
  437.     <li> Debug mode versions of classes in <unordered_set> and
  438.     <unordered_map>.  </li>
  439.     <li> Formal deprecation of <ext/hash_set> and
  440.     <ext/hash_map>, which are now <backward/hash_set> and
  441.     <backward/hash_map>. This code:
  442.     <pre>
  443.     #include <ext/hash_set>
  444.     __gnu_cxx::hash_set<int> s;
  445.     </pre>
  446.  
  447.     Can be transformed (in order of preference) to:
  448.     <pre>
  449.     #include <tr1/unordered_set>
  450.     std::tr1::unordered_set<int> s;
  451.     </pre>
  452.  
  453.     or
  454.  
  455.     <pre>
  456.     #include <backward/hash_set>
  457.     __gnu_cxx::hash_set<int> s;
  458.     </pre>
  459.  
  460.     Similar transformations apply to <code>__gnu_cxx::hash_map</code>,
  461.     <code>__gnu_cxx::hash_multimap</code>,
  462.     <code>__gnu_cxx::hash_set</code>,
  463.     <code>__gnu_cxx::hash_multiset</code>.
  464.   </li> </ul>
  465.  
  466. <h3>Fortran</h3>
  467.   <ul>
  468.  
  469.     <li>Due to the fact that the <a
  470.     href="http://gmplib.org/">GMP</a> and <a
  471.     href="http://www.mpfr.org/">MPFR</a> libraries are required for
  472.     all languages, Fortran is no longer special in this regard and is
  473.     available by default.</li>
  474.  
  475.     <li>The <code>
  476.     <a href="http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#Code-Gen-Options"
  477.     >-fexternal-blas</a></code> option has been added, which
  478.     generates calls to BLAS routines for intrinsic matrix operations such
  479.     as <code>matmul</code> rather than using the built-in algorithms.</li>
  480.     <li>Support to give a backtrace (compiler flag <code>-fbacktrace</code>
  481.     or environment variable <code>GFORTRAN_ERROR_BACKTRACE</code>; on glibc
  482.     systems only) or a core dump (<code>-fdump-core</code>,
  483.     <code>GFORTRAN_ERROR_DUMPCORE</code>) when a run-time error occured.</li>
  484.     <li>GNU Fortran now defines <code>__GFORTRAN__</code> when it runs the C
  485.     preprocessor (CPP).</li>
  486.     <li>The <a
  487.     href="http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfinit-local-zero_007d-167"
  488.     ><code>-finit-local-zero</code>, <code>-finit-real</code>,
  489.     <code>-finit-integer</code>, <code>-finit-character</code>, and
  490.     <code>-finit-logical</code></a> options have been added, which can be
  491.     used to initialize local variables.</li>
  492.     <li>The intrinsic procedures <a
  493.     href="http://gcc.gnu.org/onlinedocs/gfortran/GAMMA.html"><code>GAMMA
  494.     </code></a> and <a
  495.     href="http://gcc.gnu.org/onlinedocs/gfortran/LGAMMA.html"><code>LGAMMA
  496.     </code></a> have been added, which calculate the Gamma function and
  497.     its logarithm. Use <code>EXTERNAL gamma</code> if you want to use your
  498.     own gamma function.</li>
  499.     <li>GNU Fortran now regards the backslash character as literal
  500.     (as required by the Fortran 2003 standard); using <a
  501.     href="http://gcc.gnu.org/onlinedocs/gfortran/Fortran-Dialect-Options.html">
  502.     <code>-fbackslash</code></a> GNU Fortran interprets backslashes as
  503.     C-style escape characters.</li>
  504.     <li>The <a
  505.     href="http://gcc.gnu.org/onlinedocs/gfortran/BOZ-literal-constants.html">
  506.     interpretation of binary, octal and hexadecimal (BOZ) literal constants</a>
  507.     has been changed. Before they were always interpreted as integer; now they
  508.     are bit-wise transferred as argument of INT, REAL, DBLE and CMPLX as
  509.     required by the Fortran 2003 standard, and for real and complex variables
  510.     in DATA statements or when directly assigned to real and complex variables.
  511.     Everywhere else and especially in expressions they are still regarded
  512.     as integer constants.</li>
  513.     <li>Fortran 2003 support has been extended:
  514.     <ul>
  515.       <li>Intrinsic statements IMPORT, PROTECTED, VALUE and VOLATILE</li>
  516.       <li>Pointer intent</li>
  517.       <li>Intrinsic module <code>ISO_ENV_FORTRAN</code></li>
  518.       <li>Interoperability with C (ISO C Bindings)</li>
  519.       <li>ABSTRACT INTERFACES and PROCEDURE statements (without POINTER
  520.       attribute)</li>
  521.       <li>Fortran 2003 BOZ</li>
  522.     </ul></li>
  523.   </ul>
  524.  
  525. <h3>Java (GCJ)</h3>
  526.  
  527.   <ul>
  528.  
  529.      <li> gcj now uses the Eclipse Java compiler for its Java parsing
  530.      needs.  This enables the use of all 1.5 language features, and
  531.      fixes most existing front end bugs. </li>
  532.  
  533.      <li> libgcj now supports all 1.5 language features which require
  534.      runtime support: foreach, enum, annotations, generics, and
  535.      auto-boxing.  </li>
  536.  
  537.      <li id="gcjtools"> We've made many changes to the tools shipped
  538.      with gcj.
  539.      <ul>
  540.  
  541.      <li> The old <code>jv-scan</code> tool has been removed.  This
  542.      tool never really worked properly.  There is no replacement.
  543.      </li>
  544.  
  545.      <li> <code>gcjh</code> has been rewritten.  Some of its more
  546.      obscure options no longer work, but are still recognized in an
  547.      attempt at compatibility.  <code>gjavah</code> is a new program
  548.      with similar functionality but different command-line options.
  549.      </li>
  550.  
  551.      <li> <code>grmic</code> and <code>grmiregistry</code> have been
  552.      rewritten.  <code>grmid</code> has been added.  </li>
  553.  
  554.      <li> <code>gjar</code> replaces the old <code>fastjar</code>.  </li>
  555.  
  556.      <li> <code>gjarsigner</code> (used for signing jars),
  557.      <code>gkeytool</code> (used for key management),
  558.      <code>gorbd</code> (for CORBA), <code>gserialver</code> (computes
  559.      serialization UIDs), and <code>gtnameserv</code> (also for CORBA)
  560.      are now installed. </li>
  561.      </ul>
  562.      </li>
  563.  
  564.      <li> The ability to dump the contents of the java run time heap to
  565.      a file for off-line analysis has been added.  The heap dumps may
  566.      be analyzed with the new <code>gc-analyze</code> tool.  They may
  567.      be generated on out-of-memory conditions or on demand and are
  568.      controlled by the new run time class
  569.      <code>gnu.gcj.util.GCInfo</code>.  </li>
  570.  
  571.      <li> <code>java.util.TimeZone</code> can now read files from
  572.      <code>/usr/share/zoneinfo</code> to provide correct, updated,
  573.      timezone information.  This means that packagers no longer have
  574.      to update libgcj when a time zone change is published. </li>
  575.  
  576.   </ul>
  577.  
  578. <h2>New Targets and Target Specific Improvements</h2>
  579.  
  580. <h3>IA-32/x86-64</h3>
  581.   <ul>
  582.     <li>Tuning for Intel Core 2 processors is available via
  583.         <code>-mtune=core2</code> and <code>-march=core2</code>.</li>
  584.     <li>Tuning for AMD Geode processors is available via
  585.         <code>-mtune=geode</code> and <code>-march=geode</code>.</li>
  586.     <li>Code generation of block move (<code>memcpy</code>) and block set
  587.     (<code>memset</code>) was rewritten.  GCC can now pick the best
  588.         algorithm (loop, unrolled loop, instruction with <code>rep</code>
  589.         prefix or a library call) based on the size of the block being
  590.         copied and the CPU being optimized for.  A new option
  591.         <code>-minline-stringops-dynamically</code> has been added.  With
  592.         this option string operations of unknown size are expanded such
  593.         that small blocks are copied by in-line code, while for
  594.     large blocks a library call is used.  This results in faster code than
  595.     <code>-minline-all-stringops</code> when the library implementation is
  596.     capable of using cache hierarchy hints.  The heuristic choosing
  597.     the particular algorithm can be overwritten via
  598.     <code>-mstringop-strategy</code>.  Newly also <code>memset</code> of
  599.     values different from 0 is inlined.</li>
  600.     <li>GCC no longer places the <code>cld</code> instruction before string
  601.     operations.  Both i386 and x86-64 ABI documents mandate the direction
  602.     flag to be clear at the entry of a function.  It is now invalid to
  603.     set the flag in <code>asm</code> statement without reseting it
  604.     afterward.</li>
  605.     <li>Support for SSSE3 built-in functions and code generation are
  606.     available via <code>-mssse3</code>.</li>
  607.     <li>Support for SSE4.1 built-in functions and code generation are
  608.     available via <code>-msse4.1</code>.</li>
  609.     <li>Support for SSE4.2 built-in functions and code generation are
  610.     available via <code>-msse4.2</code>.</li> 
  611.     <li>Both SSE4.1 and SSE4.2 support can be enabled via
  612.     <code>-msse4</code>.</li>
  613.     <li>A new set of options <code>-mpc32</code>, <code>-mpc64</code>
  614.         and <code>-mpc80</code> have been added to allow explicit control
  615.         of x87 floating point precision.</li>
  616.     <li>Support for <code>__float128</code> (TFmode) IEEE quad type and
  617.     corresponding TCmode IEEE complex quad type is available
  618.     via the soft-fp library on <code>x86_64</code> targets.
  619.     This includes basic arithmetic operations (addition, subtraction,
  620.     negation, multiplication and division) on <code>__float128</code>
  621.     real and TCmode complex values, the full set of IEEE comparisons
  622.     between <code>__float128</code> values, conversions to and from
  623.     <code>float</code>, <code>double</code> and <code>long double</code>
  624.     floating point types, as well as conversions to and from
  625.     <code>signed</code> or <code>unsigned</code> integer,
  626.     <code>signed</code> or <code>unsigned long</code> integer and
  627.     <code>signed</code> or <code>unsigned</code> quad (TImode) integer
  628.     types.  Additionally, all operations generate the full set of IEEE
  629.     exceptions and support the full set of IEEE rounding modes.</li>
  630.     <li>GCC can now utilize the ACML library for vectorizing calls to
  631.     a set of C99 functions on x86_64 if <code>-mveclibabi=acml</code>
  632.     is specified and you link to an ACML ABI compatible library.</li>
  633.   </ul>
  634.  
  635. <h3>ARM</h3>
  636.   <ul>
  637.     <li>Compiler and Library support for Thumb-2 and the ARMv7
  638.         architecture has been added.</li>
  639.   </ul>
  640.  
  641. <h3 id="cris">CRIS</h3>
  642.   <h4>New features</h4>
  643.     <ul>
  644.       <li>Compiler and Library support for the CRIS v32 architecture, as
  645.       found in Axis Communications ETRAX FS and ARTPEC-3 chips, has
  646.       been added.</li>
  647.     </ul>
  648.   <h4>Configuration changes</h4>
  649.     <ul>
  650.       <li>The <code>cris-*-elf</code> target now includes support for
  651.       CRIS v32, including libraries, through the
  652.       <code>-march=v32</code> option.</li>
  653.       <li>A new <code>crisv32-*-elf</code> target defaults to generate
  654.       code for CRIS v32.</li>
  655.       <li>A new <code>crisv32-*-linux*</code> target defaults to generate
  656.       code for CRIS v32.</li>
  657.       <li>The <code>cris-*-aout</code> target has been obsoleted.</li>
  658.     </ul>
  659.   <h4>Improved support for built-in functions</h4>
  660.     <ul>
  661.       <li>GCC can now use the <code>lz</code> and
  662.       <code>swapwbr</code> instructions to implement the
  663.       <code>__builtin_clz</code>, <code>__builtin_ctz</code> and
  664.       <code>__builtin_ffs</code> family of functions.</li>
  665.       <li><code>__builtin_bswap32</code> is now implemented using the
  666.       <code>swapwb</code> instruction, when available.</li>
  667.     </ul>
  668.  
  669. <h3 id="m68k">m68k and ColdFire</h3>
  670.   <h4>New features</h4>
  671.     <ul>
  672.       <li>Support for several new ColdFire processors has been added.
  673.       You can generate code for them using the new <code>-mcpu</code>
  674.       option.</li>
  675.       <li>All targets now support ColdFire processors.</li>
  676.       <li><code>m68k-uclinux</code> targets have improved support for
  677.       C++ constructors and destructors, and for shared libraries.</li>
  678.       <li>It is now possible to set breakpoints on the first or last line
  679.       of a function, even if there are no statements on that line.</li>
  680.     </ul>
  681.   <h4>Optimizations</h4>
  682.     <ul>
  683.       <li>Support for sibling calls has been added.</li>
  684.       <li>More use is now made of the ColdFire <code>mov3q</code>
  685.       instruction.</li>
  686.       <li><code>__builtin_clz</code> is now implemented using the
  687.       <code>ff1</code> ColdFire instruction, when available.</li>
  688.       <li>GCC now honors the <code>-m68010</code> option.  68010 code
  689.       now uses <code>clr</code> rather than <code>move</code> to
  690.       zero volatile memory.</li>
  691.       <li>68020 targets and above can now use
  692.       <code>symbol(index.size*scale)</code> addresses for
  693.       indexed array accesses.  Earlier compilers would always
  694.       load the symbol into a base register first.</li>
  695.     </ul>
  696.   <h4>Configuration changes</h4>
  697.     <ul>
  698.       <li>All m68k and ColdFire targets now allow the default processor
  699.       to be set at configure time using <code>--with-cpu</code>.</li>
  700.       <li>A <code>--with-arch</code> configuration option has been added.
  701.       This option allows you to restrict a target to ColdFire or
  702.       non-ColdFire processors.</li>
  703.     </ul>
  704.   <h4>Preprocessor macros</h4>
  705.     <ul>
  706.       <li>An <code>__mcfv*__</code> macro is now defined for all ColdFire
  707.       targets.  (Earlier versions of GCC only defined
  708.       <code>__mcfv4e__</code>.)</li>
  709.       <li><code>__mcf_cpu_*</code>, <code>__mcf_family_*</code> and
  710.       <code>__mcffpu__</code> macros have been added.</li>
  711.       <li>All targets now define <code>__mc68010</code> and
  712.       <code>__mc68010__</code> when generating 68010 code.</li>
  713.     </ul>
  714.   <h4>Command-line changes</h4>
  715.     <ul>
  716.       <li>New command-line options <code>-march</code>, <code>-mcpu</code>,
  717.       <code>-mtune</code> and <code>-mhard-float</code> have been added.
  718.       These options apply to both m68k and ColdFire targets.</li>
  719.       <li><code>-mno-short</code>, <code>-mno-bitfield</code> and
  720.       <code>-mno-rtd</code> are now accepted as negative versions
  721.       of <code>-mshort</code>, etc.</li>
  722.       <li><code>-fforce-addr</code> has been removed.  It is now ignored
  723.           by the compiler.</li>
  724.     </ul>
  725.   <h4>Other improvements</h4>
  726.     <ul>
  727.       <li>ColdFire targets now try to maintain a 4-byte-aligned
  728.       stack where possible.</li>
  729.       <li><code>m68k-uclinux</code> targets now try to avoid
  730.       situations that lead to the load-time error:
  731.       <code>BINFMT_FLAT: reloc outside program</code>.</li>
  732.     </ul>
  733.  
  734. <h3>MIPS</h3>
  735.   <h4>Changes to existing configurations</h4>
  736.     <ul>
  737.       <li><code>libffi</code> and <code>libjava</code> now support all
  738.       three GNU/Linux ABIs: o32, n32 and n64.  Every GNU/Linux
  739.       configuration now builds these libraries by default.</li>
  740.       <li>GNU/Linux configurations now generate <code>-mno-shared</code>
  741.       code unless overridden by <code>-fpic</code>,
  742.       <code>-fPIC</code>, <code>-fpie</code> or
  743.       <code>-fPIE</code>.</li>
  744.       <li><code>mipsisa32*-linux-gnu</code> configurations now generate
  745.       hard-float code by default, just like other <code>mipsisa32*</code>
  746.       and <code>mips*-linux-gnu</code> configurations.  You can
  747.       build a soft-float version of any <code>mips*-linux-gnu</code>
  748.       configuration by passing <code>--with-float=soft</code> to
  749.       <code>configure</code>.</li>
  750.       <li><code>mips-wrs-vxworks</code> now supports run-time processes
  751.       (RTPs).</li>
  752.     </ul>
  753.   <h4>Changes to existing command-line options</h4>
  754.     <ul>
  755.       <li>The <code>-march</code> and <code>-mtune</code> options no
  756.       longer accept <code>24k</code> as a processor name.  Please
  757.       use <code>24kc</code>, <code>24kf2_1</code> or
  758.       <code>24kf1_1</code> instead.</li>
  759.       <li>The <code>-march</code> and <code>-mtune</code> options now
  760.       accept <code>24kf2_1</code>, <code>24kef2_1</code> and
  761.       <code>34kf2_1</code> as synonyms for <code>24kf</code>,
  762.       <code>24kef</code> and <code>34kf</code> respectively.
  763.       The options also accept <code>24kf1_1</code>,
  764.       <code>24kef1_1</code> and <code>34kf1_1</code> as synonyms for
  765.       <code>24kx</code>, <code>24kex</code> and <code>34kx</code>.</li>
  766.     </ul>
  767.   <h4>New configurations</h4>
  768.     <p>GCC now supports the following configurations:</p>
  769.     <ul>
  770.       <li><code>mipsisa32r2*-linux-gnu*</code>, which generates MIPS32
  771.       revision 2 code by default.  Earlier releases also recognized
  772.       this configuration, but they treated it in the same way as
  773.       <code>mipsisa32*-linux-gnu*</code>.  Note that you can
  774.       customize any <code>mips*-linux-gnu*</code> configuration
  775.       to a particular ISA or processor by passing an appropriate
  776.       <code>--with-arch</code> option to <code>configure</code>.</li>
  777.       <li><code>mipsisa*-sde-elf*</code>, which provides compatibility
  778.       with MIPS Technologies' SDE toolchains.  The configuration
  779.       uses the SDE libraries by default, but you can use it like
  780.       other newlib-based ELF configurations by passing
  781.       <code>--with-newlib</code> to <code>configure</code>.  It is
  782.       the only configuration besides <code>mips64vr*-elf*</code> to
  783.       build MIPS16 as well as non-MIPS16 libraries.</li>
  784.       <li><code>mipsisa*-elfoabi*</code>, which is similar to the general
  785.       <code>mipsisa*-elf*</code> configuration, but uses the o32 and
  786.       o64 ABIs instead of the 32-bit and 64-bit forms of the EABI.</li>
  787.     </ul>
  788.   <h4>New processors and application-specific extensions</h4>
  789.     <ul>
  790.       <li>Support for the SmartMIPS ASE is available through the
  791.       new <code>-msmartmips</code> option.</li>
  792.       <li>Support for revision 2 of the DSP ASE is available through
  793.       the new <code>-mdspr2</code> option.  A new preprocessor macro
  794.       called <code>__mips_dsp_rev</code> indicates the revision of
  795.       the ASE in use.</li>
  796.       <li>Support for the 4KS and 74K families of processors is
  797.       available through the <code>-march</code> and <code>-mtune</code>
  798.       options.</li>
  799.     </ul>
  800.   <h4>Improved support for built-in functions</h4>
  801.     <ul>
  802.       <li>GCC can now use load-linked, store-conditional and
  803.       <code>sync</code> instructions to implement atomic built-in
  804.       functions such as <code>__sync_fetch_and_add</code>.  The
  805.       memory reference must be 4 bytes wide for 32-bit targets and
  806.       either 4 or 8 bytes wide for 64-bit targets.</li>
  807.       <li>GCC can now use the <code>clz</code> and <code>dclz</code>
  808.       instructions to implement the <code>__builtin_ctz</code> and
  809.       <code>__builtin_ffs</code> families of functions.</li>
  810.       <li>There is a new <code>__builtin___clear_cache</code> function
  811.       for flushing the instruction cache.  GCC expands this function
  812.       inline on MIPS32 revision 2 targets, otherwise it calls the
  813.       function specified by <code>-mcache-flush-func</code>.</li>
  814.     </ul>
  815.   <h4>MIPS16 improvements</h4>
  816.     <ul>
  817.       <li>GCC can now compile objects that contain a mixture of MIPS16
  818.       and non-MIPS16 code.  There are two new attributes,
  819.       <code>mips16</code> and <code>nomips16</code>, for specifying
  820.       which mode a function should use.</li>
  821.       <li>A new option called <code>-minterlink-mips16</code>
  822.       makes non-MIPS16 code link-compatible with MIPS16 code.</li>
  823.       <li>After many bug fixes, the long-standing MIPS16
  824.       <code>-mhard-float</code> support should now work fairly
  825.       reliably.</li>
  826.       <li>GCC can now use the MIPS16e <code>save</code> and
  827.       <code>restore</code> instructions.</li>
  828.       <li><code>-fsection-anchors</code> now works in MIPS16 mode.
  829.       MIPS16 code compiled with <code>-G0</code>
  830.       <code>-fsection-anchors</code> is often smaller than code
  831.       compiled with <code>-G8</code>.  However, please note that you
  832.       must usually compile all objects in your application with the
  833.       same <code>-G</code> option; see the documentation of
  834.       <code>-G</code> for details.</li>
  835.       <li>A new option called<code>-mcode-readable</code> specifies
  836.       which instructions are allowed to load from the code segment.
  837.       <code>-mcode-readable=yes</code> is the default and says that
  838.       any instruction may load from the code segment.  The other
  839.       alternatives are <code>-mcode-readable=pcrel</code>, which
  840.       says that only PC-relative MIPS16 instructions may load from
  841.       the code segment, and <code>-mcode-readable=no</code>, which
  842.       says that no instruction may do so.  Please see the
  843.       documentation for more details, including example uses.</li>
  844.     </ul>
  845.   <h4>Small-data improvements</h4>
  846.     <p>There are three new options for controlling small data:</p>
  847.     <ul>
  848.       <li><code>-mno-extern-sdata</code>, which disables small-data
  849.       accesses for externally-defined variables.  Code compiled
  850.       with <code>-Gn</code> <code>-mno-extern-sdata</code> will be
  851.       link-compatible with any <code>-G</code> setting between
  852.       <code>-G0</code> and <code>-Gn</code> inclusive.</li>
  853.       <li><code>-mno-local-sdata</code>, which disables the use of
  854.       small-data sections for data that is not externally visible.
  855.       This option can be a useful way of reducing small-data usage
  856.       in less performance-critical parts of an application.</li>
  857.       <li><code>-mno-gpopt</code>, which disables the use of the
  858.       <code>$gp</code> register while still honoring the
  859.       <code>-G</code> limit when placing externally-visible data.
  860.       This option implies <code>-mno-extern-sdata</code> and
  861.       <code>-mno-local-sdata</code> and it can be useful in
  862.       situations where <code>$gp</code> does not necessarily hold
  863.       the expected value.</li>
  864.     </ul>
  865.   <h4>Miscellaneous improvements</h4>
  866.     <ul>
  867.       <li>There is a new option called <code>-mbranch-cost</code>
  868.       for tweaking the perceived cost of branches.</li>
  869.       <li>If GCC is configured to use a version of GAS that supports
  870.       the <code>.gnu_attribute</code> directive, it will use that
  871.       directive to record certain properties of the output code.
  872.       <code>.gnu_attribute</code> is new to GAS 2.18.</li>
  873.       <li>There are two new function attributes, <code>near</code>
  874.       and <code>far</code>, for overriding the command-line setting
  875.       of <code>-mlong-calls</code> on a function-by-function
  876.       basis.</li>
  877.       <li><code>-mfp64</code>, which previously required a 64-bit target,
  878.       now works with MIPS32 revision 2 targets as well.  The
  879.       <code>mipsisa*-elfoabi*</code> and <code>mipsisa*-sde-elf*</code>
  880.       configurations provide suitable library support.</li>
  881.       <li>GCC now recognizes the <code>-mdmx</code> and <code>-mmt</code>
  882.       options and passes them down to the assembler.  It does nothing
  883.       else with the options at present.</li>
  884.     </ul>
  885.  
  886. <h3>SPU (Synergistic Processor Unit) of the Cell Broadband Engine
  887.     Architecture (BEA)</h3>
  888.   <ul>
  889.     <li>Support has been added for this new architecture.</li>
  890.   </ul>
  891.  
  892. <h3>RS6000 (POWER/PowerPC)</h3>
  893.   <ul>
  894.     <li>Support for the PowerPC 750CL paired-single instructions has
  895.         been added with a new <code>powerpc-*-linux*paired*</code> target
  896.         configuration.  It is enabled by an associated <code>-mpaired</code>
  897.         option and can be accessed using new built-in functions.</li>
  898.     <li>Support for auto-detecting architecture and system configuration
  899.         to auto-select processor optimization tuning.</li>
  900.     <li>Support for VMX on AIX 5.3 has been added.</li>
  901.     <li>Support for AIX Version 6.1 has been added.</li>
  902.   </ul>
  903.  
  904. <h3>S/390, zSeries and System z9</h3>
  905.   <ul>
  906.     <li>Support for the IBM System z9 EC/BC processor (z9 GA3) has
  907.         been added.  When using the <code>-march=z9-ec</code> option,
  908.         the compiler will generate code making use of instructions
  909.         provided by the decimal floating point facility and the
  910.         floating point conversion facility (pfpo).  Besides the
  911.         instructions used to implement decimal floating point
  912.         operations these facilities also contain instructions to move
  913.         between general purpose and floating point registers and to
  914.         modify and copy the sign-bit of floating point values.</li>
  915.     <li>When the <code>-march=z9-ec</code> option is used the new
  916.         <code>-mhard-dfp/-mno-hard-dfp</code> options can be used to
  917.         specify whether the decimal floating point hardware
  918.         instructions will be used or not.  If none of them is given
  919.         the hardware support is enabled by default.</li>
  920.     <li>The <code>-mstack-guard</code> option can now be omitted when
  921.         using stack checking via <code>-mstack-size</code> in order to
  922.         let GCC choose a sensible stack guard value according to the
  923.         frame size of each function.</li>
  924.     <li>Various changes to improve performance of generated code have been
  925.     implemented, including:
  926.       <ul>
  927.         <li>The condition code set by an add logical with carry
  928.             instruction is now available for overflow checks
  929.             like: <code>a + b + carry < b</code>.</li>
  930.         <li>The test data class instruction is now used to implement
  931.             sign-bit and infinity checks of binary and decimal floating
  932.             point numbers.</li>
  933.       </ul>
  934.     </li>
  935.  </ul>
  936.  
  937. <h3>Xtensa</h3>
  938.   <ul>
  939.     <li>Stack unwinding for exception handling now uses by default a
  940.     specialized version of DWARF unwinding.  This is not
  941.     binary-compatible with the setjmp/longjmp (sjlj) unwinding used 
  942.     for Xtensa with previous versions of GCC.</li>
  943.     <li>For Xtensa processors that include the Conditional Store option,
  944.     the built-in functions for atomic memory access are now implemented
  945.     using <code>S32C1I</code> instructions.</li>
  946.     <li>If the Xtensa NSA option is available, GCC will use it to implement
  947.     the <code>__builtin_ctz</code> and <code>__builtin_clz</code>
  948.     functions.</li>
  949.   </ul>
  950.  
  951.  
  952. <h2>Documentation improvements</h2>
  953.  
  954. <h2>Other significant improvements</h2>
  955.  
  956.   <ul>
  957.     <li><p>The compiler's <code>--help</code> command-line option has
  958.     been extended so that it now takes an optional set of arguments.
  959.     These arguments restrict the information displayed to specific
  960.     classes of command-line options, and possibly only a subset of
  961.     those options.  It is also now possible to replace the descriptive
  962.     text associated with each displayed option with an indication of
  963.     its current value, or for binary options, whether it has been
  964.     enabled or disabled.</p>
  965.  
  966.     <p>Here are some examples.  The following will display all the
  967.     options controlling warning messages:</p>
  968.     <pre>
  969.       --help=warnings
  970.     </pre>
  971.  
  972.     <p>Whereas this will display all the undocumented, target specific
  973.     options:</p>
  974.     <pre>
  975.       --help=target,undocumented
  976.     </pre>
  977.  
  978.     <p>This sequence of commands will display the binary
  979.     optimizations that are enabled by <code>-O3</code>:</p>
  980.     <pre>
  981.       gcc -c -Q -O3 --help=optimizers > /tmp/O3-opts
  982.       gcc -c -Q -O2 --help=optimizers > /tmp/O2-opts
  983.       diff /tmp/O2-opts /tmp/O3-opts | grep enabled
  984.     </pre>
  985.     </li>
  986.  
  987.     <li>The configure options <code>--with-pkgversion</code> and
  988.     <code>--with-bugurl</code> have been added.  These allow
  989.     distributors of GCC to include a distributor-specific string in
  990.     manuals and <code>--version</code> output and to specify the URL
  991.     for reporting bugs in their versions of GCC.</li>
  992.   </ul>
  993.  
  994.  
  995.  
  996.  
  997. <!-- ==================================================================== -->
  998.  
  999. <div class="copyright">
  1000.  
  1001. <p>Please send FSF & GNU inquiries & questions to
  1002. <a href="mailto:gnu@gnu.org">gnu@gnu.org</a>.
  1003. There are also <a href="http://www.gnu.org/home.html#ContactInfo">other ways
  1004. to contact</a> the FSF.</p>
  1005.  
  1006. <p>These pages are maintained by
  1007. <a href="http://gcc.gnu.org/about.html">the GCC team</a>.</p>
  1008.  
  1009. <address>For questions related to the use of GCC, please consult these web
  1010. pages and the <a href="http://gcc.gnu.org/onlinedocs/">GCC manuals</a>. If
  1011. that fails, the <a href="mailto:gcc-help@gcc.gnu.org">gcc-help@gcc.gnu.org</a>
  1012. mailing list might help.<br />
  1013. Please send comments on these web pages and the development of GCC to our
  1014. developer mailing list at <a href="mailto:gcc@gnu.org">gcc@gnu.org</a>
  1015. or <a href="mailto:gcc@gcc.gnu.org">gcc@gcc.gnu.org</a>.  All of our lists
  1016. have <a href="http://gcc.gnu.org/lists.html">public archives</a>.
  1017. </address>
  1018.  
  1019. <p>Copyright (C) Free Software Foundation, Inc.,
  1020. 51 Franklin St, Fifth Floor, Boston, MA 02110, USA.</p>
  1021. <p>Verbatim copying and distribution of this entire article is
  1022. permitted in any medium, provided this notice is preserved.</p>
  1023.  
  1024. <table width="100%" border="0"><tr><td>
  1025.   <!-- IGNORE DIFF -->Last modified 2008-02-28
  1026. </td><td align="right" valign="bottom">
  1027.   <a href="http://validator.w3.org/check/referer">
  1028.       <img src="http://www.w3.org/Icons/valid-xhtml10"
  1029.      alt="Valid XHTML 1.0" border="0" width="88" height="31" />
  1030.    
  1031.   </a>
  1032. </td></tr></table>
  1033.  
  1034. </div>
  1035.  
  1036. <!-- ==================================================================== -->
  1037.  
  1038. </body>
  1039.      </html>
  1040.   
  1041.  
  1042.