Allow splat casts for OCU vector assignments & add some comments.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45442 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Sema/SemaExpr.cpp b/Sema/SemaExpr.cpp
index 99426a2..014e457 100644
--- a/Sema/SemaExpr.cpp
+++ b/Sema/SemaExpr.cpp
@@ -1129,7 +1129,15 @@
if (lhsType.getCanonicalType() != rhsType.getCanonicalType())
return Incompatible;
} else {
+ // For OCUVector, allow vector splats; float -> <n x float>
+ if (const OCUVectorType *LV = lhsType->getAsOCUVectorType()) {
+ if (LV->getElementType().getTypePtr() == rhsType.getTypePtr())
+ return Compatible;
+ }
if (lhsType->isVectorType() && rhsType->isVectorType()) {
+ // If LHS and RHS are both integer or both floating point types, and
+ // the total vector length is the same, allow the conversion. This is
+ // a bitcast; no bits are changed but the result type is different.
if ((lhsType->isIntegerType() && rhsType->isIntegerType()) ||
(lhsType->isRealFloatingType() &&
rhsType->isRealFloatingType())) {