diff options
Diffstat (limited to 'recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99415.patch')
| -rw-r--r-- | recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99415.patch | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99415.patch b/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99415.patch new file mode 100644 index 0000000000..3622ac4238 --- /dev/null +++ b/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99415.patch | |||
| @@ -0,0 +1,46 @@ | |||
| 1 | 2010-10-13 Chung-Lin Tang <cltang@codesourcery.com> | ||
| 2 | |||
| 3 | Issue #8615 | ||
| 4 | |||
| 5 | Backport from mainline: | ||
| 6 | |||
| 7 | 2010-10-12 Chung-Lin Tang <cltang@codesourcery.com> | ||
| 8 | |||
| 9 | gcc/ | ||
| 10 | * config/arm/arm.h (ARM_EXPAND_ALIGNMENT): Rename from | ||
| 11 | DATA_ALIGNMENT and add COND parameter. Update comments above. | ||
| 12 | (DATA_ALIGNMENT): Use ARM_EXPAND_ALIGNMENT, with !optimize_size. | ||
| 13 | (LOCAL_ALIGNMENT): Use ARM_EXPAND_ALIGNMENT, with | ||
| 14 | !flag_conserve_stack. | ||
| 15 | |||
| 16 | === modified file 'gcc/config/arm/arm.h' | ||
| 17 | Index: gcc-4.5/gcc/config/arm/arm.h | ||
| 18 | =================================================================== | ||
| 19 | --- gcc-4.5.orig/gcc/config/arm/arm.h | ||
| 20 | +++ gcc-4.5/gcc/config/arm/arm.h | ||
| 21 | @@ -596,15 +596,21 @@ extern int low_irq_latency; | ||
| 22 | /* Align definitions of arrays, unions and structures so that | ||
| 23 | initializations and copies can be made more efficient. This is not | ||
| 24 | ABI-changing, so it only affects places where we can see the | ||
| 25 | - definition. */ | ||
| 26 | -#define DATA_ALIGNMENT(EXP, ALIGN) \ | ||
| 27 | - ((((ALIGN) < BITS_PER_WORD) \ | ||
| 28 | + definition. Increasing the alignment tends to introduce padding, | ||
| 29 | + so don't do this when optimizing for size/conserving stack space. */ | ||
| 30 | +#define ARM_EXPAND_ALIGNMENT(COND, EXP, ALIGN) \ | ||
| 31 | + (((COND) && ((ALIGN) < BITS_PER_WORD) \ | ||
| 32 | && (TREE_CODE (EXP) == ARRAY_TYPE \ | ||
| 33 | || TREE_CODE (EXP) == UNION_TYPE \ | ||
| 34 | || TREE_CODE (EXP) == RECORD_TYPE)) ? BITS_PER_WORD : (ALIGN)) | ||
| 35 | |||
| 36 | +/* Align global data. */ | ||
| 37 | +#define DATA_ALIGNMENT(EXP, ALIGN) \ | ||
| 38 | + ARM_EXPAND_ALIGNMENT(!optimize_size, EXP, ALIGN) | ||
| 39 | + | ||
| 40 | /* Similarly, make sure that objects on the stack are sensibly aligned. */ | ||
| 41 | -#define LOCAL_ALIGNMENT(EXP, ALIGN) DATA_ALIGNMENT(EXP, ALIGN) | ||
| 42 | +#define LOCAL_ALIGNMENT(EXP, ALIGN) \ | ||
| 43 | + ARM_EXPAND_ALIGNMENT(!flag_conserve_stack, EXP, ALIGN) | ||
| 44 | |||
| 45 | /* Setting STRUCTURE_SIZE_BOUNDARY to 32 produces more efficient code, but the | ||
| 46 | value set in previous versions of this toolchain was 8, which produces more | ||
