aboutsummaryrefslogtreecommitdiffstats
path: root/toolchain/gcc
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2015-09-03 13:14:44 +0000
committerFelix Fietkau <nbd@openwrt.org>2015-09-03 13:14:44 +0000
commit1028345314ebcbacd1049dc2171fbf3353448605 (patch)
tree8b0e337d4caf4bf9f477e1f9f3688fd40a71b225 /toolchain/gcc
parent34283768ad98badfe03b2a865a96e1569a792248 (diff)
downloadmaster-187ad058-1028345314ebcbacd1049dc2171fbf3353448605.tar.gz
master-187ad058-1028345314ebcbacd1049dc2171fbf3353448605.tar.bz2
master-187ad058-1028345314ebcbacd1049dc2171fbf3353448605.zip
gcc: add ARM codegen fix from PR 65932
Signed-off-by: Felix Fietkau <nbd@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@46774 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'toolchain/gcc')
-rw-r--r--toolchain/gcc/Config.in1
-rw-r--r--toolchain/gcc/patches/5.2.0/030-fix-arm-codegen-PR-65932.patch21
2 files changed, 21 insertions, 1 deletions
diff --git a/toolchain/gcc/Config.in b/toolchain/gcc/Config.in
index f5de52db6f..8a68056e9a 100644
--- a/toolchain/gcc/Config.in
+++ b/toolchain/gcc/Config.in
@@ -23,7 +23,6 @@ choice
config GCC_USE_VERSION_5
select GCC_VERSION_5
bool "gcc 5.x"
- depends on BROKEN
endchoice
diff --git a/toolchain/gcc/patches/5.2.0/030-fix-arm-codegen-PR-65932.patch b/toolchain/gcc/patches/5.2.0/030-fix-arm-codegen-PR-65932.patch
new file mode 100644
index 0000000000..7f0b43c0e9
--- /dev/null
+++ b/toolchain/gcc/patches/5.2.0/030-fix-arm-codegen-PR-65932.patch
@@ -0,0 +1,21 @@
+Fix from https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65932
+
+--- a/gcc/config/arm/arm.h
++++ b/gcc/config/arm/arm.h
+@@ -628,16 +628,10 @@ extern int arm_arch_crc;
+ type, but kept valid in the wider mode. The signedness of the
+ extension may differ from that of the type. */
+
+-/* It is far faster to zero extend chars than to sign extend them */
+-
+ #define PROMOTE_MODE(MODE, UNSIGNEDP, TYPE) \
+ if (GET_MODE_CLASS (MODE) == MODE_INT \
+ && GET_MODE_SIZE (MODE) < 4) \
+ { \
+- if (MODE == QImode) \
+- UNSIGNEDP = 1; \
+- else if (MODE == HImode) \
+- UNSIGNEDP = 1; \
+ (MODE) = SImode; \
+ }
+