forked from OSchip/llvm-project
[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. llvm-svn: 335362
This commit is contained in:
parent
43de6db2f4
commit
7f785bb458
|
@ -1357,6 +1357,11 @@ Parser::isCXXDeclarationSpecifier(Parser::TPResult BracedCastResult,
|
|||
// 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:
|
||||
|
|
|
@ -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__
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue