summaryrefslogtreecommitdiff
path: root/packages/gcc/10.3.0/0015-crystax.patch
diff options
context:
space:
mode:
authorKumar Gala <kumar.gala@linaro.org>2021-04-08 17:26:30 (GMT)
committerKumar Gala <kumar.gala@linaro.org>2021-04-08 17:52:38 (GMT)
commitcf0776ed0406a9902ea811ae079c96bb56a456a6 (patch)
treef9607a3bb28dcc6cad91335cf1fe0583b478a68f /packages/gcc/10.3.0/0015-crystax.patch
parent7915dd4fff58ce03804e41a0e6ae4a8c15e9ca03 (diff)
Update to gcc release 10.3.0
Drop patches already in 10.3.0 that had been backported Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
Diffstat (limited to 'packages/gcc/10.3.0/0015-crystax.patch')
-rw-r--r--packages/gcc/10.3.0/0015-crystax.patch33
1 files changed, 33 insertions, 0 deletions
diff --git a/packages/gcc/10.3.0/0015-crystax.patch b/packages/gcc/10.3.0/0015-crystax.patch
new file mode 100644
index 0000000..1a4f6b3
--- /dev/null
+++ b/packages/gcc/10.3.0/0015-crystax.patch
@@ -0,0 +1,33 @@
+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>
+
+---
+ gcc/config/arm/arm.c | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+--- a/gcc/config/arm/arm.c
++++ b/gcc/config/arm/arm.c
+@@ -24077,9 +24077,13 @@ arm_print_operand (FILE *stream, rtx x,
+ 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;