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
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