forked from OSchip/llvm-project
Ignore qualifiers when checking vector operands, just like scalar operands.
This prevents things like a += b[0]; where a is a float4 and b is a float4 * (address_space 1) llvm-svn: 49199
This commit is contained in:
parent
14bee50e06
commit
002e4bd158
|
@ -1286,10 +1286,13 @@ QualType Sema::InvalidOperands(SourceLocation loc, Expr *&lex, Expr *&rex) {
|
|||
|
||||
inline QualType Sema::CheckVectorOperands(SourceLocation loc, Expr *&lex,
|
||||
Expr *&rex) {
|
||||
QualType lhsType = lex->getType(), rhsType = rex->getType();
|
||||
// For conversion purposes, we ignore any qualifiers.
|
||||
// For example, "const float" and "float" are equivalent.
|
||||
QualType lhsType = lex->getType().getCanonicalType().getUnqualifiedType();
|
||||
QualType rhsType = rex->getType().getCanonicalType().getUnqualifiedType();
|
||||
|
||||
// make sure the vector types are identical.
|
||||
if (lhsType.getCanonicalType() == rhsType.getCanonicalType())
|
||||
if (lhsType == rhsType)
|
||||
return lhsType;
|
||||
|
||||
// if the lhs is an ocu vector and the rhs is a scalar of the same type,
|
||||
|
|
Loading…
Reference in New Issue