summaryrefslogtreecommitdiffstats
path: root/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99336.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99336.patch')
-rw-r--r--recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99336.patch95
1 files changed, 95 insertions, 0 deletions
diff --git a/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99336.patch b/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99336.patch
new file mode 100644
index 0000000000..9b56560942
--- /dev/null
+++ b/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99336.patch
@@ -0,0 +1,95 @@
1 gcc/
2 * config/arm/arm.c (arm_override_options): Override alignments if
3 tuning for Cortex-A8.
4 (create_fix_barrier, arm_reorg): If aligning to jumps or loops,
5 make labels have a size.
6 * config/arm/arm.md (VUNSPEC_ALIGN16, VUNSPEC_ALIGN32): New constants.
7 (align_16, align_32): New patterns.
8
92010-07-26 Julian Brown <julian@codesourcery.com>
10
11 Merge from Sourcery G++ 4.4:
12
13 Mark Shinwell <shinwell@codesourcery.com>
14
15
16=== modified file 'gcc/config/arm/arm.c'
17--- old/gcc/config/arm/arm.c 2010-08-10 14:03:02 +0000
18+++ new/gcc/config/arm/arm.c 2010-08-12 11:33:54 +0000
19@@ -1449,6 +1449,16 @@
20 chosen. */
21 gcc_assert (arm_tune != arm_none);
22
23+ if (arm_tune == cortexa8 && optimize >= 3)
24+ {
25+ /* These alignments were experimentally determined to improve SPECint
26+ performance on SPECCPU 2000. */
27+ if (align_functions <= 0)
28+ align_functions = 16;
29+ if (align_jumps <= 0)
30+ align_jumps = 16;
31+ }
32+
33 tune_flags = all_cores[(int)arm_tune].flags;
34
35 if (target_fp16_format_name)
36@@ -11263,7 +11273,10 @@
37 gcc_assert (GET_CODE (from) != BARRIER);
38
39 /* Count the length of this insn. */
40- count += get_attr_length (from);
41+ if (LABEL_P (from) && (align_jumps > 0 || align_loops > 0))
42+ count += MAX (align_jumps, align_loops);
43+ else
44+ count += get_attr_length (from);
45
46 /* If there is a jump table, add its length. */
47 tmp = is_jump_table (from);
48@@ -11603,6 +11616,8 @@
49 insn = table;
50 }
51 }
52+ else if (LABEL_P (insn) && (align_jumps > 0 || align_loops > 0))
53+ address += MAX (align_jumps, align_loops);
54 }
55
56 fix = minipool_fix_head;
57
58=== modified file 'gcc/config/arm/arm.md'
59--- old/gcc/config/arm/arm.md 2010-08-12 11:29:02 +0000
60+++ new/gcc/config/arm/arm.md 2010-08-12 11:33:54 +0000
61@@ -135,6 +135,8 @@
62 (VUNSPEC_WCMP_EQ 12) ; Used by the iWMMXt WCMPEQ instructions
63 (VUNSPEC_WCMP_GTU 13) ; Used by the iWMMXt WCMPGTU instructions
64 (VUNSPEC_WCMP_GT 14) ; Used by the iwMMXT WCMPGT instructions
65+ (VUNSPEC_ALIGN16 15) ; Used to force 16-byte alignment.
66+ (VUNSPEC_ALIGN32 16) ; Used to force 32-byte alignment.
67 (VUNSPEC_EH_RETURN 20); Use to override the return address for exception
68 ; handling.
69 ]
70@@ -11042,6 +11044,24 @@
71 "
72 )
73
74+(define_insn "align_16"
75+ [(unspec_volatile [(const_int 0)] VUNSPEC_ALIGN16)]
76+ "TARGET_EITHER"
77+ "*
78+ assemble_align (128);
79+ return \"\";
80+ "
81+)
82+
83+(define_insn "align_32"
84+ [(unspec_volatile [(const_int 0)] VUNSPEC_ALIGN32)]
85+ "TARGET_EITHER"
86+ "*
87+ assemble_align (256);
88+ return \"\";
89+ "
90+)
91+
92 (define_insn "consttable_end"
93 [(unspec_volatile [(const_int 0)] VUNSPEC_POOL_END)]
94 "TARGET_EITHER"
95