summaryrefslogtreecommitdiffstats
path: root/clang/lib/Basic/Targets.cpp
diff options
context:
space:
mode:
authorJaved Absar <javed.absar@arm.com>2017-05-30 10:12:15 +0000
committerJaved Absar <javed.absar@arm.com>2017-05-30 10:12:15 +0000
commit3d92d7ab36e23b1de25c1bfca16c166df54d1fb2 (patch)
tree5c1c45ba5c0111dada7aa4e1bf4d31deccf05444 /clang/lib/Basic/Targets.cpp
parent6ceea9a4d38031155fad4243bdb26904c0b1c349 (diff)
downloadbcm5719-llvm-3d92d7ab36e23b1de25c1bfca16c166df54d1fb2.tar.gz
bcm5719-llvm-3d92d7ab36e23b1de25c1bfca16c166df54d1fb2.zip
[ARM] Fix Neon vector type alignment to 64-bit
The maximum alignment for ARM NEON data types should be 64-bits as specified in ARM procedure call standard document Sec. A.2 Notes. This patch fixes it from its current larger natural default values, except for Android (so as not to break existing ABI). Reviewed by: Stephen Hines, Renato Golin. Differential Revision: https://reviews.llvm.org/D33205 llvm-svn: 304201
Diffstat (limited to 'clang/lib/Basic/Targets.cpp')
-rw-r--r--clang/lib/Basic/Targets.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp
index 6be83d22a25..f8e29ff3375 100644
--- a/clang/lib/Basic/Targets.cpp
+++ b/clang/lib/Basic/Targets.cpp
@@ -5382,6 +5382,11 @@ public:
// ARM has atomics up to 8 bytes
setAtomic();
+ if (Triple.getEnvironment() == llvm::Triple::Android)
+ MaxVectorAlign = 128; // don't break existing Android ABI
+ else
+ MaxVectorAlign = 64; // AAPCS
+
// Do force alignment of members that follow zero length bitfields. If
// the alignment of the zero-length bitfield is greater than the member
// that follows it, `bar', `bar' will be aligned as the type of the
OpenPOWER on IntegriCloud