diff options
Diffstat (limited to 'meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99415.patch')
-rw-r--r-- | meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99415.patch | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99415.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99415.patch new file mode 100644 index 0000000..3622ac4 --- /dev/null +++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99415.patch @@ -0,0 +1,46 @@ +2010-10-13 Chung-Lin Tang <cltang@codesourcery.com> + + Issue #8615 + + Backport from mainline: + + 2010-10-12 Chung-Lin Tang <cltang@codesourcery.com> + + gcc/ + * config/arm/arm.h (ARM_EXPAND_ALIGNMENT): Rename from + DATA_ALIGNMENT and add COND parameter. Update comments above. + (DATA_ALIGNMENT): Use ARM_EXPAND_ALIGNMENT, with !optimize_size. + (LOCAL_ALIGNMENT): Use ARM_EXPAND_ALIGNMENT, with + !flag_conserve_stack. + +=== modified file 'gcc/config/arm/arm.h' +Index: gcc-4.5/gcc/config/arm/arm.h +=================================================================== +--- gcc-4.5.orig/gcc/config/arm/arm.h ++++ gcc-4.5/gcc/config/arm/arm.h +@@ -596,15 +596,21 @@ extern int low_irq_latency; + /* 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) \ ++ definition. Increasing the alignment tends to introduce padding, ++ so don't do this when optimizing for size/conserving stack space. */ ++#define ARM_EXPAND_ALIGNMENT(COND, EXP, ALIGN) \ ++ (((COND) && ((ALIGN) < BITS_PER_WORD) \ + && (TREE_CODE (EXP) == ARRAY_TYPE \ + || TREE_CODE (EXP) == UNION_TYPE \ + || TREE_CODE (EXP) == RECORD_TYPE)) ? BITS_PER_WORD : (ALIGN)) + ++/* Align global data. */ ++#define DATA_ALIGNMENT(EXP, ALIGN) \ ++ ARM_EXPAND_ALIGNMENT(!optimize_size, EXP, ALIGN) ++ + /* Similarly, make sure that objects on the stack are sensibly aligned. */ +-#define LOCAL_ALIGNMENT(EXP, ALIGN) DATA_ALIGNMENT(EXP, ALIGN) ++#define LOCAL_ALIGNMENT(EXP, ALIGN) \ ++ ARM_EXPAND_ALIGNMENT(!flag_conserve_stack, 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 |