?

Log in

No account? Create an account

Previous Entry | Next Entry

March 2012 GNU Toolchain Update

Hi Guys,

  Well quite a lot has happened in the last month.  First off, GCC 4.7 is now officially out.  (So are GCC 4.4.7 and 4.6.3 if these versions matter to you).

  Next the assembler has had a new feature added to support grouping together a sequence of instructions into a bundle:

    .bundle_align_mode <abs-expr>
   
    .bundle_align_mode enables or disables aligned instruction
    bundle
mode.  In this mode, sequences of adjacent instructions
    are grouped into fixed-sized bundles.  If the argument is zero,
    this mode is disabled (which is the default state).  If the
    argument it not zero, it gives the size of an instruction bundle
    as a power of two.

    For some targets, it's an ABI requirement that no instruction
    may span a certain aligned boundary.  A bundle is thus a
    sequence of instructions that starts on an aligned boundary.

    When bundle_align_mode is in effect, no single instruction may
    span a boundary between bundles.  If an instruction would start
    too close to the end of a bundle to meet this requirement then
    the space at the end of that bundle is filled with no-ops and
    the instruction is placed at the start of the next bundle.  As
    a corollary, it's an error if any single instruction's encoding
    is longer than the bundle size.

    .bundle_lock
    .bundle_unlock


    For some targets, it's an ABI requirement that certain
    instructions may appear only as part of specified permissible
    sequences of multiple instructions, all within the same bundle.
    A pair of .bundle_lock and .bundle_unlock directives define a
    locked instruction sequence.  For purposes of bundle_align_mode
    a sequence starting with .bundle_lock and ending with
    .bundle_unlock is treated as a single instruction.


  In GCC land a new warning option has been added:

    -Wuseless-cast

    Warn when an expression is casted to its own type.

  As well as a G++ option to limit the number of messages generated when issuing diagnostics about templates:

    -ftemplate-backtrace-limit=<n>

    Set the maximum number of template instantiation
    notes for a single warning or error to <n>.  The default
    value is 10.

  Also GCC has now started to add (experimental) support for the forthcoming ISO 2017 C++ standard:

    -std=c++1y

    Conform to the ISO 201y(7?) C++ draft standard.

    -std=gnu++1y
   
    Conform to the ISO 201y(7?) C++ draft standard with GNU extensions.


   Finally some older ARM targets have now been marked as obsolete.  Support for these targets will be entirely removed after the next release of GCC:

     arm*-*-ecos-elf   
     arm*-*-elf       
     arm*-*-freebsd*   
     arm*-*-linux*   
     arm*-*-rtems*   
     arm*-*-uclinux*   
     arm*-wince-pe*


  (Note before any ARM Linux people panic, the official target for ARM Linux toolchains is now arm-*-linux-gnueabi or arm-*-uclinux-gnueabi.  These particular configurations have not been deprecated).  Also the --with-fpu=fpa, --with-fpu=fpe2, --with-fpu=fpe3 and --with-fpu=maverick configuration options for ARM toolchains have now been deprecated as well.
 
Cheers
  Nick

Comments

( 1 comment — Leave a comment )
petdance
Mar. 28th, 2012 04:54 am (UTC)
-Wuseless-cast is fantastic. I've been going through the Parrot project removing unnecessary casts. Thanks!
( 1 comment — Leave a comment )

Profile

Deep Thought
nickclifton
nickclifton

Latest Month

November 2015
S M T W T F S
1234567
891011121314
15161718192021
22232425262728
2930     

Page Summary

Powered by LiveJournal.com
Designed by chasethestars