From: Richard Earnshaw Date: Thu, 22 Jan 2009 11:17:53 +0000 (+0000) Subject: arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to a word boundary. X-Git-Tag: releases/gcc-4.4.0~774 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=963392680fda9affbde3be6ce9c1465c1c732e90;p=thirdparty%2Fgcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e503435cea00..e8855f387d9f 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 f83aabac0386..fb636f3d5408 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=