(CC to ARM maintainer approving the original patch.)
I'm listing this under "caveats" rather than "improvements" and
before the current top ARM-related caveat (as this one is more
important :) because I don't see performance figures in the
context of the original patch (r178852) backing up this as an
improvement, and it caused sort-of a wild goose hunt for
applications causing unaligned accesses, until it was found to be
deliberately emitted by gcc-4.7 when configured for
arm-unknown-linux-gnueabi and passing "-marmv6". Hence caveat.
Nomenclature taken from that patch; if prefer a different
spelling of the ARM variants, please tell how. The "some source
codes" was in the analyzed case a strcpy of a five-byte string
(busybox/libbb/procps.c:365 'strcpy(filename_tail, "stat");' of
some unknown busybox-version).
An OS configured with unaligned accesses turned off (IIUC the
default for Linux/ARM), has the nice property that you easily
spot a certain class of bad codes.
Ok to commit?
Alternatively and IMHO preferably, there's reason enough to
revert the (new) default, including the gcc-4.7 branch.
Index: changes.html
===================================================================
RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-4.7/changes.html,v
retrieving revision 1.113
diff -p -u -r1.113 changes.html
--- changes.html 5 Jun 2012 11:03:53 -0000 1.113
+++ changes.html 8 Jun 2012 00:01:09 -0000
@@ -43,6 +43,16 @@
</li>
+ <li>On ARM, when compiling for ARMv6 (but not ARMv6-M), ARMv7-A,
+ ARMv7-R, or ARMv7-M, the default of the new option
+ <code>-munaligned-accesses</code> is on, which for some source
+ codes generates code that accesses memory on unaligned adresses.
+ This will require the OS of those systems to enable such accesses
+ (controlled by CP15 register c1, refer to ARM documentation).
+ Alternatively or for compatibility with OS versions that do not
+ enable unaligned accesses, all codes has to be compiled with
+ <code>-mno-unaligned-accesses</code>.</li>
+
<li>Support on ARM for the legacy floating-point accelerator (FPA) and
the mixed-endian floating-point format that it used has been obsoleted.
The ports that still use this format have been obsoleted as well.
brgds, H-P