mirror of
https://github.com/openembedded/meta-openembedded.git
synced 2025-12-14 06:16:04 +01:00
gcc 4.5: sync with OE
Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
This commit is contained in:
parent
9411e8a9e0
commit
94237e310f
191
recipes-devtools/gcc/foo
Normal file
191
recipes-devtools/gcc/foo
Normal file
|
|
@ -0,0 +1,191 @@
|
|||
From f13cb20ed19c41b9ff85ef1c9ec0883a21d1d5bf Mon Sep 17 00:00:00 2001
|
||||
From: Kevin Tian <kevin.tian@intel.com>
|
||||
Date: Thu, 30 Dec 2010 04:36:50 +0000
|
||||
Subject: gcc-4.5.1: make c++ include path relative to "--sysroot"
|
||||
|
||||
So far c++ include path is not relative to "--sysroot", which brings
|
||||
trouble if we want to use the toolchain in a new environment where
|
||||
the original build directory generating that toolchain is not
|
||||
available. It's firstly exposed in multiple SDK sysroots support, and
|
||||
then in the case when sstate packages are used, where c++ standard
|
||||
headers are missing because gcc tries to search original build dir.
|
||||
|
||||
This patch makes c++ include path now relative to "--sysroot", and
|
||||
then once "--sysroot" is assigned correctly in new environment, c++
|
||||
include paths can be searched as expected.
|
||||
|
||||
Signed-off-by: Kevin Tian <kevin.tian@intel.com>
|
||||
---
|
||||
diff --git a/meta/recipes-devtools/gcc/gcc-4.5.1.inc b/meta/recipes-devtools/gcc/gcc-4.5.1.inc
|
||||
index 3edc4d4..1786d8a 100644
|
||||
--- a/meta/recipes-devtools/gcc/gcc-4.5.1.inc
|
||||
+++ b/meta/recipes-devtools/gcc/gcc-4.5.1.inc
|
||||
@@ -54,6 +54,7 @@ SRC_URI = "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.bz2 \
|
||||
file://optional_libstdc.patch \
|
||||
file://disable_relax_pic_calls_flag.patch \
|
||||
file://gcc-poison-parameters.patch \
|
||||
+ file://GPLUSPLUS_INCLUDE_DIR_with_sysroot.patch \
|
||||
"
|
||||
|
||||
SRC_URI_append_sh3 = " file://sh3-installfix-fixheaders.patch;patch=1 "
|
||||
diff --git a/meta/recipes-devtools/gcc/gcc-4.5.1/GPLUSPLUS_INCLUDE_DIR_with_sysroot.patch b/meta/recipes-devtools/gcc/gcc-4.5.1/GPLUSPLUS_INCLUDE_DIR_with_sysroot.patch
|
||||
new file mode 100644
|
||||
index 0000000..9ae01c3
|
||||
--- a/dev/null
|
||||
+++ b/meta/recipes-devtools/gcc/gcc-4.5.1/GPLUSPLUS_INCLUDE_DIR_with_sysroot.patch
|
||||
@@ -0,0 +1,33 @@
|
||||
+# by default c++ include directories are not relative to "--sysroot"
|
||||
+# which brings one trouble when using the toolchain in an environment
|
||||
+# where the build directory generating that toolchain doesn't exist,
|
||||
+# e.g. in sstate, machine specific sysroot and relocatable SDK
|
||||
+# toolchain. This patch now enables c++ include paths under sysroot.
|
||||
+# This way it's enough as long as "--sysroot" is correctly enabled
|
||||
+# in the new environment.
|
||||
+#
|
||||
+# Signed-off-by Kevin Tian <kevin.tian@intel.com>, 2010-12-30
|
||||
+
|
||||
+diff --git a/gcc/cppdefault.c b/gcc/cppdefault.c
|
||||
+index 5024f48..9b47d1c 100644
|
||||
+--- a/gcc/cppdefault.c
|
||||
++++ b/gcc/cppdefault.c
|
||||
+@@ -48,15 +48,15 @@ const struct default_include cpp_include_defaults[]
|
||||
+ = {
|
||||
+ #ifdef GPLUSPLUS_INCLUDE_DIR
|
||||
+ /* Pick up GNU C++ generic include files. */
|
||||
+- { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, 0, 0 },
|
||||
++ { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, 1, 0 },
|
||||
+ #endif
|
||||
+ #ifdef GPLUSPLUS_TOOL_INCLUDE_DIR
|
||||
+ /* Pick up GNU C++ target-dependent include files. */
|
||||
+- { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, 0, 1 },
|
||||
++ { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, 1, 1 },
|
||||
+ #endif
|
||||
+ #ifdef GPLUSPLUS_BACKWARD_INCLUDE_DIR
|
||||
+ /* Pick up GNU C++ backward and deprecated include files. */
|
||||
+- { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, 0, 0 },
|
||||
++ { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, 1, 0 },
|
||||
+ #endif
|
||||
+ #ifdef LOCAL_INCLUDE_DIR
|
||||
+ /* /usr/local/include comes before the fixincluded header files. */
|
||||
diff --git a/meta/recipes-devtools/gcc/gcc-configure-cross.inc b/meta/recipes-devtools/gcc/gcc-configure-cross.inc
|
||||
index 3da92e2..04a8685 100644
|
||||
--- a/meta/recipes-devtools/gcc/gcc-configure-cross.inc
|
||||
+++ b/meta/recipes-devtools/gcc/gcc-configure-cross.inc
|
||||
@@ -5,7 +5,7 @@ USE_NLS = '${@base_conditional( "TARGET_OS", "linux-uclibc", "no", "", d )}'
|
||||
EXTRA_OECONF += " --enable-poison-system-directories "
|
||||
|
||||
EXTRA_OECONF_PATHS = "--with-local-prefix=${STAGING_DIR_TARGET}${target_exec_prefix} \
|
||||
- --with-gxx-include-dir=${STAGING_DIR_TARGET}/${target_includedir}/c++ \
|
||||
+ --with-gxx-include-dir=${target_includedir}/c++ \
|
||||
--with-sysroot=${STAGING_DIR_TARGET} \
|
||||
--with-build-sysroot=${STAGING_DIR_TARGET}"
|
||||
|
||||
diff --git a/meta/recipes-devtools/gcc/gcc-configure-sdk.inc b/meta/recipes-devtools/gcc/gcc-configure-sdk.inc
|
||||
index 0eb33ad..756e74e 100644
|
||||
--- a/meta/recipes-devtools/gcc/gcc-configure-sdk.inc
|
||||
+++ b/meta/recipes-devtools/gcc/gcc-configure-sdk.inc
|
||||
@@ -5,7 +5,7 @@ USE_NLS = '${@base_conditional( "TARGET_OS", "linux-uclibc", "no", "", d )}'
|
||||
USE_NLS = '${@base_conditional( "TARGET_OS", "linux-uclibcgnueabi", "no", "", d )}'
|
||||
|
||||
EXTRA_OECONF_PATHS = "--with-local-prefix=${SDKPATH}/sysroots/${TARGET_SYS}${target_exec_prefix} \
|
||||
- --with-gxx-include-dir=${SDKPATH}/sysroots/${TARGET_SYS}${target_includedir}/c++ \
|
||||
+ --with-gxx-include-dir=${target_includedir}/c++ \
|
||||
--with-build-time-tools=${STAGING_DIR_NATIVE}${prefix_native}/${TARGET_SYS}/bin \
|
||||
--with-sysroot=${SDKPATH}/sysroots/${TARGET_SYS} \
|
||||
--with-build-sysroot=${STAGING_DIR_TARGET}"
|
||||
diff --git a/meta/recipes-devtools/gcc/gcc-cross-canadian_4.5.1.bb b/meta/recipes-devtools/gcc/gcc-cross-canadian_4.5.1.bb
|
||||
index 98e239d..37c64fb 100644
|
||||
--- a/meta/recipes-devtools/gcc/gcc-cross-canadian_4.5.1.bb
|
||||
+++ b/meta/recipes-devtools/gcc/gcc-cross-canadian_4.5.1.bb
|
||||
@@ -5,7 +5,7 @@ require gcc-cross-canadian.inc
|
||||
require gcc-configure-sdk.inc
|
||||
require gcc-package-sdk.inc
|
||||
|
||||
-PR = "r1"
|
||||
+PR = "r2"
|
||||
|
||||
DEPENDS += "gmp-nativesdk mpfr-nativesdk libmpc-nativesdk elfutils-nativesdk"
|
||||
RDEPENDS_${PN} += "mpfr-nativesdk libmpc-nativesdk elfutils-nativesdk"
|
||||
diff --git a/meta/recipes-devtools/gcc/gcc-cross-initial_4.5.1.bb b/meta/recipes-devtools/gcc/gcc-cross-initial_4.5.1.bb
|
||||
index e3aea8b..a121782 100644
|
||||
--- a/meta/recipes-devtools/gcc/gcc-cross-initial_4.5.1.bb
|
||||
+++ b/meta/recipes-devtools/gcc/gcc-cross-initial_4.5.1.bb
|
||||
@@ -1,5 +1,5 @@
|
||||
require gcc-cross_${PV}.bb
|
||||
require gcc-cross-initial.inc
|
||||
|
||||
-PR = "r0"
|
||||
+PR = "r1"
|
||||
|
||||
diff --git a/meta/recipes-devtools/gcc/gcc-cross-intermediate_4.5.1.bb b/meta/recipes-devtools/gcc/gcc-cross-intermediate_4.5.1.bb
|
||||
index 4cabe0e..7aaa5b0 100644
|
||||
--- a/meta/recipes-devtools/gcc/gcc-cross-intermediate_4.5.1.bb
|
||||
+++ b/meta/recipes-devtools/gcc/gcc-cross-intermediate_4.5.1.bb
|
||||
@@ -1,4 +1,4 @@
|
||||
require gcc-cross_${PV}.bb
|
||||
require gcc-cross-intermediate.inc
|
||||
-PR = "r0"
|
||||
+PR = "r1"
|
||||
|
||||
diff --git a/meta/recipes-devtools/gcc/gcc-cross_4.5.1.bb b/meta/recipes-devtools/gcc/gcc-cross_4.5.1.bb
|
||||
index 445869d..b7e4328 100644
|
||||
--- a/meta/recipes-devtools/gcc/gcc-cross_4.5.1.bb
|
||||
+++ b/meta/recipes-devtools/gcc/gcc-cross_4.5.1.bb
|
||||
@@ -1,4 +1,4 @@
|
||||
-PR = "r0"
|
||||
+PR = "r1"
|
||||
|
||||
require gcc-${PV}.inc
|
||||
require gcc-cross4.inc
|
||||
diff --git a/meta/recipes-devtools/gcc/gcc-crosssdk-initial_4.5.1.bb b/meta/recipes-devtools/gcc/gcc-crosssdk-initial_4.5.1.bb
|
||||
index 22cb490..0fc5faa 100644
|
||||
--- a/meta/recipes-devtools/gcc/gcc-crosssdk-initial_4.5.1.bb
|
||||
+++ b/meta/recipes-devtools/gcc/gcc-crosssdk-initial_4.5.1.bb
|
||||
@@ -1,4 +1,4 @@
|
||||
require gcc-cross-initial_${PV}.bb
|
||||
require gcc-crosssdk-initial.inc
|
||||
|
||||
-PR = "r0"
|
||||
+PR = "r1"
|
||||
diff --git a/meta/recipes-devtools/gcc/gcc-crosssdk-intermediate_4.5.1.bb b/meta/recipes-devtools/gcc/gcc-crosssdk-intermediate_4.5.1.bb
|
||||
index ba42ca0..4260c35 100644
|
||||
--- a/meta/recipes-devtools/gcc/gcc-crosssdk-intermediate_4.5.1.bb
|
||||
+++ b/meta/recipes-devtools/gcc/gcc-crosssdk-intermediate_4.5.1.bb
|
||||
@@ -1,4 +1,4 @@
|
||||
require gcc-cross-intermediate_${PV}.bb
|
||||
require gcc-crosssdk-intermediate.inc
|
||||
|
||||
-PR = "r0"
|
||||
+PR = "r1"
|
||||
diff --git a/meta/recipes-devtools/gcc/gcc-crosssdk_4.5.1.bb b/meta/recipes-devtools/gcc/gcc-crosssdk_4.5.1.bb
|
||||
index 6f0a540..a23a662 100644
|
||||
--- a/meta/recipes-devtools/gcc/gcc-crosssdk_4.5.1.bb
|
||||
+++ b/meta/recipes-devtools/gcc/gcc-crosssdk_4.5.1.bb
|
||||
@@ -1,4 +1,4 @@
|
||||
require gcc-cross_${PV}.bb
|
||||
require gcc-crosssdk.inc
|
||||
|
||||
-PR = "r0"
|
||||
+PR = "r1"
|
||||
diff --git a/meta/recipes-devtools/gcc/gcc-runtime_4.5.1.bb b/meta/recipes-devtools/gcc/gcc-runtime_4.5.1.bb
|
||||
index 4d2302d..ca22e8b 100644
|
||||
--- a/meta/recipes-devtools/gcc/gcc-runtime_4.5.1.bb
|
||||
+++ b/meta/recipes-devtools/gcc/gcc-runtime_4.5.1.bb
|
||||
@@ -1,4 +1,4 @@
|
||||
-PR = "r0"
|
||||
+PR = "r1"
|
||||
|
||||
require gcc-${PV}.inc
|
||||
require gcc-configure-runtime.inc
|
||||
diff --git a/meta/recipes-devtools/gcc/gcc_4.5.1.bb b/meta/recipes-devtools/gcc/gcc_4.5.1.bb
|
||||
index 81c1fa9..a21772f 100644
|
||||
--- a/meta/recipes-devtools/gcc/gcc_4.5.1.bb
|
||||
+++ b/meta/recipes-devtools/gcc/gcc_4.5.1.bb
|
||||
@@ -1,4 +1,4 @@
|
||||
-PR = "r0"
|
||||
+PR = "r1"
|
||||
require gcc-${PV}.inc
|
||||
require gcc-configure-target.inc
|
||||
require gcc-package-target.inc
|
||||
--
|
||||
cgit v0.8.3.3-89-gbf82
|
||||
|
|
@ -12,9 +12,9 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
|
|||
file://COPYING.RUNTIME;md5=fe60d87048567d4fe8c8a0ed2448bcc8"
|
||||
|
||||
|
||||
SRCREV = "167948"
|
||||
SRCREV = "168622"
|
||||
PV = "4.5"
|
||||
INC_PR = "r11"
|
||||
INC_PR = "r29"
|
||||
|
||||
# BINV should be incremented after updating to a revision
|
||||
# after a minor gcc release (e.g. 4.5.1 or 4.5.2) has been made
|
||||
|
|
@ -133,7 +133,6 @@ SRC_URI = "svn://gcc.gnu.org/svn/gcc/branches;module=${BRANCH} \
|
|||
file://linaro/gcc-4.5-linaro-r99411.patch \
|
||||
file://linaro/gcc-4.5-linaro-r99412.patch \
|
||||
file://linaro/gcc-4.5-linaro-r99413.patch \
|
||||
file://linaro/gcc-4.5-linaro-r99414.patch \
|
||||
file://linaro/gcc-4.5-linaro-r99415.patch \
|
||||
file://linaro/gcc-4.5-linaro-r99416.patch \
|
||||
file://linaro/gcc-4.5-linaro-r99417.patch \
|
||||
|
|
@ -158,8 +157,17 @@ SRC_URI = "svn://gcc.gnu.org/svn/gcc/branches;module=${BRANCH} \
|
|||
file://linaro/gcc-4.5-linaro-r99442.patch \
|
||||
file://linaro/gcc-4.5-linaro-r99443.patch \
|
||||
file://linaro/gcc-4.5-linaro-r99444.patch \
|
||||
file://linaro/gcc-4.5-linaro-r99448.patch \
|
||||
file://linaro/gcc-4.5-linaro-r99449.patch \
|
||||
file://linaro/gcc-4.5-linaro-r99450.patch \
|
||||
file://linaro/gcc-4.5-linaro-r99451.patch \
|
||||
file://linaro/gcc-4.5-linaro-r99452.patch \
|
||||
file://linaro/gcc-4.5-linaro-r99453.patch \
|
||||
file://linaro/gcc-4.5-linaro-r99454.patch \
|
||||
file://linaro/gcc-4.5-linaro-r99455.patch \
|
||||
file://linaro/gcc-4.5-linaro-r99456.patch \
|
||||
# file://linaro/gcc-4.5-linaro-r99457.patch \
|
||||
file://gcc-scalar-widening-pr45847.patch \
|
||||
file://gcc-arm-qihi-split-PR46883.patch \
|
||||
file://gcc-arm-volatile-bitfield-fix.patch \
|
||||
\
|
||||
file://optional_libstdc.patch \
|
||||
|
|
|
|||
|
|
@ -1,36 +0,0 @@
|
|||
2010-10-15 Yao Qi <yao@codesourcery.com>
|
||||
|
||||
Backport from mainline:
|
||||
|
||||
2010-10-14 Yao Qi <yao@codesourcery.com>
|
||||
|
||||
gcc/
|
||||
PR target/45447
|
||||
* config/arm/arm.c (arm_build_builtin_va_list): Assign
|
||||
va_list_name to TYPE_STUB_DECL (va_list_type).
|
||||
|
||||
gcc/testsuite/
|
||||
PR target/45447
|
||||
* gcc.target/arm/pr45447.c: New test.
|
||||
|
||||
=== modified file 'gcc/config/arm/arm.c'
|
||||
Index: gcc-4.5/gcc/config/arm/arm.c
|
||||
===================================================================
|
||||
--- gcc-4.5.orig/gcc/config/arm/arm.c
|
||||
+++ gcc-4.5/gcc/config/arm/arm.c
|
||||
@@ -1166,6 +1166,7 @@ arm_build_builtin_va_list (void)
|
||||
va_list_type);
|
||||
DECL_ARTIFICIAL (va_list_name) = 1;
|
||||
TYPE_NAME (va_list_type) = va_list_name;
|
||||
+ TYPE_STUB_DECL (va_list_type) = va_list_name;
|
||||
/* Create the __ap field. */
|
||||
ap_field = build_decl (BUILTINS_LOCATION,
|
||||
FIELD_DECL,
|
||||
Index: gcc-4.5/gcc/testsuite/gcc.target/arm/pr45447.c
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ gcc-4.5/gcc/testsuite/gcc.target/arm/pr45447.c
|
||||
@@ -0,0 +1,3 @@
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-g -femit-struct-debug-baseonly" } */
|
||||
+typedef __builtin_va_list x;
|
||||
147
recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99448.patch
Normal file
147
recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99448.patch
Normal file
|
|
@ -0,0 +1,147 @@
|
|||
2010-12-13 Chung-Lin Tang <cltang@codesourcery.com>
|
||||
|
||||
Backport from mainline:
|
||||
|
||||
2010-12-10 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/46865
|
||||
|
||||
* rtl.c (rtx_equal_p_cb, rtx_equal_p): For last operand of
|
||||
ASM_OPERANDS and ASM_INPUT if integers are different,
|
||||
call locator_eq.
|
||||
* jump.c (rtx_renumbered_equal_p): Likewise.
|
||||
|
||||
gcc/testsuite/
|
||||
* gcc.target/i386/pr46865-1.c: New test.
|
||||
* gcc.target/i386/pr46865-2.c: New test.
|
||||
|
||||
=== modified file 'gcc/jump.c'
|
||||
--- old/gcc/jump.c 2009-11-25 10:55:54 +0000
|
||||
+++ new/gcc/jump.c 2010-12-13 10:05:52 +0000
|
||||
@@ -1728,7 +1728,13 @@
|
||||
|
||||
case 'i':
|
||||
if (XINT (x, i) != XINT (y, i))
|
||||
- return 0;
|
||||
+ {
|
||||
+ if (((code == ASM_OPERANDS && i == 6)
|
||||
+ || (code == ASM_INPUT && i == 1))
|
||||
+ && locator_eq (XINT (x, i), XINT (y, i)))
|
||||
+ break;
|
||||
+ return 0;
|
||||
+ }
|
||||
break;
|
||||
|
||||
case 't':
|
||||
|
||||
=== modified file 'gcc/rtl.c'
|
||||
--- old/gcc/rtl.c 2009-11-25 10:55:54 +0000
|
||||
+++ new/gcc/rtl.c 2010-12-13 10:05:52 +0000
|
||||
@@ -429,7 +429,15 @@
|
||||
case 'n':
|
||||
case 'i':
|
||||
if (XINT (x, i) != XINT (y, i))
|
||||
- return 0;
|
||||
+ {
|
||||
+#ifndef GENERATOR_FILE
|
||||
+ if (((code == ASM_OPERANDS && i == 6)
|
||||
+ || (code == ASM_INPUT && i == 1))
|
||||
+ && locator_eq (XINT (x, i), XINT (y, i)))
|
||||
+ break;
|
||||
+#endif
|
||||
+ return 0;
|
||||
+ }
|
||||
break;
|
||||
|
||||
case 'V':
|
||||
@@ -549,7 +557,15 @@
|
||||
case 'n':
|
||||
case 'i':
|
||||
if (XINT (x, i) != XINT (y, i))
|
||||
- return 0;
|
||||
+ {
|
||||
+#ifndef GENERATOR_FILE
|
||||
+ if (((code == ASM_OPERANDS && i == 6)
|
||||
+ || (code == ASM_INPUT && i == 1))
|
||||
+ && locator_eq (XINT (x, i), XINT (y, i)))
|
||||
+ break;
|
||||
+#endif
|
||||
+ return 0;
|
||||
+ }
|
||||
break;
|
||||
|
||||
case 'V':
|
||||
|
||||
=== added file 'gcc/testsuite/gcc.target/i386/pr46865-1.c'
|
||||
--- old/gcc/testsuite/gcc.target/i386/pr46865-1.c 1970-01-01 00:00:00 +0000
|
||||
+++ new/gcc/testsuite/gcc.target/i386/pr46865-1.c 2010-12-13 10:05:52 +0000
|
||||
@@ -0,0 +1,31 @@
|
||||
+/* PR rtl-optimization/46865 */
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-O2" } */
|
||||
+
|
||||
+extern unsigned long f;
|
||||
+
|
||||
+#define m1(f) \
|
||||
+ if (f & 1) \
|
||||
+ asm volatile ("nop /* asmnop */\n"); \
|
||||
+ else \
|
||||
+ asm volatile ("nop /* asmnop */\n");
|
||||
+
|
||||
+#define m2(f) \
|
||||
+ if (f & 1) \
|
||||
+ asm volatile ("nop /* asmnop */\n" : : "i" (6) : "cx"); \
|
||||
+ else \
|
||||
+ asm volatile ("nop /* asmnop */\n" : : "i" (6) : "cx");
|
||||
+
|
||||
+void
|
||||
+foo (void)
|
||||
+{
|
||||
+ m1 (f);
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+bar (void)
|
||||
+{
|
||||
+ m2 (f);
|
||||
+}
|
||||
+
|
||||
+/* { dg-final { scan-assembler-times "asmnop" 2 } } */
|
||||
|
||||
=== added file 'gcc/testsuite/gcc.target/i386/pr46865-2.c'
|
||||
--- old/gcc/testsuite/gcc.target/i386/pr46865-2.c 1970-01-01 00:00:00 +0000
|
||||
+++ new/gcc/testsuite/gcc.target/i386/pr46865-2.c 2010-12-13 10:05:52 +0000
|
||||
@@ -0,0 +1,32 @@
|
||||
+/* PR rtl-optimization/46865 */
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-O2 -save-temps" } */
|
||||
+
|
||||
+extern unsigned long f;
|
||||
+
|
||||
+#define m1(f) \
|
||||
+ if (f & 1) \
|
||||
+ asm volatile ("nop /* asmnop */\n"); \
|
||||
+ else \
|
||||
+ asm volatile ("nop /* asmnop */\n");
|
||||
+
|
||||
+#define m2(f) \
|
||||
+ if (f & 1) \
|
||||
+ asm volatile ("nop /* asmnop */\n" : : "i" (6) : "cx"); \
|
||||
+ else \
|
||||
+ asm volatile ("nop /* asmnop */\n" : : "i" (6) : "cx");
|
||||
+
|
||||
+void
|
||||
+foo (void)
|
||||
+{
|
||||
+ m1 (f);
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+bar (void)
|
||||
+{
|
||||
+ m2 (f);
|
||||
+}
|
||||
+
|
||||
+/* { dg-final { scan-assembler-times "asmnop" 2 } } */
|
||||
+/* { dg-final { cleanup-saved-temps } } */
|
||||
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
2010-12-21 Ulrich Weigand <uweigand@de.ibm.com>
|
||||
|
||||
LP: #617384
|
||||
Backport from mainline:
|
||||
|
||||
gcc/
|
||||
* config/arm/arm.c (require_pic_register): Set INSN_LOCATOR for all
|
||||
instructions injected into the prologue to prologue_locator.
|
||||
|
||||
=== modified file 'gcc/config/arm/arm.c'
|
||||
--- old/gcc/config/arm/arm.c 2010-12-10 15:34:19 +0000
|
||||
+++ new/gcc/config/arm/arm.c 2010-12-21 14:13:38 +0000
|
||||
@@ -5080,7 +5080,7 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
- rtx seq;
|
||||
+ rtx seq, insn;
|
||||
|
||||
if (!cfun->machine->pic_reg)
|
||||
cfun->machine->pic_reg = gen_reg_rtx (Pmode);
|
||||
@@ -5097,6 +5097,11 @@
|
||||
|
||||
seq = get_insns ();
|
||||
end_sequence ();
|
||||
+
|
||||
+ for (insn = seq; insn; insn = NEXT_INSN (insn))
|
||||
+ if (INSN_P (insn))
|
||||
+ INSN_LOCATOR (insn) = prologue_locator;
|
||||
+
|
||||
/* We can be called during expansion of PHI nodes, where
|
||||
we can't yet emit instructions directly in the final
|
||||
insn stream. Queue the insns on the entry edge, they will
|
||||
|
||||
104
recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99450.patch
Normal file
104
recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99450.patch
Normal file
|
|
@ -0,0 +1,104 @@
|
|||
2010-12-21 Ulrich Weigand <uweigand@de.ibm.com>
|
||||
|
||||
LP: #662324
|
||||
Backport from mainline:
|
||||
|
||||
2010-12-17 Dodji Seketeli <dodji@redhat.com>
|
||||
|
||||
gcc/
|
||||
* dwarf2out.c (gen_type_die_with_usage): Do not try to emit debug
|
||||
info for a redundant typedef that has DECL_ORIGINAL_TYPE set. Use
|
||||
that underlying type instead.
|
||||
|
||||
gcc/testsuite/
|
||||
* g++.dg/debug/dwarf2/self-ref-1.C: New test.
|
||||
* g++.dg/debug/dwarf2/self-ref-2.C: Likewise.
|
||||
|
||||
=== modified file 'gcc/dwarf2out.c'
|
||||
--- old/gcc/dwarf2out.c 2010-10-04 00:50:43 +0000
|
||||
+++ new/gcc/dwarf2out.c 2010-12-21 18:46:10 +0000
|
||||
@@ -18993,6 +18993,16 @@
|
||||
if (type == NULL_TREE || type == error_mark_node)
|
||||
return;
|
||||
|
||||
+ if (TYPE_NAME (type) != NULL_TREE
|
||||
+ && TREE_CODE (TYPE_NAME (type)) == TYPE_DECL
|
||||
+ && is_redundant_typedef (TYPE_NAME (type))
|
||||
+ && DECL_ORIGINAL_TYPE (TYPE_NAME (type)))
|
||||
+ /* The DECL of this type is a typedef we don't want to emit debug
|
||||
+ info for but we want debug info for its underlying typedef.
|
||||
+ This can happen for e.g, the injected-class-name of a C++
|
||||
+ type. */
|
||||
+ type = DECL_ORIGINAL_TYPE (TYPE_NAME (type));
|
||||
+
|
||||
/* If TYPE is a typedef type variant, let's generate debug info
|
||||
for the parent typedef which TYPE is a type of. */
|
||||
if (TYPE_NAME (type) && TREE_CODE (TYPE_NAME (type)) == TYPE_DECL
|
||||
|
||||
=== added file 'gcc/testsuite/g++.dg/debug/dwarf2/self-ref-1.C'
|
||||
--- old/gcc/testsuite/g++.dg/debug/dwarf2/self-ref-1.C 1970-01-01 00:00:00 +0000
|
||||
+++ new/gcc/testsuite/g++.dg/debug/dwarf2/self-ref-1.C 2010-12-21 18:46:10 +0000
|
||||
@@ -0,0 +1,28 @@
|
||||
+// Origin: PR debug/45088
|
||||
+// { dg-do compile }
|
||||
+// { dg-options "-g -dA" }
|
||||
+// { dg-final { scan-assembler-times "\[^\n\r\]*\\(DIE\[^\n\r\]*DW_TAG_pointer_type\\)\[\n\r\]{1,2}\[^\n\r\]*DW_AT_byte_size\[\n\r\]{1,2}\[^\n\r\]*DW_AT_type" 4 } }
|
||||
+
|
||||
+struct A
|
||||
+{
|
||||
+ virtual ~A();
|
||||
+};
|
||||
+
|
||||
+struct B : public A
|
||||
+{
|
||||
+ virtual ~B(){}
|
||||
+};
|
||||
+
|
||||
+struct C : public B
|
||||
+{
|
||||
+ A* a1;
|
||||
+};
|
||||
+
|
||||
+int
|
||||
+main()
|
||||
+{
|
||||
+ C c;
|
||||
+ c.a1 = 0;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
|
||||
=== added file 'gcc/testsuite/g++.dg/debug/dwarf2/self-ref-2.C'
|
||||
--- old/gcc/testsuite/g++.dg/debug/dwarf2/self-ref-2.C 1970-01-01 00:00:00 +0000
|
||||
+++ new/gcc/testsuite/g++.dg/debug/dwarf2/self-ref-2.C 2010-12-21 18:46:10 +0000
|
||||
@@ -0,0 +1,29 @@
|
||||
+// Origin: PR debug/45088
|
||||
+// { dg-do compile }
|
||||
+// { dg-options "-g -dA" }
|
||||
+// { dg-final { scan-assembler-times "\[^\n\r\]*\\(DIE\[^\n\r\]*DW_TAG_pointer_type\\)\[\n\r\]{1,2}\[^\n\r\]*DW_AT_byte_size\[\n\r\]{1,2}\[^\n\r\]*DW_AT_type" 4 } }
|
||||
+
|
||||
+template<class T>
|
||||
+struct A
|
||||
+{
|
||||
+ virtual ~A();
|
||||
+};
|
||||
+
|
||||
+struct B : public A<int>
|
||||
+{
|
||||
+ virtual ~B(){}
|
||||
+};
|
||||
+
|
||||
+struct C : public B
|
||||
+{
|
||||
+ A<int>* a1;
|
||||
+};
|
||||
+
|
||||
+int
|
||||
+main()
|
||||
+{
|
||||
+ C c;
|
||||
+ c.a1 = 0;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
2010-12-22 Ulrich Weigand <uweigand@de.ibm.com>
|
||||
|
||||
LP: #693425
|
||||
Backport from mainline:
|
||||
|
||||
gcc/
|
||||
* config/spu/spu.md ("mov<mode>"): Use nonimmediate_operand
|
||||
predicate for destination operand.
|
||||
* config/spu/spu.c (spu_expand_mov): If move destination is an
|
||||
invalid subreg, perform move in the subreg's inner mode instead.
|
||||
|
||||
=== modified file 'gcc/config/spu/spu.c'
|
||||
--- old/gcc/config/spu/spu.c 2010-08-04 09:53:04 +0000
|
||||
+++ new/gcc/config/spu/spu.c 2010-12-22 15:20:44 +0000
|
||||
@@ -4572,7 +4572,13 @@
|
||||
spu_expand_mov (rtx * ops, enum machine_mode mode)
|
||||
{
|
||||
if (GET_CODE (ops[0]) == SUBREG && !valid_subreg (ops[0]))
|
||||
- abort ();
|
||||
+ {
|
||||
+ /* Perform the move in the destination SUBREG's inner mode. */
|
||||
+ ops[0] = SUBREG_REG (ops[0]);
|
||||
+ mode = GET_MODE (ops[0]);
|
||||
+ ops[1] = gen_lowpart_common (mode, ops[1]);
|
||||
+ gcc_assert (ops[1]);
|
||||
+ }
|
||||
|
||||
if (GET_CODE (ops[1]) == SUBREG && !valid_subreg (ops[1]))
|
||||
{
|
||||
|
||||
=== modified file 'gcc/config/spu/spu.md'
|
||||
--- old/gcc/config/spu/spu.md 2009-05-23 01:28:14 +0000
|
||||
+++ new/gcc/config/spu/spu.md 2010-12-22 15:20:44 +0000
|
||||
@@ -269,8 +269,8 @@
|
||||
;; mov
|
||||
|
||||
(define_expand "mov<mode>"
|
||||
- [(set (match_operand:ALL 0 "spu_nonimm_operand" "=r,r,r,m")
|
||||
- (match_operand:ALL 1 "general_operand" "r,i,m,r"))]
|
||||
+ [(set (match_operand:ALL 0 "nonimmediate_operand" "")
|
||||
+ (match_operand:ALL 1 "general_operand" ""))]
|
||||
""
|
||||
{
|
||||
if (spu_expand_mov(operands, <MODE>mode))
|
||||
|
||||
201
recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99452.patch
Normal file
201
recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99452.patch
Normal file
|
|
@ -0,0 +1,201 @@
|
|||
2010-12-14 Sandra Loosemore <sandra@codesourcery.com>
|
||||
|
||||
Backport from mainline:
|
||||
|
||||
2010-12-14 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR tree-optimization/46909
|
||||
|
||||
gcc/
|
||||
* tree-ssa-ccp.c (and_var_with_comparison_1): Save partial
|
||||
result even in the is_and case, if both partial results
|
||||
are the same, return it.
|
||||
(or_var_with_comparison_1): Use is_or predicate instead of
|
||||
innercode == TRUTH_OR_EXPR test. Save partial result
|
||||
even in the is_or case, if both partial results are the
|
||||
same, return it. In the !is_or case when both partial
|
||||
results are the same, return the partial result instead
|
||||
of boolean_true_node.
|
||||
|
||||
gcc/testsuite/
|
||||
* gcc.c-torture/execute/pr46909-1.c: New test.
|
||||
* gcc.c-torture/execute/pr46909-2.c: New test.
|
||||
* gcc.dg/pr46909.c: New test.
|
||||
|
||||
=== added file 'gcc/testsuite/gcc.c-torture/execute/pr46909-1.c'
|
||||
--- old/gcc/testsuite/gcc.c-torture/execute/pr46909-1.c 1970-01-01 00:00:00 +0000
|
||||
+++ new/gcc/testsuite/gcc.c-torture/execute/pr46909-1.c 2011-01-05 11:27:00 +0000
|
||||
@@ -0,0 +1,22 @@
|
||||
+/* PR tree-optimization/46909 */
|
||||
+
|
||||
+extern void abort ();
|
||||
+
|
||||
+int
|
||||
+__attribute__ ((__noinline__))
|
||||
+foo (unsigned int x)
|
||||
+{
|
||||
+ if (! (x == 4 || x == 6) || (x == 2 || x == 6))
|
||||
+ return 1;
|
||||
+ return -1;
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+main ()
|
||||
+{
|
||||
+ int i;
|
||||
+ for (i = -10; i < 10; i++)
|
||||
+ if (foo (i) != 1 - 2 * (i == 4))
|
||||
+ abort ();
|
||||
+ return 0;
|
||||
+}
|
||||
|
||||
=== added file 'gcc/testsuite/gcc.c-torture/execute/pr46909-2.c'
|
||||
--- old/gcc/testsuite/gcc.c-torture/execute/pr46909-2.c 1970-01-01 00:00:00 +0000
|
||||
+++ new/gcc/testsuite/gcc.c-torture/execute/pr46909-2.c 2011-01-05 11:27:00 +0000
|
||||
@@ -0,0 +1,22 @@
|
||||
+/* PR tree-optimization/46909 */
|
||||
+
|
||||
+extern void abort (void);
|
||||
+
|
||||
+int
|
||||
+__attribute__((noinline))
|
||||
+foo (int x)
|
||||
+{
|
||||
+ if ((x != 0 && x != 13) || x == 5 || x == 20)
|
||||
+ return 1;
|
||||
+ return -1;
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+main (void)
|
||||
+{
|
||||
+ int i;
|
||||
+ for (i = -10; i < 30; i++)
|
||||
+ if (foo (i) != 1 - 2 * (i == 0) - 2 * (i == 13))
|
||||
+ abort ();
|
||||
+ return 0;
|
||||
+}
|
||||
|
||||
=== added file 'gcc/testsuite/gcc.dg/pr46909.c'
|
||||
--- old/gcc/testsuite/gcc.dg/pr46909.c 1970-01-01 00:00:00 +0000
|
||||
+++ new/gcc/testsuite/gcc.dg/pr46909.c 2011-01-05 11:27:00 +0000
|
||||
@@ -0,0 +1,17 @@
|
||||
+/* PR tree-optimization/46909 */
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-O2 -fdump-tree-ifcombine" } */
|
||||
+
|
||||
+extern void abort ();
|
||||
+
|
||||
+int
|
||||
+__attribute__ ((__noinline__))
|
||||
+foo (unsigned int x)
|
||||
+{
|
||||
+ if (! (x == 4 || x == 6) || (x == 2 || x == 6))
|
||||
+ return 1;
|
||||
+ return -1;
|
||||
+}
|
||||
+
|
||||
+/* { dg-final { scan-tree-dump "optimizing two comparisons to x_\[0-9\]+\\(D\\) != 4" "ifcombine" } } */
|
||||
+/* { dg-final { cleanup-tree-dump "ifcombine" } } */
|
||||
|
||||
=== modified file 'gcc/tree-ssa-ccp.c'
|
||||
--- old/gcc/tree-ssa-ccp.c 2010-09-16 09:15:46 +0000
|
||||
+++ new/gcc/tree-ssa-ccp.c 2011-01-05 11:27:00 +0000
|
||||
@@ -3508,14 +3508,11 @@
|
||||
/* Handle the OR case, where we are redistributing:
|
||||
(inner1 OR inner2) AND (op2a code2 op2b)
|
||||
=> (t OR (inner2 AND (op2a code2 op2b))) */
|
||||
- else
|
||||
- {
|
||||
- if (integer_onep (t))
|
||||
- return boolean_true_node;
|
||||
- else
|
||||
- /* Save partial result for later. */
|
||||
- partial = t;
|
||||
- }
|
||||
+ else if (integer_onep (t))
|
||||
+ return boolean_true_node;
|
||||
+
|
||||
+ /* Save partial result for later. */
|
||||
+ partial = t;
|
||||
}
|
||||
|
||||
/* Compute the second partial result, (inner2 AND (op2a code op2b)) */
|
||||
@@ -3536,6 +3533,10 @@
|
||||
return inner1;
|
||||
else if (integer_zerop (t))
|
||||
return boolean_false_node;
|
||||
+ /* If both are the same, we can apply the identity
|
||||
+ (x AND x) == x. */
|
||||
+ else if (partial && same_bool_result_p (t, partial))
|
||||
+ return t;
|
||||
}
|
||||
|
||||
/* Handle the OR case. where we are redistributing:
|
||||
@@ -3945,7 +3946,7 @@
|
||||
=> (t OR inner2)
|
||||
If the partial result t is a constant, we win. Otherwise
|
||||
continue on to try reassociating with the other inner test. */
|
||||
- if (innercode == TRUTH_OR_EXPR)
|
||||
+ if (is_or)
|
||||
{
|
||||
if (integer_onep (t))
|
||||
return boolean_true_node;
|
||||
@@ -3956,14 +3957,11 @@
|
||||
/* Handle the AND case, where we are redistributing:
|
||||
(inner1 AND inner2) OR (op2a code2 op2b)
|
||||
=> (t AND (inner2 OR (op2a code op2b))) */
|
||||
- else
|
||||
- {
|
||||
- if (integer_zerop (t))
|
||||
- return boolean_false_node;
|
||||
- else
|
||||
- /* Save partial result for later. */
|
||||
- partial = t;
|
||||
- }
|
||||
+ else if (integer_zerop (t))
|
||||
+ return boolean_false_node;
|
||||
+
|
||||
+ /* Save partial result for later. */
|
||||
+ partial = t;
|
||||
}
|
||||
|
||||
/* Compute the second partial result, (inner2 OR (op2a code op2b)) */
|
||||
@@ -3977,13 +3975,18 @@
|
||||
{
|
||||
/* Handle the OR case, where we are reassociating:
|
||||
(inner1 OR inner2) OR (op2a code2 op2b)
|
||||
- => (inner1 OR t) */
|
||||
- if (innercode == TRUTH_OR_EXPR)
|
||||
+ => (inner1 OR t)
|
||||
+ => (t OR partial) */
|
||||
+ if (is_or)
|
||||
{
|
||||
if (integer_zerop (t))
|
||||
return inner1;
|
||||
else if (integer_onep (t))
|
||||
return boolean_true_node;
|
||||
+ /* If both are the same, we can apply the identity
|
||||
+ (x OR x) == x. */
|
||||
+ else if (partial && same_bool_result_p (t, partial))
|
||||
+ return t;
|
||||
}
|
||||
|
||||
/* Handle the AND case, where we are redistributing:
|
||||
@@ -4000,13 +4003,13 @@
|
||||
operand to the redistributed AND expression. The
|
||||
interesting case is when at least one is true.
|
||||
Or, if both are the same, we can apply the identity
|
||||
- (x AND x) == true. */
|
||||
+ (x AND x) == x. */
|
||||
if (integer_onep (partial))
|
||||
return t;
|
||||
else if (integer_onep (t))
|
||||
return partial;
|
||||
else if (same_bool_result_p (t, partial))
|
||||
- return boolean_true_node;
|
||||
+ return t;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
2010-12-17 Bernd Schmidt <bernds@codesourcery.com>
|
||||
|
||||
Issue #10208
|
||||
|
||||
gcc/
|
||||
* config/arm/arm.c (arm_select_cc_mode): Before calling
|
||||
arm_select_dominance_cc_mode for AND or IOR operations, ensure
|
||||
that op is NE or EQ.
|
||||
|
||||
gcc/testsuite/
|
||||
* gcc.c-torture/compile/20101217-1.c: New test.
|
||||
|
||||
=== modified file 'gcc/config/arm/arm.c'
|
||||
--- old/gcc/config/arm/arm.c 2010-12-21 14:13:38 +0000
|
||||
+++ new/gcc/config/arm/arm.c 2011-01-05 11:32:50 +0000
|
||||
@@ -10609,12 +10609,14 @@
|
||||
|
||||
/* Alternate canonicalizations of the above. These are somewhat cleaner. */
|
||||
if (GET_CODE (x) == AND
|
||||
+ && (op == EQ || op == NE)
|
||||
&& COMPARISON_P (XEXP (x, 0))
|
||||
&& COMPARISON_P (XEXP (x, 1)))
|
||||
return arm_select_dominance_cc_mode (XEXP (x, 0), XEXP (x, 1),
|
||||
DOM_CC_X_AND_Y);
|
||||
|
||||
if (GET_CODE (x) == IOR
|
||||
+ && (op == EQ || op == NE)
|
||||
&& COMPARISON_P (XEXP (x, 0))
|
||||
&& COMPARISON_P (XEXP (x, 1)))
|
||||
return arm_select_dominance_cc_mode (XEXP (x, 0), XEXP (x, 1),
|
||||
|
||||
=== added file 'gcc/testsuite/gcc.c-torture/compile/20101217-1.c'
|
||||
--- old/gcc/testsuite/gcc.c-torture/compile/20101217-1.c 1970-01-01 00:00:00 +0000
|
||||
+++ new/gcc/testsuite/gcc.c-torture/compile/20101217-1.c 2011-01-05 11:32:50 +0000
|
||||
@@ -0,0 +1,36 @@
|
||||
+/* Testcase provided by HUAWEI. */
|
||||
+#include <stdio.h>
|
||||
+int main()
|
||||
+{
|
||||
+ int cur_k;
|
||||
+ int cur_j=0;
|
||||
+ int cur_i=28;
|
||||
+ unsigned char temp_data[8];
|
||||
+ unsigned int Data_Size=20;
|
||||
+
|
||||
+ for (cur_k=0;cur_j<7;cur_j++,cur_i++) {
|
||||
+ if (cur_j%2==0) {
|
||||
+ temp_data[cur_k++]=0;
|
||||
+ }
|
||||
+ if (cur_k==7) {
|
||||
+ for (;cur_k>0;cur_k--) {
|
||||
+ if (cur_k>2) {
|
||||
+ if ((temp_data[7-cur_k]=='n' || temp_data[7-cur_k]=='N' ) && (temp_data[7-cur_k+1]=='a' || temp_data[7-cur_k+1]=='A' )) {
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ if (cur_k==1) {
|
||||
+ if (temp_data[7-cur_k]=='n' || temp_data[7-cur_k]=='N' ) {
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ if (cur_k==7) {
|
||||
+ } else {
|
||||
+ if (cur_k>0)
|
||||
+ printf("dfjk");
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+return 0;
|
||||
+}
|
||||
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
2010-12-18 Andrew Stubbs <ams@codesourcery.com>
|
||||
|
||||
Backport from mainline:
|
||||
|
||||
gcc/
|
||||
2010-12-17 Andrew Stubbs <ams@codesourcery.com>
|
||||
|
||||
* config/arm/arm.md (maddhisi4, *maddhidi4): Use the canonical
|
||||
operand order for plus.
|
||||
Drop redundant % from constraints.
|
||||
|
||||
=== modified file 'gcc/config/arm/arm.md'
|
||||
--- old/gcc/config/arm/arm.md 2010-11-11 11:12:14 +0000
|
||||
+++ new/gcc/config/arm/arm.md 2011-01-05 11:42:19 +0000
|
||||
@@ -1791,11 +1791,11 @@
|
||||
|
||||
(define_insn "maddhisi4"
|
||||
[(set (match_operand:SI 0 "s_register_operand" "=r")
|
||||
- (plus:SI (match_operand:SI 3 "s_register_operand" "r")
|
||||
- (mult:SI (sign_extend:SI
|
||||
- (match_operand:HI 1 "s_register_operand" "%r"))
|
||||
+ (plus:SI (mult:SI (sign_extend:SI
|
||||
+ (match_operand:HI 1 "s_register_operand" "r"))
|
||||
(sign_extend:SI
|
||||
- (match_operand:HI 2 "s_register_operand" "r")))))]
|
||||
+ (match_operand:HI 2 "s_register_operand" "r")))
|
||||
+ (match_operand:SI 3 "s_register_operand" "r")))]
|
||||
"TARGET_DSP_MULTIPLY"
|
||||
"smlabb%?\\t%0, %1, %2, %3"
|
||||
[(set_attr "insn" "smlaxy")
|
||||
@@ -1805,11 +1805,11 @@
|
||||
(define_insn "*maddhidi4"
|
||||
[(set (match_operand:DI 0 "s_register_operand" "=r")
|
||||
(plus:DI
|
||||
- (match_operand:DI 3 "s_register_operand" "0")
|
||||
(mult:DI (sign_extend:DI
|
||||
- (match_operand:HI 1 "s_register_operand" "%r"))
|
||||
+ (match_operand:HI 1 "s_register_operand" "r"))
|
||||
(sign_extend:DI
|
||||
- (match_operand:HI 2 "s_register_operand" "r")))))]
|
||||
+ (match_operand:HI 2 "s_register_operand" "r")))
|
||||
+ (match_operand:DI 3 "s_register_operand" "0")))]
|
||||
"TARGET_DSP_MULTIPLY"
|
||||
"smlalbb%?\\t%Q0, %R0, %1, %2"
|
||||
[(set_attr "insn" "smlalxy")
|
||||
|
||||
|
|
@ -1,13 +1,25 @@
|
|||
Backport of http://gcc.gnu.org/ml/gcc-patches/2010-12/msg01096.html
|
||||
This should fix the ICE found in samba
|
||||
2010-12-21 Chung-Lin Tang <cltang@codesourcery.com>
|
||||
|
||||
-Khem
|
||||
Issue #10201
|
||||
|
||||
Index: a/gcc/config/arm/arm.md
|
||||
===================================================================
|
||||
--- a/gcc/config/arm/arm.md (revision 167797)
|
||||
+++ b/gcc/config/arm/arm.md (working copy)
|
||||
@@ -4137,8 +4137,8 @@
|
||||
Backport from mainline:
|
||||
|
||||
2010-12-16 Chung-Lin Tang <cltang@codesourcery.com>
|
||||
|
||||
PR target/46883
|
||||
gcc/
|
||||
* config/arm/arm.md
|
||||
(zero_extendhisi2 for register input splitter): Change
|
||||
"register_operand" to "s_register_operand".
|
||||
(zero_extendqisi2 for register input splitter): Same.
|
||||
|
||||
gcc/testsuite/
|
||||
* gcc.target/arm/pr46883.c: New testcase.
|
||||
|
||||
=== modified file 'gcc/config/arm/arm.md'
|
||||
--- old/gcc/config/arm/arm.md 2011-01-05 11:42:19 +0000
|
||||
+++ new/gcc/config/arm/arm.md 2011-01-05 11:52:16 +0000
|
||||
@@ -4114,8 +4114,8 @@
|
||||
})
|
||||
|
||||
(define_split
|
||||
|
|
@ -18,7 +30,7 @@ Index: a/gcc/config/arm/arm.md
|
|||
"!TARGET_THUMB2 && !arm_arch6"
|
||||
[(set (match_dup 0) (ashift:SI (match_dup 2) (const_int 16)))
|
||||
(set (match_dup 0) (lshiftrt:SI (match_dup 0) (const_int 16)))]
|
||||
@@ -4244,8 +4244,8 @@
|
||||
@@ -4234,8 +4234,8 @@
|
||||
})
|
||||
|
||||
(define_split
|
||||
|
|
@ -29,10 +41,10 @@ Index: a/gcc/config/arm/arm.md
|
|||
"!arm_arch6"
|
||||
[(set (match_dup 0) (ashift:SI (match_dup 2) (const_int 24)))
|
||||
(set (match_dup 0) (lshiftrt:SI (match_dup 0) (const_int 24)))]
|
||||
Index: a/gcc/testsuite/gcc.target/arm/pr46883.c
|
||||
===================================================================
|
||||
--- a/gcc/testsuite/gcc.target/arm/pr46883.c (revision 0)
|
||||
+++ b/gcc/testsuite/gcc.target/arm/pr46883.c (revision 0)
|
||||
|
||||
=== added file 'gcc/testsuite/gcc.target/arm/pr46883.c'
|
||||
--- old/gcc/testsuite/gcc.target/arm/pr46883.c 1970-01-01 00:00:00 +0000
|
||||
+++ new/gcc/testsuite/gcc.target/arm/pr46883.c 2011-01-05 11:52:16 +0000
|
||||
@@ -0,0 +1,16 @@
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-O1 -march=armv5te" } */
|
||||
|
|
@ -50,3 +62,4 @@ Index: a/gcc/testsuite/gcc.target/arm/pr46883.c
|
|||
+ (((data16s[i] & 0xFF) << 8) | ((data16s[i] >> 8) & 0xFF))) >> 8;
|
||||
+ }
|
||||
+}
|
||||
|
||||
3163
recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99456.patch
Normal file
3163
recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99456.patch
Normal file
File diff suppressed because it is too large
Load Diff
4236
recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99457.patch
Normal file
4236
recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99457.patch
Normal file
File diff suppressed because it is too large
Load Diff
25
recipes-devtools/gcc/gcc-4.5/sh4-multilib.patch
Normal file
25
recipes-devtools/gcc/gcc-4.5/sh4-multilib.patch
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
# DP: Fix multilib (m4/m4-nofpu) for sh4-linux
|
||||
|
||||
---
|
||||
a/gcc/config.gcc | 5 +++--
|
||||
1 files changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: gcc-4_5-branch/gcc/config.gcc
|
||||
===================================================================
|
||||
--- gcc-4_5-branch.orig/gcc/config.gcc 2010-12-23 00:33:39.000000000 -0800
|
||||
+++ gcc-4_5-branch/gcc/config.gcc 2011-01-09 02:57:36.608656002 -0800
|
||||
@@ -2321,11 +2321,12 @@
|
||||
if test "$sh_multilibs" = "default" ; then
|
||||
case ${target} in
|
||||
sh64-superh-linux* | \
|
||||
- sh[1234]*) sh_multilibs=${sh_cpu_target} ;;
|
||||
sh64* | sh5*) sh_multilibs=m5-32media,m5-32media-nofpu,m5-compact,m5-compact-nofpu,m5-64media,m5-64media-nofpu ;;
|
||||
- sh-superh-*) sh_multilibs=m4,m4-single,m4-single-only,m4-nofpu ;;
|
||||
+ sh-superh-* | \
|
||||
+ sh4-*-linux*) sh_multilibs=m4,m4-nofpu ;;
|
||||
sh*-*-linux*) sh_multilibs=m1,m3e,m4 ;;
|
||||
sh*-*-netbsd*) sh_multilibs=m3,m3e,m4 ;;
|
||||
+ sh-superh-*) sh_multilibs=m4,m4-single,m4-single-only,m4-nofpu ;;
|
||||
*) sh_multilibs=m1,m2,m2e,m4,m4-single,m4-single-only,m2a,m2a-single ;;
|
||||
esac
|
||||
if test x$with_fp = xno; then
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
# by default c++ include directories are not relative to "--sysroot"
|
||||
# which brings one trouble when using the toolchain in an environment
|
||||
# where the build directory generating that toolchain doesn't exist,
|
||||
# e.g. in sstate, machine specific sysroot and relocatable SDK
|
||||
# toolchain. This patch now enables c++ include paths under sysroot.
|
||||
# This way it's enough as long as "--sysroot" is correctly enabled
|
||||
# in the new environment.
|
||||
#
|
||||
# Signed-off-by Kevin Tian <kevin.tian@intel.com>, 2010-12-30
|
||||
|
||||
diff --git a/gcc/cppdefault.c b/gcc/cppdefault.c
|
||||
index 5024f48..9b47d1c 100644
|
||||
--- a/gcc/cppdefault.c
|
||||
+++ b/gcc/cppdefault.c
|
||||
@@ -48,15 +48,15 @@ const struct default_include cpp_include_defaults[]
|
||||
= {
|
||||
#ifdef GPLUSPLUS_INCLUDE_DIR
|
||||
/* Pick up GNU C++ generic include files. */
|
||||
- { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, 0, 0 },
|
||||
+ { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, 1, 0 },
|
||||
#endif
|
||||
#ifdef GPLUSPLUS_TOOL_INCLUDE_DIR
|
||||
/* Pick up GNU C++ target-dependent include files. */
|
||||
- { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, 0, 1 },
|
||||
+ { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, 1, 1 },
|
||||
#endif
|
||||
#ifdef GPLUSPLUS_BACKWARD_INCLUDE_DIR
|
||||
/* Pick up GNU C++ backward and deprecated include files. */
|
||||
- { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, 0, 0 },
|
||||
+ { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, 1, 0 },
|
||||
#endif
|
||||
#ifdef LOCAL_INCLUDE_DIR
|
||||
/* /usr/local/include comes before the fixincluded header files. */
|
||||
Loading…
Reference in New Issue
Block a user