diff options
author | Alexey Neyman <stilor@att.net> | 2017-05-15 21:12:36 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-05-15 21:12:36 -0700 |
commit | 1dbb06f2d375d58f12e79399b64b3111fc4d35fc (patch) | |
tree | b2b8807fd6c7d0d700b3efd724fb308182001cb1 /patches/gcc/7.1.0/975-crystax.patch | |
parent | ef762bfe8e1ec9063d645b1745dc8843997b7767 (diff) | |
parent | 97a20eed5c3cf3a2f7bb261705405b8b16c56b36 (diff) | |
download | crosstool-ng-1dbb06f2d375d58f12e79399b64b3111fc4d35fc.tar.gz crosstool-ng-1dbb06f2d375d58f12e79399b64b3111fc4d35fc.tar.bz2 crosstool-ng-1dbb06f2d375d58f12e79399b64b3111fc4d35fc.zip |
Merge pull request #717 from stilor/merge-bionic
Merge bionic
Diffstat (limited to 'patches/gcc/7.1.0/975-crystax.patch')
-rw-r--r-- | patches/gcc/7.1.0/975-crystax.patch | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/patches/gcc/7.1.0/975-crystax.patch b/patches/gcc/7.1.0/975-crystax.patch new file mode 100644 index 00000000..9efc2a48 --- /dev/null +++ b/patches/gcc/7.1.0/975-crystax.patch @@ -0,0 +1,31 @@ +commit 8a66d422721ae5999737d7825701ff22097d287b +Author: Andrew Hsieh <andrewhsieh@google.com> +Date: Mon Apr 14 21:05:51 2014 -0700 + + [android] Fix ARM generates insufficient alignment for NEON vst/vld + + See d909af3e2469aad87d5c3e79b93c778fd26c03a9 + + Change-Id: Ie1de9f946f397196bb6f1623f5add86933739484 + Signed-off-by: Dmitry Moskalchuk <dm@crystax.net> + +diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c +index 5974c65d3..71b2c7aa9 100644 +--- a/gcc/config/arm/arm.c ++++ b/gcc/config/arm/arm.c +@@ -22403,9 +22403,13 @@ arm_print_operand (FILE *stream, rtx x, int code) + memsize = MEM_SIZE (x); + + /* 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; |