summaryrefslogtreecommitdiff
path: root/packages/gcc/7.3.0/0017-crystax.patch
diff options
context:
space:
mode:
Diffstat (limited to 'packages/gcc/7.3.0/0017-crystax.patch')
-rw-r--r--packages/gcc/7.3.0/0017-crystax.patch45
1 files changed, 26 insertions, 19 deletions
diff --git a/packages/gcc/7.3.0/0017-crystax.patch b/packages/gcc/7.3.0/0017-crystax.patch
index 8f2eb43..51fad85 100644
--- a/packages/gcc/7.3.0/0017-crystax.patch
+++ b/packages/gcc/7.3.0/0017-crystax.patch
@@ -1,26 +1,33 @@
-commit dbeae1190cabad83999f2540523f045acc1bb4ec
-Author: Dmitry Moskalchuk <dm@crystax.net>
-Date: Fri Aug 21 17:41:59 2015 +0300
+commit 8a66d422721ae5999737d7825701ff22097d287b
+Author: Andrew Hsieh <andrewhsieh@google.com>
+Date: Mon Apr 14 21:05:51 2014 -0700
- [android] Always use gthr-posix.h instead of gthr-default.h
+ [android] Fix ARM generates insufficient alignment for NEON vst/vld
+ See d909af3e2469aad87d5c3e79b93c778fd26c03a9
+
+ Change-Id: Ie1de9f946f397196bb6f1623f5add86933739484
Signed-off-by: Dmitry Moskalchuk <dm@crystax.net>
---
- libgcc/gthr.h | 4 ++++
- 1 file changed, 4 insertions(+)
+ gcc/config/arm/arm.c | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
---- a/libgcc/gthr.h
-+++ b/libgcc/gthr.h
-@@ -145,7 +145,11 @@
- #define GTHREAD_USE_WEAK 1
- #endif
- #endif
-+#if __ANDROID__
-+#include "gthr-posix.h"
-+#else
- #include "gthr-default.h"
-+#endif
+--- a/gcc/config/arm/arm.c
++++ b/gcc/config/arm/arm.c
+@@ -22292,9 +22292,13 @@
+ memsize = MEM_SIZE (x);
- #ifndef HIDE_EXPORTS
- #pragma GCC visibility pop
+ /* Only certain alignment specifiers are supported by the hardware. */
+- if (memsize == 32 && (align % 32) == 0)
++ /* Note that ARM EABI only guarentees 8-byte stack alignment. While GCC
++ honors stricter alignment of composite type in user code, it doesn't
++ observe the alignment of memory passed as an extra argument for function
++ returning large composite type. See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57271 */
++ if (memsize == 32 && (align % 32) == 0 && !TARGET_AAPCS_BASED)
+ align_bits = 256;
+- else if ((memsize == 16 || memsize == 32) && (align % 16) == 0)
++ else if ((memsize == 16 || memsize == 32) && (align % 16) == 0 && !TARGET_AAPCS_BASED)
+ align_bits = 128;
+ else if (memsize >= 8 && (align % 8) == 0)
+ align_bits = 64;