From 963392680fda9affbde3be6ce9c1465c1c732e90 Mon Sep 17 00:00:00 2001 From: Richard Earnshaw Date: Thu, 22 Jan 2009 11:17:53 +0000 Subject: arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to a word boundary. * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to a word boundary. (LOCAL_ALIGNMENT): Similarly. From-SVN: r143566 --- gcc/ChangeLog | 6 ++++++ gcc/config/arm/arm.h | 13 +++++++++++++ 2 files changed, 19 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e503435..e8855f3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2009-01-22 Richard Earnshaw + + * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to + a word boundary. + (LOCAL_ALIGNMENT): Similarly. + 2009-01-22 Mark Shinwell Joseph Myers diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h index f83aaba..fb636f3 100644 --- a/gcc/config/arm/arm.h +++ b/gcc/config/arm/arm.h @@ -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= -- cgit v1.1