Clang Project

clang_source_code/test/SemaOpenCLCXX/address-space-of-this-class-scope.cl
1//RUN: %clang_cc1 %s -triple spir-unknown-unknown -cl-std=c++ -pedantic -verify
2
3struct C {
4  auto fGlob() __global -> decltype(this);
5  auto fGen() -> decltype(this);
6  auto fErr() __global __local -> decltype(this); //expected-error{{multiple address spaces specified for type}}
7};
8
9void bar(__local C*);
10// expected-note@-1{{candidate function not viable: address space mismatch in 1st argument ('decltype(this)' (aka '__global C *')), parameter type must be '__local C *'}}
11// expected-note@-2{{candidate function not viable: address space mismatch in 1st argument ('decltype(this)' (aka 'C *')), parameter type must be '__local C *'}}
12
13__global C Glob;
14void foo(){
15bar(Glob.fGlob()); // expected-error{{no matching function for call to 'bar'}}
16// FIXME: AS of 'this' below should be correctly deduced to generic
17bar(Glob.fGen()); // expected-error{{no matching function for call to 'bar'}}
18}
19