r335362 - [OpenCL] Fixed parsing of address spaces for C++.

Anastasia Stulova via cfe-commits cfe-commits at lists.llvm.org
Fri Jun 22 09:20:22 PDT 2018


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__
 }




More information about the cfe-commits mailing list