(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