diff options
Diffstat (limited to 'packages/gcc/7.3.0/0017-crystax.patch')
-rw-r--r-- | packages/gcc/7.3.0/0017-crystax.patch | 45 |
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 8f2eb438..51fad853 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; |