diff options
-rw-r--r-- | lib/Sema/SemaExpr.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp index c115061164..ac764ab800 100644 --- a/lib/Sema/SemaExpr.cpp +++ b/lib/Sema/SemaExpr.cpp @@ -5461,6 +5461,13 @@ Sema::CheckAssignmentConstraints(QualType lhsType, Expr *&rhs, if (lhsType->isVectorType() || rhsType->isVectorType()) { if (lhsType->isVectorType() && rhsType->isVectorType()) { + // Allow assignments of an AltiVec vector type to an equivalent GCC + // vector type and vice versa + if (Context.areCompatibleVectorTypes(lhsType, rhsType)) { + Kind = CK_BitCast; + return Compatible; + } + // If we are allowing lax vector conversions, and LHS and RHS are both // vectors, the total size only needs to be the same. This is a bitcast; // no bits are changed but the result type is different. @@ -5469,13 +5476,6 @@ Sema::CheckAssignmentConstraints(QualType lhsType, Expr *&rhs, Kind = CK_BitCast; return IncompatibleVectors; } - - // Allow assignments of an AltiVec vector type to an equivalent GCC - // vector type and vice versa - if (Context.areCompatibleVectorTypes(lhsType, rhsType)) { - Kind = CK_BitCast; - return Compatible; - } } return Incompatible; } |