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