diff options
Diffstat (limited to 'meta')
-rw-r--r-- | meta/recipes-devtools/gcc/gcc-4.8.inc | 1 | ||||
-rw-r--r-- | meta/recipes-devtools/gcc/gcc-4.8/0036-PR-target-56102.patch | 83 |
2 files changed, 84 insertions, 0 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-4.8.inc b/meta/recipes-devtools/gcc/gcc-4.8.inc index 6664f1ccf7..bfdb766fef 100644 --- a/meta/recipes-devtools/gcc/gcc-4.8.inc +++ b/meta/recipes-devtools/gcc/gcc-4.8.inc | |||
@@ -65,6 +65,7 @@ SRC_URI = "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.bz2 \ | |||
65 | file://0033-gcc-armv4-pass-fix-v4bx-to-linker-to-support-EABI.patch \ | 65 | file://0033-gcc-armv4-pass-fix-v4bx-to-linker-to-support-EABI.patch \ |
66 | file://0034-Use-the-multilib-config-files-from-B-instead-of-usin.patch \ | 66 | file://0034-Use-the-multilib-config-files-from-B-instead-of-usin.patch \ |
67 | file://0035-wcast-qual-PR-55383.patch \ | 67 | file://0035-wcast-qual-PR-55383.patch \ |
68 | file://0036-PR-target-56102.patch \ | ||
68 | file://gcc-4.8-PR56797.patch \ | 69 | file://gcc-4.8-PR56797.patch \ |
69 | file://gcc-4.8-build-args.patch \ | 70 | file://gcc-4.8-build-args.patch \ |
70 | " | 71 | " |
diff --git a/meta/recipes-devtools/gcc/gcc-4.8/0036-PR-target-56102.patch b/meta/recipes-devtools/gcc/gcc-4.8/0036-PR-target-56102.patch new file mode 100644 index 0000000000..a9498fcb7e --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.8/0036-PR-target-56102.patch | |||
@@ -0,0 +1,83 @@ | |||
1 | From fa049b3584a1cc36c250205e3d5841e6a40ff677 Mon Sep 17 00:00:00 2001 | ||
2 | From: amker <amker@138bc75d-0d04-0410-961f-82ee72b054a4> | ||
3 | Date: Wed, 27 Mar 2013 08:16:54 +0000 | ||
4 | Subject: [PATCH] PR target/56102 | ||
5 | |||
6 | * config/arm/arm.c (thumb1_rtx_costs, thumb1_size_rtx_costs): Fix rtx costs for SET/ASHIFT/ASHIFTRT/LSHIFTRT/ROTATERT patterns with mult-word mode. | ||
7 | |||
8 | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@197155 138bc75d-0d04-0410-961f-82ee72b054a4 | ||
9 | |||
10 | Upstream-Status: Backport | ||
11 | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57329 | ||
12 | |||
13 | Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> | ||
14 | --- | ||
15 | gcc/config/arm/arm.c | 17 ++++++++++++++--- | ||
16 | 1 file changed, 14 insertions(+), 3 deletions(-) | ||
17 | |||
18 | diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c | ||
19 | index 460d333..edf850d 100644 | ||
20 | --- a/gcc/config/arm/arm.c | ||
21 | +++ b/gcc/config/arm/arm.c | ||
22 | @@ -7094,7 +7094,7 @@ static inline int | ||
23 | thumb1_rtx_costs (rtx x, enum rtx_code code, enum rtx_code outer) | ||
24 | { | ||
25 | enum machine_mode mode = GET_MODE (x); | ||
26 | - int total; | ||
27 | + int total, words; | ||
28 | |||
29 | switch (code) | ||
30 | { | ||
31 | @@ -7102,6 +7102,8 @@ thumb1_rtx_costs (rtx x, enum rtx_code code, enum rtx_code outer) | ||
32 | case ASHIFTRT: | ||
33 | case LSHIFTRT: | ||
34 | case ROTATERT: | ||
35 | + return (mode == SImode) ? COSTS_N_INSNS (1) : COSTS_N_INSNS (2); | ||
36 | + | ||
37 | case PLUS: | ||
38 | case MINUS: | ||
39 | case COMPARE: | ||
40 | @@ -7125,7 +7127,10 @@ thumb1_rtx_costs (rtx x, enum rtx_code code, enum rtx_code outer) | ||
41 | return COSTS_N_INSNS (1) + 16; | ||
42 | |||
43 | case SET: | ||
44 | - return (COSTS_N_INSNS (1) | ||
45 | + /* A SET doesn't have a mode, so let's look at the SET_DEST to get | ||
46 | + the mode. */ | ||
47 | + words = ARM_NUM_INTS (GET_MODE_SIZE (GET_MODE (SET_DEST (x)))); | ||
48 | + return (COSTS_N_INSNS (words) | ||
49 | + 4 * ((MEM_P (SET_SRC (x))) | ||
50 | + MEM_P (SET_DEST (x)))); | ||
51 | |||
52 | @@ -7822,6 +7827,7 @@ static inline int | ||
53 | thumb1_size_rtx_costs (rtx x, enum rtx_code code, enum rtx_code outer) | ||
54 | { | ||
55 | enum machine_mode mode = GET_MODE (x); | ||
56 | + int words; | ||
57 | |||
58 | switch (code) | ||
59 | { | ||
60 | @@ -7829,6 +7835,8 @@ thumb1_size_rtx_costs (rtx x, enum rtx_code code, enum rtx_code outer) | ||
61 | case ASHIFTRT: | ||
62 | case LSHIFTRT: | ||
63 | case ROTATERT: | ||
64 | + return (mode == SImode) ? COSTS_N_INSNS (1) : COSTS_N_INSNS (2); | ||
65 | + | ||
66 | case PLUS: | ||
67 | case MINUS: | ||
68 | case COMPARE: | ||
69 | @@ -7847,7 +7855,10 @@ thumb1_size_rtx_costs (rtx x, enum rtx_code code, enum rtx_code outer) | ||
70 | return COSTS_N_INSNS (1); | ||
71 | |||
72 | case SET: | ||
73 | - return (COSTS_N_INSNS (1) | ||
74 | + /* A SET doesn't have a mode, so let's look at the SET_DEST to get | ||
75 | + the mode. */ | ||
76 | + words = ARM_NUM_INTS (GET_MODE_SIZE (GET_MODE (SET_DEST (x)))); | ||
77 | + return (COSTS_N_INSNS (words) | ||
78 | + 4 * ((MEM_P (SET_SRC (x))) | ||
79 | + MEM_P (SET_DEST (x)))); | ||
80 | |||
81 | -- | ||
82 | 1.8.2.1 | ||
83 | |||