Check in a couple fixes for vector extensions.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48461 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp
index d756345..8df023f 100644
--- a/lib/Sema/SemaExpr.cpp
+++ b/lib/Sema/SemaExpr.cpp
@@ -547,7 +547,7 @@
MemberLoc, MemberType);
} else if (BaseType->isOCUVectorType() && OpKind == tok::period) {
// Component access limited to variables (reject vec4.rg.g).
- if (!isa<DeclRefExpr>(BaseExpr))
+ if (!isa<DeclRefExpr>(BaseExpr) && !isa<ArraySubscriptExpr>(BaseExpr))
return Diag(OpLoc, diag::err_ocuvector_component_access,
SourceRange(MemberLoc));
QualType ret = CheckOCUVectorComponent(BaseType, OpLoc, Member, MemberLoc);
@@ -1284,7 +1284,7 @@
QualType lhsType = lex->getType(), rhsType = rex->getType();
// make sure the vector types are identical.
- if (lhsType == rhsType)
+ if (lhsType.getCanonicalType() == rhsType.getCanonicalType())
return lhsType;
// if the lhs is an ocu vector and the rhs is a scalar of the same type,