<!-- This file contains a series of release note fragments processed
     by gnu-notes.  To add a note to it, use "gnu-notes -a
     $release_config gcc".  The TARGET line should contain a
     list of shell glob patterns for target names to which the note is
     relevant; it may be removed if it is relevant to all targets.
 -->

      <!-- UUID: 0e9787db-107b-4a17-8596-d6ffc29a7bf9 -->
      <!-- TARGET: mips* -->
      <formalpara>
        <title>MIPS 34Kn support</title>
        <para>
          &csl_sgxx; now includes support for MIPS 34Kn
          processors.  To compile for these processors,
          use <option>-march=34kn</option>. 
        </para>
      </formalpara>

      <!-- UUID: e074628f-5b49-41de-824d-f982f37a1bc2 -->
      <!-- TARGET: * -->
      <formalpara>
        <title>Static variables and inlining bug fix</title>
        <para>
          A bug in GCC that caused miscompilation of functions
          containing static variables when they were inlined
          at <option>-O2</option> or above has been fixed.  The bug also
          occurred at other optimization levels when
          the <option>-fremove-local-statics</option> command-line
          option was used.
        </para>
      </formalpara>

      <!-- UUID: 64a27807-de86-4a1e-92cf-6fbd8ae72f9b -->
      <!-- TARGET: mips-linux* -->
      <formalpara>
        <title>Compiler performance tuning</title>
        <para>
          Several compiler issues affecting benchmarking performance
	  relative to 4.3-204 have been corrected.
        </para>
      </formalpara>

      <!-- UUID: 0ebe4b85-c372-48e2-88b4-cdbd59e42ea8 -->
      <!-- TARGET: mips-linux* -->
      <formalpara>
        <title>Default setting for MIPS16 interlinking</title>
        <para>
	  MIPS16 interlinking is now disabled by default for
	  except when compiling for microMIPS.  Interlinking carries
	  a performance penalty and is only required for microMIPS
	  targets.
        </para>
      </formalpara>


      <!-- UUID: 53047f5e-f430-449d-a50f-c05f77bfb8d7 -->
      <!-- TARGET: mips* -->
      <formalpara>
        <title>microMIPS and MIPS16 diagnostic</title>
        <para>
          The compiler now reports an error 
	  if the options <option>-mmicromips</option> and
	  <option>-mips16</option> are both specified.
        </para>
      </formalpara>

      <!-- UUID: 3a5ee09e-73df-43d9-9c9c-f9f52c500219 -->
      <!-- TARGET: arm* -->
      <formalpara>
        <title>Stack corruption bug fix</title>
        <para>
          A bug in GCC has been fixed that caused stack corruption
	  in functions with the <code>interrupt</code> attribute.
        </para>
      </formalpara>

      <!-- UUID: 6a676d73-6ae8-43b5-815f-ab5b04079f42 -->
      <!-- TARGET: arm* -->
      <formalpara>
        <title>GCC bug fix for push multiple instruction generation</title>
        <para>
          A bug has been fixed that caused GCC to generate incorrect
	  push multiple instruction, causing an assembler warning
	  <literal>register range not in ascending order</literal>.
        </para>
      </formalpara>

      <!-- UUID: 6b37f9ae-2d11-4dfd-a965-565c7455cbab -->
      <!-- TARGET: arm* -->
      <formalpara features="armfloat">
        <title>GCC NEON bug fix</title>
        <para>
          A bug has been fixed that caused GCC to generate incorrect
	  assembly code when compiling for NEON.  The assembler reported
	  an error <literal>co-processor offset out of range</literal>
	  on such incorrect assembly code.
        </para>
      </formalpara>

      <!-- UUID: fd6e41b1-a0c1-4308-b951-f3bbeb2debf3 -->
      <!-- TARGET: powerpc-linux-gnu powerpc-elf -->
      <formalpara>
        <title>64-bit support</title>
        <para>
          &csl_prod; for &csl_target_name; now provides compiler and
          library support for 64-bit PowerPC processors.  The 64-bit
          runtime libraries are optimized for Freescale's e5500
          processor.  To enable 64-bit code generation, compile and link
          with
          <option>-m64</option>.
          <phrase components="eclipse_plugin">
            In the &csl_sgxx; IDE,
            choose <guilabel>e5500</guilabel> in the project
            properties dialog.
          </phrase>
          Note that code compiled with <option>-m64</option> is not
          ABI-compatible with 32-bit code.
          <phrase target-os="elf">
            CS3 does not yet provide board support for 64-bit targets.
          </phrase>
        </para>
      </formalpara>

      <!-- UUID: 2742b093-9e16-44a8-9404-773c99b2b8c1 -->
      <!-- TARGET: powerpc-linux-gnu -->
      <formalpara>
        <title>e500 static linking fix</title>
        <para>
          A bug that caused static linking to fail when linking objects
          containing floating-point code with <option>-te500v1</option>
          or <option>-te500v2</option> has been fixed.
        </para>
      </formalpara>

      <!-- UUID: b4a8b6e3-3daf-4e10-b3ea-241c4e67a3eb -->
      <!-- TARGET: arm*-* -->
      <formalpara>
        <title>Thumb-1 hard-float ABI error</title>
        <para>
	  The compiler now generates an error when
	  <option>-mfloat-abi=hard</option> is used with Thumb-1 code.
	  This combination is unsupported and previously caused the
	  compiler to crash.
        </para>
      </formalpara>

      <!-- UUID: f9f608aa-56f9-45bf-8889-ce287d20614d -->
      <!-- TARGET: arm-samsung-nucleuseabi -->
      <formalpara>
        <title>ABI and library changes</title>
        <para>
	  &csl_prod; for &csl_target_name; now has additional runtime
	  libraries:
	  <itemizedlist>
	    <listitem>ARMv5TE - Little-Endian, Soft-Float</listitem>
	    <listitem>ARMv5TE - Little-Endian, VFP</listitem>
	    <listitem>ARMv7-A Thumb-2 - Little-Endian, VFP</listitem>
	  </itemizedlist>
          The toolchain's single library is still provided,
	  but is not link-compatible with any of the above
	  libraries, as it uses the hard-float ABI.
        </para>
      </formalpara>

      <!-- UUID: cff4bb5c-21d7-4a5e-b9b5-4d3b075bbc36 -->
      <!-- TARGET: arm*-symbian* -->
      <formalpara>
        <title>Static writable data removed from the C++ runtime</title>
        <para>
	  The C++ runtime library (<filename>libsupc++.a</filename>)
	  no longer uses static writable data.
        </para>
      </formalpara>

      <!-- UUID: 0031e565-47c2-4197-afe3-874e99d288ed -->
      <!-- TARGET: powerpc-* -->
      <formalpara>
        <title>Support for AppliedMicro Titan (APM83xxx) cores</title>
        <para>
	  &csl_sgxx; has been enhanced to emit code optimized for AppliedMicro
	  Titan (APM83xxx) cores, selectable with
	  GCC's <option>-mcpu=titan</option> command-line option.
        </para>
      </formalpara>

      <!-- UUID: f6703562-33b9-4e67-be53-8c37bf88cc43 -->
      <!-- TARGET: arm*-symbian* -->
      <formalpara>
        <title>C++ runtime symbol visibility</title>
        <para>
	  A bug has been fixed that caused some symbols in the C++ runtime
	  library (<filename>libsupc++.a</filename>) to have incorrect
	  visibility attributes.
        </para>
      </formalpara>

      <!-- UUID: 6dfad7b6-ddb5-4db3-bd2c-1b64dca9ec4d -->
      <!-- TARGET: m68k* -->
      <formalpara>
        <title>Fix for <option>-fstack-protector</option> bug</title>
        <para>
          The compiler has been fixed to generate correct code when
	  <option>-fstack-protector</option> or
	  <option>-fstack-protector-all</option> is used.
        </para>
      </formalpara>

      <!-- UUID: c0cde89c-059a-477d-8cf9-571d6858c703 -->
      <!-- TARGET: * -->
      <formalpara>
        <title>Array bounds warning bug fix</title>
        <para>
          An optimizer bug has been fixed that caused GCC to incorrectly
	  report the warning <literal>array subscript is above array
	  bounds</literal>.
        </para>
      </formalpara>

      <!-- UUID: 481d548a-0e18-42b3-ad87-91928093b8a7 -->
      <!-- TARGET: * -->
      <formalpara>
	<title>Fix for invalid code generation bug</title>
	<para>
	  An optimizer bug has been fixed that caused GCC to emit incorrect
	  code for some programs involving casts of a <literal>struct</literal>
	  pointer to a pointer to the structure's first element.
	</para>
      </formalpara>

      <!-- UUID: 44172080-b495-4eb7-89bf-0cf4bc2a1c1c -->
      <!-- TARGET: arm-none-eabi arm-none-linux-gnueabi arm-none-symbianelf arm-uclinuxeabi -->
      <formalpara>
        <title>ARMv7-A performance improvements</title>
        <para>
	  The compiler has been enhanced to produce faster code for the
	  ARM architecture, particularly for ARMv7-A cores, when compiling
	  using the <option>-O2</option> option.  This results in a
	  significant improvement in performance relative to CodeSourcery's
	  2009q3 releases.
        </para>
      </formalpara>

      <!-- UUID: b1bc3def-9358-47ad-bb8f-cffe5da1b485 -->
      <!-- TARGET: arm-none-eabi arm-none-linux-gnueabi arm-none-symbianelf arm-uclinuxeabi -->
      <formalpara>
        <title>Improved code generation for Cortex-A5</title>
        <para>
          The compiler has been enhanced to provide instruction
          scheduling for Cortex-A5 cores.  To take advantage of this,
          use the <option>-mcpu=cortex-a5</option> command-line option.
        </para>
      </formalpara>

      <!-- UUID: b717d668-393f-4984-ae23-052eb6102560 -->
      <!-- TARGET: mips*-sde* -->
      <formalpara>
        <title>Optimized software floating-point routines</title>
        <para>
	  The software floating-point emulation routines used by GCC when
	  linking with <option>-msoft-float</option> have been updated.
	  The new routines provide significant speed increases.
        </para>
      </formalpara>

      <!-- UUID: 918e787b-d63d-4611-b7af-e114084a1164 -->
      <!-- TARGET: sh* -->
      <formalpara>
        <title>Internal compiler error fix</title>
        <para>
          A bug has been fixed that caused the compiler to crash
	  when compiling code using a large constant in a conditional
	  expression at <option>-O2</option> or higher
	  optimization levels.
        </para>
      </formalpara>

      <!-- UUID: f760b0ab-41cf-41d7-a2e0-6f6eadebf855 -->
      <!-- TARGET: arm* -->
      <formalpara>
        <title>C++ array initializer optimization</title>
        <para>
          The compiler now generates better code for some
	  non-constant array initializations in C++.
        </para>
      </formalpara>

      <!-- UUID: 8ead0635-77b8-4af7-86bb-c5d35e9acfcf -->
      <!-- TARGET: arm* -->
      <formalpara features="armfloat">
        <title>GCC inline assembly bug fixes</title>
        <para>
          A bug that caused NEON/VFP registers specified in the
	  clobber list of inline assembly statements to be saved
	  and restored incorrectly has been fixed.  Another bug
	  that caused incorrect code when double-precision or
	  quad-precision registers were specified in the clobber
	  list has also been fixed.
        </para>
      </formalpara>

      <!-- UUID: d254cbf2-fe8e-4d9c-abaf-094946d2cce3 -->
      <!-- TARGET: arm-none-eabi arm-none-linux-gnueabi arm-none-symbianelf arm-uclinuxeabi -->
      <formalpara>
        <title>Better use of NEON instructions on Cortex-A8</title>
        <para>
	  The compiler now generates better code when optimizing for the
	  Cortex-A8 by being less eager to use NEON instructions.
        </para>
      </formalpara>

      <!-- UUID: 7c04f8ce-3419-4e1b-99b9-e6d1d0a588bd -->
      <!-- TARGET: arm-none-eabi arm-none-linux-gnueabi arm-none-symbianelf arm-uclinuxeabi -->
      <formalpara>
        <title>Optimization of ARM NEON
	<function>vdupq_n*</function> intrinsics</title>
        <para>
          The compiler now generates better code for
	  <function>vdupq_n*</function> intrinsics to load
	  particular constants.
        </para>
      </formalpara>

      <!-- UUID: 293be974-3da3-432c-b1da-e21b95b26f3e -->
      <!-- TARGET: * -->
      <formalpara>
	<title>Improved code generation for <literal>if</literal> statements</title>
	<para>
	  The compiler can now generate better code for <literal>if</literal>
	  statements when the then and else clauses contain similar code.
	</para>
      </formalpara>

      <!-- UUID: 1088a2da-f08c-480c-823a-1596f9ef5518 -->
      <!-- TARGET: powerpc-linux-gnu powerpc-eabi -->
      <formalpara>
        <title>Optimized E500 software floating-point functions</title>
        <para>
          &csl_prod; now provides double-precision floating-point
          arithmetic libraries that are optimized for Freescale CPUs
          containing E500 cores, such as the 8540 and the 8548.  To use
          the optimized libraries in your application, link
          with <option>-te500v1</option> or <option>-te500v2</option>.
        </para>
      </formalpara>

       <!-- UUID: f5873792-76f0-477a-a3fe-da42c82823d3 -->
      <!-- TARGET: * -->
      <formalpara>
        <title>
	GCC internal compiler error with <code>optimize</code> attribute</title>
        <para>
          A bug has been fixed that caused the compiler to crash
	  when invoked with the <option>-O0</option> or
	  <option>-O1</option> option on code using the
	  <code>optimize</code> attribute to specify higher
	  optimization levels for individual functions. 
        </para>
      </formalpara>

      <!-- UUID: 5559e24f-e51e-4b63-8bb9-56bf903d0b7b -->
      <!-- TARGET: powerpc-* -->
      <formalpara>
        <title>IBM PowerPC 476 support</title>
        <para>
          &csl_sgxx; now includes support for IBM PowerPC 476
          processors.  To compile for these processors,
          use <option>-mcpu=476fp</option> for processors with
          hardware floating-point support
          and <option>-mcpu=476</option> for processors without
          hardware floating-point support.
        </para>
      </formalpara>

      <!-- UUID: fe6124be-8302-41dd-9d45-f404685398b5 -->
      <!-- TARGET: powerpc-* -->
      <formalpara>
        <title>Internal compiler error fix</title>
        <para>
          A bug has been fixed that caused the compiler to crash after
          issuing a warning
          <literal>function called through a non-compatible type</literal>.
          Such code has undefined behavior at runtime, but the
          compiler no longer crashes while processing it.
        </para>
      </formalpara>

      <!-- UUID: 769eba71-5d62-4e77-a011-036d52a8edbb -->
      <!-- TARGET: arm* -->
      <formalpara>
        <title>ARM internal compiler error fix</title>
        <para>
          A bug that caused the error <literal>internal compiler error:
	  in get_arm_condition_code</literal> when compiling code using
	  64-bit integers has been fixed.
        </para>
      </formalpara>

      <!-- UUID: da1abca5-0f09-4a6f-8a0a-3ce81590a309 -->
      <!-- TARGET: * -->
      <formalpara>
        <title>GCC internal compiler error</title>
        <para>
          A bug has been fixed that caused GCC to crash when
	  compiling some C++ code using templates at
	  <option>-O2</option> or <option>-O3</option>.
        </para>
      </formalpara>

      <!-- UUID: 06169b75-2491-4edb-8a61-48e1af722965 -->
      <!-- TARGET: arm* -->
      <formalpara features="armfloat">
        <title>Improved NEON code generation for 0.0 constants</title>
        <para>
          The compiler now generates better code for loading
	  double float 0.0 constants on processors supporting
	  NEON instructions.
        </para>
      </formalpara>

      <!-- UUID: 0fbcfecd-db20-435c-abfe-115bd75a807b -->
      <!-- TARGET: mips* -->
      <formalpara>
        <title>Incorrect code generation bug fix</title>
        <para>
          A bug in GCC has been fixed that resulted in incorrect
	  code for some <type>unsigned short</type> array accesses
	  when compiling with <option>-mdsp</option>.
        </para>
      </formalpara>

      <!-- UUID: dac2960f-f739-4dc6-86d3-8105d8d0749f -->
      <!-- TARGET: * -->
      <formalpara>
        <title>Debugging preprocessed source code</title>
        <para>
          A compiler bug has been fixed that caused debug output to
	  erroneously contain the name of the intermediate
	  preprocessed file.
        </para>
      </formalpara>

      <!-- UUID: 9b64a00e-21d1-416b-b15f-4087c398c021 -->
      <!-- TARGET: arm-none-eabi arm-uclinuxeabi -->
      <formalpara>
        <title>Support for ARM Cortex-M4 cores</title>
        <para>
	  &csl_sgxx; now includes support for ARM Cortex-M4 cores.
	  Use the <option>-mcpu=cortex-m4</option> command-line option.
        </para>
      </formalpara>

      <!-- UUID: ec0b2564-7646-4658-9ec8-4e42df3c72f2 -->
      <!-- TARGET: arm* -->
      <formalpara>
        <title>Thumb-2 size optimization improvements</title>
        <para>
          The compiler has been enhanced to produce smaller code for the
          ARM architecture, particularly for Thumb-2 mode, when compiling
          using the <option>-Os</option> option.  This results in a
          significant improvement in code size relative to CodeSourcery's
          2009q3 releases.
        </para>
      </formalpara>

      <!-- UUID: 1ce4c511-f492-4df8-ab4a-ffd3f43a0cb2 -->
      <!-- TARGET: powerpc* -->
      <formalpara>
        <title><option>-mblock-move-inline-limit</option> option added</title>
        <para>
          The compiler now supports
          the <option>-mblock-move-inline-limit</option> option.  This
          option enables you to specify the maximum size of block moves
          (such as calls to <function>memcpy</function> or structure
          copies) that should be inlined.
        </para>
      </formalpara>

      <!-- UUID: 988524cf-4405-49a9-81bf-4aef762939ff -->
      <!-- TARGET: powerpc* -->
      <formalpara>
        <title>Improved use of <literal>isel</literal> instruction</title>
        <para>
          When compiling for Freescale's E500 and QorIQ processors, the
          compiler now uses the <literal>isel</literal> instruction in
          sequences where the <literal>mfcr</literal> instruction was
          previously used.  This change permits the compiler to better
          schedule instructions for improved performance.
        </para>
      </formalpara>

      <!-- UUID: 307c288e-ae0c-4431-896a-d3afba7e836e -->
      <!-- TARGET: mips-linux* -->
      <formalpara>
        <title>Default generation of JALS instruction</title>
        <para>
	  The compiler now defaults to <option>-mno-jals</option>.
	  The microMIPS <literal>JALs</literal> instruction is not
	  compatible with the current implementation of
	  shared library support in the compiler. 
        </para>
      </formalpara>

      <!-- UUID: 6cd552e5-6c61-4304-8383-e63756c48673 -->
      <!-- TARGET: mips* -->
      <formalpara>
	<title>Support for microMIPS instruction encoding</title>
	<para>
	  &csl_prod; now supports the microMIPS instruction set
	  architecture.  To enable microMIPS code generation,
	  compile and link with <option>-mmicromips</option>.
	  <phrase components="eclipse_plugin">
	    In the &csl_sgxx; IDE, select <guilabel>microMIPS</guilabel>
	    from the <guilabel>Instruction Encoding</guilabel> project
	    properties option.
	  </phrase>
	</para>
      </formalpara>

      <!-- UUID: 07c22595-2fde-45c6-983e-4befce0308c8 -->
      <!-- TARGET: mips* -->
      <formalpara>
	<title>Support for MIPS M14K and M14Kc processors</title>
	<para>
	  &csl_prod; now supports the MIPS M14K and M14Kc processors.
	  To compile for these targets, use the
	  <option>-march=m14k -mmicromips</option>
	  command-line options.
	  <phrase features="cs3">
	    Additionally, CS3 board support is provided for the MIPS SEAD-3 LX50 and
	    LX110 boards which include these processors.
	    Refer to <xref linkend="chap-cs3"/> for more information about
	    boards supported by &csl_prod;.
	  </phrase>
	</para>
      </formalpara> 

      <!-- UUID: 4598582c-925e-40cc-b341-c0b5e1bf4597 -->
      <!-- TARGET: arm-none-eabi arm-none-linux-gnueabi arm-none-symbianelf arm-uclinuxeabi -->
      <formalpara>
        <title>Improved code generation for Cortex-A9</title>
        <para>
          The compiler has been enhanced to provide better instruction
          scheduling for Cortex-A9 cores.  To take advantage of this,
          use the <option>-mcpu=cortex-a9</option> command-line option.
        </para>
      </formalpara>

      <!-- UUID: ad0a635b-a2cb-4f84-a095-4f51e4518635 -->
      <!-- TARGET: arm* -->
      <formalpara>
        <title>Thumb-2 function call optimization</title>
        <para>
          The compiler has been enhanced to generate improved code
          on Thumb-2 targets for functions that return via calls to
          other functions.
        </para>
      </formalpara>

      <!-- UUID: ec7bcf40-79f3-4994-a226-3fb5c44deff9 -->
      <!-- TARGET: arm* -->
      <formalpara>
        <title>Thumb-2 multiply fix</title>
        <para>
          A bug that caused an invalid <code>muls</code> instruction
          to be generated in certain circumstances has been fixed. This
          affected code compiled for Thumb-2, and resulted in an error
          from the assembler.
        </para>
      </formalpara>

      <!-- UUID: b99bcbfb-8cb0-45c8-9918-f6dca65844dd -->
      <!-- TARGET: arm* -->
      <formalpara>
        <title>Thumb-2 internal compiler error fix</title>
        <para>
          A bug that caused an internal compiler error when building
          the QT library for Thumb-2 has been fixed.
        </para>
      </formalpara>

      <!-- UUID: 96b09111-8004-4168-8180-adc1a35f7f23 -->
      <!-- TARGET: powerpc-linux-gnu -->
      <formalpara>
        <title>Shorter function prologues with <option>-Os
        -fPIC</option></title>
        <para>
          GCC now generates shorter code sequences for function
          prologues when compiling with the options <option>-Os
          -fPIC</option>.  The shorter code sequences enable U-Boot to
          be compiled successfully.
        </para>
      </formalpara>

      <!-- UUID: c6744541-ca9a-4b8b-a64e-a6f2b8abb268 -->
      <!-- TARGET: arm-none-linux-gnueabi -->
      <formalpara>
        <title>Improved <function>backtrace</function> function</title>
        <para>
           The <function>backtrace</function> function can now
           backtrace through C++ exception regions and through
           functions marked <literal>throw()</literal>.
        </para>
      </formalpara>

      <!-- UUID: 0c7d55d7-14ae-4dc6-b17f-1a050e60140a -->
      <!-- TARGET: arm*-* -->
      <formalpara>
        <title>C++ name-mangling of <type>va_list</type></title>
        <para>
	  The compiler no longer issues <literal>the mangling of
	  'va_list' has changed</literal> warnings for references
	  to <type>std::va_list</type> within system header files.
        </para>
      </formalpara>

      <!-- UUID: 463dcbc5-dcae-46f9-b292-8171d3f426c7 -->
      <!-- TARGET: arm-* -->
      <formalpara features="armfloat">
        <title>Improved NEON code generation</title>
        <para>
          GCC's code generation for NEON targets
          (e.g., when compiling with <option>-mfpu=neon</option>)
          has been improved.
          In particular, the compiler can now make use of NEON
          instructions for many 64-bit integer operations.
        </para>
      </formalpara>

      <!-- UUID: 9d0c95f1-ca6e-4ef7-b0a2-5e3faf4f511f -->
      <!-- TARGET: mips*-sde* -->
      <formalpara>
        <title>Interrupt handler code generation bug fix</title>
        <para>
          A GCC bug has been fixed that caused an assembler warning for
          some functions marked with the <code>interrupt</code> attribute.
        </para>
      </formalpara>

      <!-- UUID: 6d0bfc2d-3b8f-4d56-9193-3866fb8d756d -->
      <!-- TARGET: m68k* fido* i686* mips* powerpc* sh* sparc* -->
      <formalpara>
        <title>Code size with <option>-g</option></title>
        <para>
          A bug that caused binary code size regressions in GCC 4.4
          when compiling with <option>-g</option> has been fixed.
        </para>
      </formalpara>

      <!-- UUID: 76a4242b-f5a1-4459-aec5-ae56827885c4 -->
      <!-- TARGET: arm-none-eabi arm-none-linux-gnueabi arm-none-symbianelf arm-uclinuxeabi -->
      <formalpara>
        <title>Indirect function call optimization</title>
        <para>
          The instruction sequence used to implement calls via a function
          pointer has been improved to give better branch-prediction
          performance on some processors.
        </para>
      </formalpara>

      <!-- UUID: 8e14046f-026c-4f51-b4b5-e989bab6e813 -->
      <!-- TARGET: * -->
      <formalpara>
        <title>Optimizer bug fix</title>
        <para>
          A bug in GCC that caused internal compiler errors
          at <option>-O2</option> or above has been fixed.  The bug also
          occurred at other optimization levels when
          the <option>-fpromote-loop-indices</option> command-line
          option was used.
        </para>
      </formalpara>

      <!-- UUID: f2c9451d-8510-44a5-ae20-cac085eac270 -->
      <!-- TARGET: m68k-*uclinux* -->
      <formalpara>
        <title><option>-pthread</option> compiler option fix</title>
        <para>
          <option>-pthread</option> option now makes GCC include the libpthread
	  library when invoking the linker.
        </para>
      </formalpara>

      <!-- UUID: ff4be5cb-5ed1-4bcb-aa12-77324a333313 -->
      <!-- TARGET: arm* -->
      <formalpara>
        <title>Internal compiler error fix</title>
        <para>
	  A bug that caused an internal compiler error when using
	  <option>-fno-omit-frame-pointer</option> to compile code for Thumb-2
	  has been fixed.
        </para>
      </formalpara>

      <!-- UUID: fe34ce3e-80bb-4c48-8ff0-4258c2d4c395 -->
      <!-- TARGET: m68k-*linux* -->
      <formalpara>
        <title>Tail call optimization bug fix</title>
        <para>
          A bug in GCC that caused functions with tail calls to
          be miscompiled at <option>-O2</option> or above has been
          fixed.
        </para>
      </formalpara>

      <!-- UUID: 1efbb5e2-e011-4277-889c-cfebbee85066 -->
      <!-- TARGET: arm*-* -->
      <formalpara>
        <title>Backtracing through noreturn functions</title>
        <para>
	  A compiler bug that made it impossible to obtain a backtrace
	  through functions declared with the <code>noreturn</code>
	  attribute has been fixed.  This fix makes it possible for the
	  debugger to present a useful stack backtrace for applications
	  that call <function>abort</function>.
        </para>
      </formalpara>

      <!-- UUID: 97e78cae-dfe9-4518-9575-a12e1c49ce2a -->
      <!-- TARGET: sh* -->
      <formalpara>
        <title>Thread-local storage in position-independent executables</title>
        <para>
          A bug has been fixed that caused internal compiler errors
          when using the <option>-fpie</option> or
          <option>-fPIE</option> options to compile programs with
          thread-local variables.
        </para>
      </formalpara>

      <!-- UUID: b050825a-db8b-41e9-aa89-2c70ffbf28ab -->
      <!-- TARGET: arm* -->
      <formalpara>
        <title>Out-of-range branch error</title>
        <para>
	  A compiler bug has been fixed that caused out-of-range branch errors
	  from the assembler. The bug only affected code compiled in Thumb-2
	  mode.
        </para>
      </formalpara>

      <!-- UUID: b8ce89c5-51c2-4667-a056-a20c8d409a27 -->
      <!-- TARGET: * -->
      <formalpara>
        <title>Optimizer bug fix</title>
        <para>
          A bug in GCC that caused functions with complex loop nests to
          be miscompiled at <option>-O2</option> or above has been
          fixed.  The bug also occurred at other optimization levels
          when the <option>-fpromote-loop-indices</option> command-line
          option was used.
        </para>
      </formalpara>

      <!-- UUID: b2162d26-31d0-4f4e-8d20-7ded2f67bce0 -->
      <!-- TARGET: * -->
      <formalpara>
        <title>Static variables and <literal>asm</literal>
          statements bug fix</title>
        <para>
          A bug in GCC that caused functions containing static variables
          and <literal>asm</literal> statements to be miscompiled
          at <option>-O2</option> or above has been fixed.  The bug also
          occurred at other optimization levels when
          the <option>-fremove-local-statics</option> command-line
          option was used.
        </para>
      </formalpara>

      <!-- UUID: 9824a405-6533-40c0-86b8-9fd6d97ad3fa -->
      <!-- TARGET: arm-none-eabi arm-none-linux-gnueabi arm-none-symbianelf arm-uclinuxeabi -->
      <formalpara>
        <title>Support for ARM Cortex-A5 cores</title>
        <para>
	  &csl_sgxx; now includes basic support for ARM Cortex-A5 cores.
	  Use the <option>-mcpu=cortex-a5</option> command-line option.
        </para>
      </formalpara>

      <!-- UUID: cedf1245-31c0-4b32-8093-8865336c7c3e -->
      <!-- TARGET: arm*-* -->
      <formalpara features="armfloat">
        <title>VFPv4 support</title>
        <para>
	  &csl_sgxx; now includes support for VFPv4, VFPv4-D16 and
	  NEON-VFPv4 coprocessors.  Use the <option>-mfpu=vfpv4</option>,
	  <option>-mfpu=vfpv4-d16</option> or 
	  <option>-mfpu=neon-vfpv4</option> options, respectively.
        </para>
      </formalpara>

      <!-- UUID: 3e0d10eb-2de3-49fe-846c-a6673e72fa9e -->
      <!-- TARGET: m68k-* -->
      <formalpara>
        <title>Stack unwinding bug fix</title>
        <para>
          A compiler bug that resulted in incorrect stack unwinding
	  information has been fixed.  The bug interfered with the
	  <command>next</command> and <command>finish</command> commands
	  when debugging, and could cause programs using C++
	  exception handling to crash.
        </para>
      </formalpara>

      <!-- UUID: ccb71b0d-af08-4124-8c96-aae2b4d814af -->
      <!-- TARGET: arm-none-linux-gnueabi -->
      <formalpara components="license">
        <title>Thumb-2 NEON runtime libraries</title>
        <para>
          &csl_sgxx; now supports Thumb-2 NEON runtime libraries,
          available to Professional Edition subscribers as add-ons.
        </para>
      </formalpara>

      <!-- UUID: 4dbdce6d-e7ed-44b5-85bb-cce37b53b0e9 -->
      <!-- TARGET: arm* -->
      <formalpara features="armfloat">
        <title>NEON improvements</title>
        <para>
          The compiler now generates improved NEON vector code when
	  copying memory or storing constants to memory using the
	  NEON coprocessor.
	  The compiler also generates better code for
	  accessing data arrays that are not known to have 64-bit alignment.
          In addition, a bug that caused internal compiler errors
          when compiling for Thumb-2 with NEON enabled has been fixed,
	  as has another bug that caused some vector shift NEON operations
	  to be wrongly rejected.
        </para>
      </formalpara>

      <!-- UUID: b883ed02-3d53-4180-b6fe-848639f914f3 -->
      <!-- TARGET: arm*-* -->
      <formalpara>
        <title>Warnings for naked functions</title>
        <para>
	  A compiler bug that resulted in incorrect warnings about
	  missing return statements in non-void functions declared with
	  the <code>naked</code> attribute has been fixed.
        </para>
      </formalpara>

      <!-- UUID: eba2e984-07bf-48c3-880b-c7d3b32b013a -->
      <!-- TARGET: * -->
      <formalpara>
        <title>GCC internal compiler error</title>
        <para>
          A bug has been fixed that caused the compiler to crash when
	  optimizing code that casts between structure types and the
	  type of the first field.
        </para>
      </formalpara>

      <!-- UUID: 35c4fcdb-49b5-4b9e-9292-a9cb05ff6133 -->
      <!-- TARGET: * -->
      <formalpara>
        <title><option>@<replaceable>FILE</replaceable></option> fix</title>
        <para>
          A bug has been fixed in the processing of
	  <option>@<replaceable>FILE</replaceable></option>
	  command-line options by GCC, GDB, and other tools.
	  The bug caused any options in
	  <replaceable>FILE</replaceable> following a blank line
	  to be ignored.
        </para>
      </formalpara>

      <!-- UUID: b4fe43c3-1522-4fdb-87d4-44dbb010a4b1 -->
      <!-- TARGET: arm-none-eabi arm-linux-gnueabi -->
      <formalpara>
        <title>ARMv5 multilib improvements</title>
        <para>
	  The ARMv5 runtime libraries are now compiled for ARMv5TE instead
	  of ARMv5T.  This allows them to take better advantage of features
	  present on most ARMv5 cores.  ARM1020T CPUs now use the ARMv4T
	  runtime libraries.
        </para>
      </formalpara>

      <!-- UUID: 80d080d0-9d30-438f-a877-735c191c30ec -->
      <!-- TARGET: arm*-* -->
      <formalpara features="armfloat">
	<title>Compiler errors with <type>float32_t</type></title>
        <para>
	  A bug has been fixed that caused compiler errors when using the
	  <type>float32_t</type> type from <filename>arm_neon.h</filename>.
        </para>
      </formalpara>

      <!-- UUID: 3a6ec7ca-129b-4bab-8244-c335e3cc4758 -->
      <!-- TARGET: * -->
      <formalpara>
        <title>Preprocessor error handling</title>
        <para>
	  The preprocessor now treats failing to find a file referenced
	  via <literal>#include</literal> as a fatal error.
	  <phrase components="eclipse_plugin">
	    Missing include files are now correctly reported in the
	    &csl_sgxx; IDE.
          </phrase>
        </para>
      </formalpara>

    <!-- UUID: a44c34ea-76d7-4c40-a493-e27f14566253 -->
      <!-- TARGET: arm*-* -->
      <formalpara>
        <title>VFP half-precision extensions</title>
        <para>
	  &csl_sgxx; now includes support for VFP coprocessors with
	  half-precision floating-point extensions.  This can be enabled
	  with the <option>-mfpu=vfpv3-d16-fp16</option> or
	  <option>-mfpu=vfpv3-fp16</option> command-line options.
        </para>
      </formalpara>

      <!-- UUID: e8d073a0-532e-4ba6-9c36-34c8bdcd5875 -->
      <!-- TARGET: * -->
      <formalpara>
	<title>Optimizer improvements</title>
	<para>
	  When optimizing for speed, the compiler now uses improved
	  heuristics to limit certain types of optimizations that may
	  adversely affect both code size and speed.  This change also
	  makes it possible to produce better code when optimizing for
	  space rather than speed.
	</para>
      </formalpara>

      <!-- UUID: 5ab95f47-d06b-48b7-8499-c2bd73a72a61 -->
      <!-- TARGET: m68k-*linux* -->
      <formalpara>
        <title>ColdFire MCF5441x support</title>
        <para>
          &csl_sgxx; now supports the Freescale MCF5441x (Modelo)
	  family of microprocessors.  To compile for these CPUs
	  use the <option>-mcpu=54410</option>, <option>-mcpu=54415</option>,
	  <option>-mcpu=54416</option>, <option>-mcpu=54417</option>, and
	  <option>-mcpu=54418</option> command-line options.
        </para>
      </formalpara>

      <!-- UUID: ebc1c587-e3d9-4272-a0e4-c70be1281524 -->
      <!-- TARGET: arm* -->
      <formalpara>
        <title>Improved optimization for Thumb-2</title>
        <para>
	  GCC now supports instruction scheduling for Thumb-2 code.
	  This optimization is enabled when compiling with
	  <option>-O2</option>, <option>-O3</option>, or
	  <option>-Os</option>, and can improve performance
	  substantially.
        </para>
      </formalpara>

      <!-- UUID: 46281ab8-dea0-4bca-ba64-f5b7171e565a -->
      <!-- TARGET: arm* -->
      <formalpara components="no-license">
        <title>Improved optimization for ARM</title>
        <para>
	  GCC now automatically enables loop unrolling and
	  <option>-fpromote-loop-indices</option> when
	  <option>-O2</option> or <option>-O3</option> is specified.
	  Loop unrolling is limited at <option>-O2</option> to
	  control code growth.  These changes improve performance by
	  more than 5%.
        </para>
      </formalpara>

      <!-- UUID: 55a6abc5-0cae-4d63-8654-ee125c5d9212 -->
      <!-- TARGET: mips* -->
      <formalpara>
        <title>Support for MIPS 1004K cores</title>
        <para>
	  &csl_sgxx; now includes basic compiler and assembler support
	  for MIPS 1004K cores.
	  Use the <option>-march=1004kc</option> (integer cores),
	  <option>-march=1004kf2_1</option> (half-speed FPU),
	  <option>-march=1004kf1_1</option> (full-speed FPU), or
	  <option>-march=1004kf</option> (alias for <option>1004kf2_1</option>)
	  command-line options.
        </para>
      </formalpara>

      <!-- UUID: bb2c3ef6-f7b8-47e2-b812-1ce825451db3 -->
      <!-- TARGET: * -->
      <formalpara>
        <title><option>-fremove-local-statics</option>
        optimization</title>
        <para>
          The <option>-fremove-local-statics</option> optimization is
          now enabled by default at <option>-O2</option> and higher
          optimization levels.
        </para>
      </formalpara>

      <!-- UUID: 908037a3-598c-4418-beff-a4e51ef99172 -->
      <!-- TARGET: i686-mingw32 -->
      <formalpara>
        <title>MinGW update</title>
        <para>
          The included MinGW Runtime has been updated to version
          3.15.2.
        </para>
      </formalpara>

      <!-- UUID: 392cf9d0-4afb-4bc4-b4fd-c05800bce3ea -->
      <!-- TARGET: arm-none-eabi -->
      <formalpara components="license">
        <title>VFP runtime libraries</title>
        <para>
	  The <quote>ARMv4 - Little-Endian, VFP</quote> add-on library has
	  been removed from &csl_prod; as it is fully redundant with the
	  <quote>ARMv5T - Little-Endian, VFP</quote> library.
          The <quote>ARMv4 - Big-Endian, VFP</quote> add-on library has
	  been replaced with <quote>ARMv5T - Big-Endian, VFP</quote> for
	  similar reasons.  These add-on libraries are available to
	  Professional Edition subscribers
        </para>
      </formalpara>

      <!-- UUID: b3b67f27-9f2e-4b6a-b013-4810e975be75 -->
      <!-- TARGET: arm-*eabi -->
      <formalpara>
        <title>C++ exception matching</title>
        <para>
          A C++ conformance defect has been fixed.  According to
          clause 15.3 of the standard, given a derived class
          <type>D</type> with base <type>B</type>, a thrown <type>D
          *</type> object is not caught by a handler with type <type>B
          *&amp;</type> (that is, a reference to pointer <type>B</type>).
          The compiler formerly treated this case incorrectly as if
          the handler had type <type>B *</type>, which does catch
          <type>D *</type>.
        </para>
      </formalpara>

      <!-- UUID: 5b62c486-a3ac-428a-a102-b589930c2aca -->
      <!-- TARGET: m68k*-* -->
      <formalpara>
        <title>Code generation for string literals</title>
        <para>
	  A defect in the generation of code for string literals has
	  been corrected.  Multiple occurrences of the same string
	  literal in the same file sometimes resulted in incorrect code.
        </para>
      </formalpara>

      <!-- UUID: cab1da50-0e35-4820-8712-3e9665b86f04 -->
      <!-- TARGET: * -->
      <formalpara>
        <title>Vectorizer improvements</title>
        <para>
	  The compiler now generates improved code for accesses to static
	  nested array variables
	  (e.g. <literal>static int foo[8][8];</literal>).
        </para>
      </formalpara>

      <!-- UUID: 09609326-b687-4211-a939-8ec2fd3ab784 -->
      <!-- TARGET: sh*-* -->
      <formalpara>
        <title>R0_REGS spill failure</title>
        <para>
	  A bug that caused the compiler to fail with <literal>unable
	  to find a register to spill in class 'R0_REGS'</literal>
	  errors has been fixed.
        </para>
      </formalpara>

      <!-- UUID: 849eb470-0ede-4f81-b861-9381a289b740 -->
      <!-- TARGET: arm*-* -->
      <formalpara>
        <title>Debug information for variadic functions</title>
        <para>
	  A compiler bug that resulted in incorrect debug information for
	  functions with variable arguments has been fixed.
        </para>
      </formalpara>

      <!-- UUID: 3bb0b57f-6669-4843-91b0-81b6069e3d81 -->
      <!-- TARGET: arm*-* -->
      <formalpara>
        <title>Out-of-range branch errors</title>
        <para>
	  A Thumb-2 code generation defect in the compiler that caused
          <literal>branch out of range</literal> errors from the
	  assembler has been eliminated.
        </para>
      </formalpara>

      <!-- UUID: a45649b5-9e7a-4fbb-925c-50d047b8ab4d -->
      <!-- TARGET: * -->
      <formalpara>
        <title>Register variable corruption</title>
        <para>
          A compiler bug has been fixed that caused incorrect code to be
          generated when the frame pointer or other special-use registers
          are used as explicit local register variables, introduced via the
          <literal>asm</literal> keyword on their declarations.
        </para>
      </formalpara>

      <!-- UUID: c5c021e9-3ae5-44fa-9296-8e8eae7d0cca -->
      <formalpara>
        <title>
	 Elimination of spurious warnings about <constant>NULL</constant>
        </title>
        <para>
	  The C++ compiler no longer issues spurious warnings about
	  comparisons between pointers to members and
	  <constant>NULL</constant>.
        </para>
      </formalpara>

      <!-- UUID: a2078a7e-b7b5-4f53-8ff0-d107f79cd95f -->
      <!-- TARGET: arm*-* -->
      <formalpara>
	<title>Code generation improvements</title>
	<para>
	  The compiler has been changed to make better use of VFP
	  registers in mixed integer and floating-point code, resulting
	  in faster code.
	</para>
      </formalpara>

      <!-- UUID: 3a50a31c-f860-4dc8-8426-d8792e0f3846 -->
      <!-- TARGET: arm* -->
      <formalpara>
        <title>Improved bit counting operation</title>
        <para>
          The <function>__builtin_ctz</function> built-in function,
          which returns the number of trailing zero bits in a value,
          has been improved to use a shorter instruction sequence for
          ARMv6T2 and later.
        </para>
      </formalpara>

      <!-- UUID: cc152709-672d-42cd-8862-e93c545c5f86 -->
      <!-- TARGET: mips*-sde* -->
      <formalpara>
        <title>Function attributes to support interrupt handling</title>
        <para>
	  Support for the <code>interrupt</code> attribute has been 
	  implemented.  <code>use_debug_exception</code>,
	  <code>keep_interrupts_masked</code>, and
	  <code>use_shadow_register_set</code> have also been
	  implemented.  These are attributes which can be used to
	  modify the behavior of the interrupt handler.  For more
	  information on how to use these attributes, please refer
	  to the GCC manual.
        </para>
      </formalpara>

      <!-- UUID: eec5da73-c507-4374-a7fd-9b7653579906 -->
      <!-- TARGET: * -->
      <formalpara>
        <title>GCC version 4.4.1</title>
        <para>
          &csl_prod; for &csl_target_name; is now based on GCC version 4.4.1.
          For more information about changes from GCC version 4.3 that was
          included in previous releases, see
          <uri>http://gcc.gnu.org/gcc-4.4/changes.html</uri>.
        </para>
      </formalpara>

<!-- Release notes end here.  -->
