diff options
Diffstat (limited to 'toolchain-layer/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99521.patch')
-rw-r--r-- | toolchain-layer/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99521.patch | 166 |
1 files changed, 0 insertions, 166 deletions
diff --git a/toolchain-layer/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99521.patch b/toolchain-layer/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99521.patch deleted file mode 100644 index 6d2d75bf91..0000000000 --- a/toolchain-layer/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99521.patch +++ /dev/null @@ -1,166 +0,0 @@ -2011-07-08 Richard Sandiford <rdsandiford@googlemail.com> - - gcc/ - * builtins.c (get_object_alignment): Fix comment. - * fold-const.c (get_pointer_modulus_and_residue): Remove - allow_func_align. Use get_object_alignment. - (fold_binary_loc): Update caller. - -2011-07-08 Richard Sandiford <rdsandiford@googlemail.com> - - gcc/ - Backport from mainline: - - 2011-06-29 Richard Sandiford <richard.sandiford@linaro.org> - - PR tree-optimization/49545 - * builtins.c (get_object_alignment_1): Update function comment. - Do not use DECL_ALIGN for functions, but test - TARGET_PTRMEMFUNC_VBIT_LOCATION instead. - * fold-const.c (get_pointer_modulus_and_residue): Don't check - for functions here. - - gcc/testsuite/ - Backport from mainline: - - 2011-06-29 Richard Sandiford <richard.sandiford@linaro.org> - - * gcc.dg/torture/pr49169.c: Restrict to ARM and MIPS targets. - -2011-07-08 Richard Sandiford <richard.sandiford@linaro.org> - - gcc/ - Backport from mainline: - - 2011-07-27 Richard Guenther <rguenther@suse.de> - - PR tree-optimization/49169 - * fold-const.c (get_pointer_modulus_and_residue): Don't rely on - the alignment of function decls. - - gcc/testsuite/ - Backport from mainline: - - 2011-07-27 Michael Hope <michael.hope@linaro.org> - Richard Sandiford <richard.sandiford@linaro.org> - - PR tree-optimization/49169 - * gcc.dg/torture/pr49169.c: New test. - -=== modified file 'gcc/builtins.c' ---- old/gcc/builtins.c 2011-01-06 11:02:44 +0000 -+++ new/gcc/builtins.c 2011-06-29 09:59:48 +0000 -@@ -263,7 +263,14 @@ - - /* Return the alignment in bits of EXP, an object. - Don't return more than MAX_ALIGN no matter what, ALIGN is the inital -- guessed alignment e.g. from type alignment. */ -+ guessed alignment e.g. from type alignment. -+ -+ Note that the address (and thus the alignment) computed here is based -+ on the address to which a symbol resolves, whereas DECL_ALIGN is based -+ on the address at which an object is actually located. These two -+ addresses are not always the same. For example, on ARM targets, -+ the address &foo of a Thumb function foo() has the lowest bit set, -+ whereas foo() itself starts on an even address. */ - - int - get_object_alignment (tree exp, unsigned int align, unsigned int max_align) -@@ -327,7 +334,21 @@ - exp = DECL_INITIAL (exp); - if (DECL_P (exp) - && TREE_CODE (exp) != LABEL_DECL) -- align = MIN (inner, DECL_ALIGN (exp)); -+ { -+ if (TREE_CODE (exp) == FUNCTION_DECL) -+ { -+ /* Function addresses can encode extra information besides their -+ alignment. However, if TARGET_PTRMEMFUNC_VBIT_LOCATION -+ allows the low bit to be used as a virtual bit, we know -+ that the address itself must be 2-byte aligned. */ -+ if (TARGET_PTRMEMFUNC_VBIT_LOCATION == ptrmemfunc_vbit_in_pfn) -+ align = 2 * BITS_PER_UNIT; -+ else -+ align = BITS_PER_UNIT; -+ } -+ else -+ align = MIN (inner, DECL_ALIGN (exp)); -+ } - #ifdef CONSTANT_ALIGNMENT - else if (CONSTANT_CLASS_P (exp)) - align = MIN (inner, (unsigned)CONSTANT_ALIGNMENT (exp, align)); - -=== modified file 'gcc/fold-const.c' ---- old/gcc/fold-const.c 2011-05-05 14:28:53 +0000 -+++ new/gcc/fold-const.c 2011-07-08 12:54:44 +0000 -@@ -10030,15 +10030,10 @@ - 0 <= N < M as is common. In general, the precise value of P is unknown. - M is chosen as large as possible such that constant N can be determined. - -- Returns M and sets *RESIDUE to N. -- -- If ALLOW_FUNC_ALIGN is true, do take functions' DECL_ALIGN_UNIT into -- account. This is not always possible due to PR 35705. -- */ -+ Returns M and sets *RESIDUE to N. */ - - static unsigned HOST_WIDE_INT --get_pointer_modulus_and_residue (tree expr, unsigned HOST_WIDE_INT *residue, -- bool allow_func_align) -+get_pointer_modulus_and_residue (tree expr, unsigned HOST_WIDE_INT *residue) - { - enum tree_code code; - -@@ -10068,9 +10063,8 @@ - } - } - -- if (DECL_P (expr) -- && (allow_func_align || TREE_CODE (expr) != FUNCTION_DECL)) -- return DECL_ALIGN_UNIT (expr); -+ if (DECL_P (expr)) -+ return get_object_alignment (expr, BITS_PER_UNIT, ~0U) / BITS_PER_UNIT; - } - else if (code == POINTER_PLUS_EXPR) - { -@@ -10080,8 +10074,7 @@ - - op0 = TREE_OPERAND (expr, 0); - STRIP_NOPS (op0); -- modulus = get_pointer_modulus_and_residue (op0, residue, -- allow_func_align); -+ modulus = get_pointer_modulus_and_residue (op0, residue); - - op1 = TREE_OPERAND (expr, 1); - STRIP_NOPS (op1); -@@ -11801,8 +11794,7 @@ - unsigned HOST_WIDE_INT modulus, residue; - unsigned HOST_WIDE_INT low = TREE_INT_CST_LOW (arg1); - -- modulus = get_pointer_modulus_and_residue (arg0, &residue, -- integer_onep (arg1)); -+ modulus = get_pointer_modulus_and_residue (arg0, &residue); - - /* This works because modulus is a power of 2. If this weren't the - case, we'd have to replace it by its greatest power-of-2 - -=== added file 'gcc/testsuite/gcc.dg/torture/pr49169.c' ---- old/gcc/testsuite/gcc.dg/torture/pr49169.c 1970-01-01 00:00:00 +0000 -+++ new/gcc/testsuite/gcc.dg/torture/pr49169.c 2011-06-29 09:59:48 +0000 -@@ -0,0 +1,15 @@ -+/* { dg-do compile { target { arm*-*-* || mips*-*-* } } } */ -+ -+#include <stdlib.h> -+#include <stdint.h> -+ -+int -+main (void) -+{ -+ void *p = main; -+ if ((intptr_t) p & 1) -+ abort (); -+ return 0; -+} -+ -+/* { dg-final { scan-assembler "abort" } } */ - |