summaryrefslogtreecommitdiffstats
path: root/media/libopus/gcc-4.8-ICE.patch
diff options
context:
space:
mode:
Diffstat (limited to 'media/libopus/gcc-4.8-ICE.patch')
-rw-r--r--media/libopus/gcc-4.8-ICE.patch39
1 files changed, 39 insertions, 0 deletions
diff --git a/media/libopus/gcc-4.8-ICE.patch b/media/libopus/gcc-4.8-ICE.patch
new file mode 100644
index 000000000..92a74e325
--- /dev/null
+++ b/media/libopus/gcc-4.8-ICE.patch
@@ -0,0 +1,39 @@
+From 609166a46f6a22ae2d0a0ab7c64415c779c65f37 Mon Sep 17 00:00:00 2001
+From: Juan Gomez <atilag@gmail.com>
+Date: Wed, 26 Nov 2014 23:57:49 +0100
+Subject: [PATCH] Bug 1056337 - Upgrade toolchain used for B2G ICS builds *
+ Patch for gcc ICE in OPUS library (arm)
+
+---
+ media/libopus/celt/rate.c | 11 ++++++++++-
+ 1 file changed, 10 insertions(+), 1 deletion(-)
+
+diff --git a/media/libopus/celt/rate.c b/media/libopus/celt/rate.c
+index e13d839..1055e63 100644
+--- a/media/libopus/celt/rate.c
++++ b/media/libopus/celt/rate.c
+@@ -523,6 +523,12 @@ static OPUS_INLINE int interp_bits2pulses(const CELTMode *m, int start, int end,
+ return codedBands;
+ }
+
++#if !defined(__clang__) && defined(__GNUC__) && defined(__arm__) && \
++ __GNUC__ == 4 && __GNUC_MINOR__ == 8
++#warning "OPUS library causes an internal compiler error for gcc-4.8 based toolchain in arm"
++#pragma GCC push_options
++#pragma GCC optimize ("O0")
++#endif
+ int compute_allocation(const CELTMode *m, int start, int end, const int *offsets, const int *cap, int alloc_trim, int *intensity, int *dual_stereo,
+ opus_int32 total, opus_int32 *balance, int *pulses, int *ebits, int *fine_priority, int C, int LM, ec_ctx *ec, int encode, int prev, int signalBandwidth)
+ {
+@@ -635,4 +641,7 @@ int compute_allocation(const CELTMode *m, int start, int end, const int *offsets
+ RESTORE_STACK;
+ return codedBands;
+ }
+-
++#if !defined(__clang__) && defined(__GNUC__) && defined(__arm__) && \
++ __GNUC__ == 4 && __GNUC_MINOR__ == 8
++#pragma GCC pop_options
++#endif
+--
+2.1.0
+