]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to a word boundary.
authorRichard Earnshaw <rearnsha@arm.com>
Thu, 22 Jan 2009 11:17:53 +0000 (11:17 +0000)
committerRichard Earnshaw <rearnsha@gcc.gnu.org>
Thu, 22 Jan 2009 11:17:53 +0000 (11:17 +0000)
* arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
a word boundary.
(LOCAL_ALIGNMENT): Similarly.

From-SVN: r143566

gcc/ChangeLog
gcc/config/arm/arm.h

index e503435cea003407811de4bceaba991912343ca1..e8855f387d9f92e89076ffbdd0916731f77b4224 100644 (file)
@@ -1,3 +1,9 @@
+2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
+
+       * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
+       a word boundary.
+       (LOCAL_ALIGNMENT): Similarly.
+
 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
             Joseph Myers  <joseph@codesourcery.com>
 
index f83aabac0386e20c7696c7c62d070b76e4d88125..fb636f3d5408b2840b749fe8969681e9e28efed7 100644 (file)
@@ -564,6 +564,19 @@ extern int arm_arch_hwdiv;
      && (ALIGN) < BITS_PER_WORD * CONSTANT_ALIGNMENT_FACTOR)   \
     ? BITS_PER_WORD * CONSTANT_ALIGNMENT_FACTOR : (ALIGN))
 
+/* Align definitions of arrays, unions and structures so that
+   initializations and copies can be made more efficient.  This is not
+   ABI-changing, so it only affects places where we can see the
+   definition.  */
+#define DATA_ALIGNMENT(EXP, ALIGN)                                     \
+  ((((ALIGN) < BITS_PER_WORD)                                           \
+    && (TREE_CODE (EXP) == ARRAY_TYPE                                  \
+       || TREE_CODE (EXP) == UNION_TYPE                                \
+       || TREE_CODE (EXP) == RECORD_TYPE)) ? BITS_PER_WORD : (ALIGN))
+
+/* Similarly, make sure that objects on the stack are sensibly aligned.  */
+#define LOCAL_ALIGNMENT(EXP, ALIGN) DATA_ALIGNMENT(EXP, ALIGN)
+
 /* Setting STRUCTURE_SIZE_BOUNDARY to 32 produces more efficient code, but the
    value set in previous versions of this toolchain was 8, which produces more
    compact structures.  The command line option -mstructure_size_boundary=<n>