On Jun 11, 2013, at 3:35 PM, Martin Jansa <martin.ja...@gmail.com> wrote:

> On Wed, Jun 12, 2013 at 12:31:16AM +0200, Martin Jansa wrote:
>> * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57329
> 
> Only RFC, because world build is still running to confirm that it
> doesn't introduce new issues and that it indeed fixes pixman build for
> xscalete.

can you also test it with rebased on top of gcc 4.8.1 upgrade patch I sent 
earlier today

> 
>> 
>> Signed-off-by: Martin Jansa <martin.ja...@gmail.com>
>> ---
>> meta/recipes-devtools/gcc/gcc-4.8.inc              |  1 +
>> .../gcc/gcc-4.8/0036-PR-target-56102.patch         | 83 
>> ++++++++++++++++++++++
>> 2 files changed, 84 insertions(+)
>> create mode 100644 
>> meta/recipes-devtools/gcc/gcc-4.8/0036-PR-target-56102.patch
>> 
>> diff --git a/meta/recipes-devtools/gcc/gcc-4.8.inc 
>> b/meta/recipes-devtools/gcc/gcc-4.8.inc
>> index 6664f1c..bfdb766 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 \
>>         file://0033-gcc-armv4-pass-fix-v4bx-to-linker-to-support-EABI.patch \
>>         
>> file://0034-Use-the-multilib-config-files-from-B-instead-of-usin.patch \
>>         file://0035-wcast-qual-PR-55383.patch \
>> +       file://0036-PR-target-56102.patch \
>>         file://gcc-4.8-PR56797.patch \
>>         file://gcc-4.8-build-args.patch \
>>        "
>> 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 0000000..a9498fc
>> --- /dev/null
>> +++ b/meta/recipes-devtools/gcc/gcc-4.8/0036-PR-target-56102.patch
>> @@ -0,0 +1,83 @@
>> +From fa049b3584a1cc36c250205e3d5841e6a40ff677 Mon Sep 17 00:00:00 2001
>> +From: amker <amker@138bc75d-0d04-0410-961f-82ee72b054a4>
>> +Date: Wed, 27 Mar 2013 08:16:54 +0000
>> +Subject: [PATCH] PR target/56102
>> +
>> +* 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.
>> +
>> +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@197155 
>> 138bc75d-0d04-0410-961f-82ee72b054a4
>> +
>> +Upstream-Status: Backport
>> +http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57329
>> +
>> +Signed-off-by: Martin Jansa <martin.ja...@gmail.com>
>> +---
>> + gcc/config/arm/arm.c | 17 ++++++++++++++---
>> + 1 file changed, 14 insertions(+), 3 deletions(-)
>> +
>> +diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
>> +index 460d333..edf850d 100644
>> +--- a/gcc/config/arm/arm.c
>> ++++ b/gcc/config/arm/arm.c
>> +@@ -7094,7 +7094,7 @@ static inline int
>> + thumb1_rtx_costs (rtx x, enum rtx_code code, enum rtx_code outer)
>> + {
>> +   enum machine_mode mode = GET_MODE (x);
>> +-  int total;
>> ++  int total, words;
>> + 
>> +   switch (code)
>> +     {
>> +@@ -7102,6 +7102,8 @@ thumb1_rtx_costs (rtx x, enum rtx_code code, enum 
>> rtx_code outer)
>> +     case ASHIFTRT:
>> +     case LSHIFTRT:
>> +     case ROTATERT:
>> ++      return (mode == SImode) ? COSTS_N_INSNS (1) : COSTS_N_INSNS (2);
>> ++
>> +     case PLUS:
>> +     case MINUS:
>> +     case COMPARE:
>> +@@ -7125,7 +7127,10 @@ thumb1_rtx_costs (rtx x, enum rtx_code code, enum 
>> rtx_code outer)
>> +       return COSTS_N_INSNS (1) + 16;
>> + 
>> +     case SET:
>> +-      return (COSTS_N_INSNS (1)
>> ++      /* A SET doesn't have a mode, so let's look at the SET_DEST to get
>> ++    the mode.  */
>> ++      words = ARM_NUM_INTS (GET_MODE_SIZE (GET_MODE (SET_DEST (x))));
>> ++      return (COSTS_N_INSNS (words)
>> +          + 4 * ((MEM_P (SET_SRC (x)))
>> +                 + MEM_P (SET_DEST (x))));
>> + 
>> +@@ -7822,6 +7827,7 @@ static inline int
>> + thumb1_size_rtx_costs (rtx x, enum rtx_code code, enum rtx_code outer)
>> + {
>> +   enum machine_mode mode = GET_MODE (x);
>> ++  int words;
>> + 
>> +   switch (code)
>> +     {
>> +@@ -7829,6 +7835,8 @@ thumb1_size_rtx_costs (rtx x, enum rtx_code code, 
>> enum rtx_code outer)
>> +     case ASHIFTRT:
>> +     case LSHIFTRT:
>> +     case ROTATERT:
>> ++      return (mode == SImode) ? COSTS_N_INSNS (1) : COSTS_N_INSNS (2);
>> ++
>> +     case PLUS:
>> +     case MINUS:
>> +     case COMPARE:
>> +@@ -7847,7 +7855,10 @@ thumb1_size_rtx_costs (rtx x, enum rtx_code code, 
>> enum rtx_code outer)
>> +       return COSTS_N_INSNS (1);
>> + 
>> +     case SET:
>> +-      return (COSTS_N_INSNS (1)
>> ++      /* A SET doesn't have a mode, so let's look at the SET_DEST to get
>> ++    the mode.  */
>> ++      words = ARM_NUM_INTS (GET_MODE_SIZE (GET_MODE (SET_DEST (x))));
>> ++      return (COSTS_N_INSNS (words)
>> +               + 4 * ((MEM_P (SET_SRC (x)))
>> +                      + MEM_P (SET_DEST (x))));
>> + 
>> +-- 
>> +1.8.2.1
>> +
>> -- 
>> 1.8.2.1
>> 
> 
> -- 
> Martin 'JaMa' Jansa     jabber: martin.ja...@gmail.com
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core

_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to