Stephen Hines | 651f13c | 2014-04-23 16:59:28 -0700 | [diff] [blame] | 1 | From 10a4fc6c56a4ca26b225bf912948f96e9f55c81a Mon Sep 17 00:00:00 2001 |
| 2 | From: Tim Murray <timmurray@google.com> |
| 3 | Date: Thu, 3 Apr 2014 13:27:16 -0700 |
| 4 | Subject: [PATCH 2/4] Revert to old vector passing ABI for backwards |
| 5 | compatibility. |
| 6 | |
| 7 | Change-Id: I6d0e6db454de7090ef49001e9318eae5a1112e09 |
| 8 | --- |
| 9 | lib/CodeGen/TargetInfo.cpp | 6 +++--- |
| 10 | 1 file changed, 3 insertions(+), 3 deletions(-) |
| 11 | |
| 12 | diff --git a/lib/CodeGen/TargetInfo.cpp b/lib/CodeGen/TargetInfo.cpp |
| 13 | index d2e57ac..d3ab43a 100644 |
| 14 | --- a/lib/CodeGen/TargetInfo.cpp |
| 15 | +++ b/lib/CodeGen/TargetInfo.cpp |
| 16 | @@ -4403,7 +4403,7 @@ bool ARMABIInfo::isIllegalVectorType(QualType Ty) const { |
| 17 | unsigned NumElements = VT->getNumElements(); |
| 18 | uint64_t Size = getContext().getTypeSize(VT); |
| 19 | // NumElements should be power of 2. |
| 20 | - if ((NumElements & (NumElements - 1)) != 0) |
| 21 | + if (((NumElements & (NumElements - 1)) != 0) && NumElements != 3) |
| 22 | return true; |
| 23 | // Size should be greater than 32 bits. |
| 24 | return Size <= 32; |
| 25 | @@ -4437,8 +4437,8 @@ llvm::Value *ARMABIInfo::EmitVAArg(llvm::Value *VAListAddr, QualType Ty, |
| 26 | TyAlign = std::min(std::max(TyAlign, (uint64_t)4), (uint64_t)8); |
| 27 | else |
| 28 | TyAlign = 4; |
| 29 | - // Use indirect if size of the illegal vector is bigger than 16 bytes. |
| 30 | - if (isIllegalVectorType(Ty) && Size > 16) { |
| 31 | + // Use indirect if size of the illegal vector is bigger than 32 bytes. |
| 32 | + if (isIllegalVectorType(Ty) && Size > 32) { |
| 33 | IsIndirect = true; |
| 34 | Size = 4; |
| 35 | TyAlign = 4; |
| 36 | -- |
| 37 | 1.9.1.423.g4596e3a |
| 38 | |