Author: stulova Date: Fri Jun 22 09:20:21 2018 New Revision: 335362 URL: http://llvm.org/viewvc/llvm-project?rev=335362&view=rev Log: [OpenCL] Fixed parsing of address spaces for C++.
Added address space tokens to C++ parsing code to be able to parse declarations that start from an address space keyword. Modified: cfe/trunk/lib/Parse/ParseTentative.cpp cfe/trunk/test/SemaOpenCL/address-spaces.cl Modified: cfe/trunk/lib/Parse/ParseTentative.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseTentative.cpp?rev=335362&r1=335361&r2=335362&view=diff ============================================================================== --- cfe/trunk/lib/Parse/ParseTentative.cpp (original) +++ cfe/trunk/lib/Parse/ParseTentative.cpp Fri Jun 22 09:20:21 2018 @@ -1357,6 +1357,11 @@ Parser::isCXXDeclarationSpecifier(Parser // cv-qualifier case tok::kw_const: case tok::kw_volatile: + case tok::kw___private: + case tok::kw___local: + case tok::kw___global: + case tok::kw___constant: + case tok::kw___generic: // GNU case tok::kw_restrict: Modified: cfe/trunk/test/SemaOpenCL/address-spaces.cl URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaOpenCL/address-spaces.cl?rev=335362&r1=335361&r2=335362&view=diff ============================================================================== --- cfe/trunk/test/SemaOpenCL/address-spaces.cl (original) +++ cfe/trunk/test/SemaOpenCL/address-spaces.cl Fri Jun 22 09:20:21 2018 @@ -1,5 +1,6 @@ // RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only // RUN: %clang_cc1 %s -cl-std=CL2.0 -verify -pedantic -fsyntax-only +// RUN: %clang_cc1 %s -cl-std=c++ -verify -pedantic -fsyntax-only __constant int ci = 1; @@ -8,6 +9,8 @@ __kernel void foo(__global int *gip) { __local int lj = 2; // expected-error {{'__local' variable cannot have an initializer}} int *ip; +// FIXME: Temporarily disable part of the test that doesn't work for C++ yet. +#if !__OPENCL_CPP_VERSION__ #if __OPENCL_C_VERSION__ < 200 ip = gip; // expected-error {{assigning '__global int *' to 'int *' changes address space of pointer}} ip = &li; // expected-error {{assigning '__local int *' to 'int *' changes address space of pointer}} @@ -64,4 +67,5 @@ void func_multiple_addr(void) { __local private_int_t *var4; // expected-error {{multiple address spaces specified for type}} __private private_int_t var5; // expected-warning {{multiple identical address spaces specified for type}} __private private_int_t *var6;// expected-warning {{multiple identical address spaces specified for type}} +#endif // !__OPENCL_CXX_VERSION__ } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits