mirror of https://github.com/microsoft/clang.git
OpenCL allows the (pre/post)-(increment/decrement) operator on integer vector types,
so allow that case and add appropriate tests. Patch by Ruiling Song! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190129 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
2f0a020d29
commit
d7d94dc922
|
@ -8413,6 +8413,9 @@ static QualType CheckIncrementDecrementOperand(Sema &S, Expr *Op,
|
|||
IsInc, IsPrefix);
|
||||
} else if (S.getLangOpts().AltiVec && ResType->isVectorType()) {
|
||||
// OK! ( C/C++ Language Extensions for CBEA(Version 2.6) 10.3 )
|
||||
} else if(S.getLangOpts().OpenCL && ResType->isVectorType() &&
|
||||
ResType->getAs<VectorType>()->getElementType()->isIntegerType()) {
|
||||
// OpenCL V1.2 6.3 says dec/inc ops operate on integer vector types.
|
||||
} else {
|
||||
S.Diag(OpLoc, diag::err_typecheck_illegal_increment_decrement)
|
||||
<< ResType << int(IsInc) << Op->getSourceRange();
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only
|
||||
// expected-no-diagnostics
|
||||
|
||||
typedef __attribute__((ext_vector_type(2))) char char2;
|
||||
typedef __attribute__((ext_vector_type(4))) unsigned int uint4;
|
||||
typedef __attribute__((ext_vector_type(8))) long long8;
|
||||
|
||||
void vectorIncrementDecrementOps()
|
||||
{
|
||||
char2 A = (char2)(1);
|
||||
uint4 B = (uint4)(1);
|
||||
long8 C = (long8)(1);
|
||||
|
||||
A++;
|
||||
--A;
|
||||
B--;
|
||||
++B;
|
||||
C++;
|
||||
}
|
Loading…
Reference in New Issue