[OpenCL] Implemented restrictions for pointer conversions specified in OpenCL v2.0.
authorAnastasia Stulova <anastasia.stulova@arm.com>
Wed, 26 Nov 2014 15:36:41 +0000 (15:36 +0000)
committerAnastasia Stulova <anastasia.stulova@arm.com>
Wed, 26 Nov 2014 15:36:41 +0000 (15:36 +0000)
commit5d8ad8a7b8911308a531ad87e8284088ea7f8002
treed9a72c7d8fe4ccd9d890d167c6e30539d447d685
parent9fb411431d4df41f562008fc4580230fc2ee4362
[OpenCL] Implemented restrictions for pointer conversions specified in OpenCL v2.0.

OpenCL v2.0 s6.5.5 restricts conversion of pointers to different address spaces:
- the named address spaces (__global, __local, and __private) => __generic - implicitly converted;
- __generic => named - with an explicit cast;
- named <=> named - disallowed;
- __constant <=> any other - disallowed.

llvm-svn: 222834
clang/include/clang/AST/Type.h
clang/include/clang/Basic/DiagnosticSemaKinds.td
clang/lib/AST/ExprConstant.cpp
clang/lib/CodeGen/CGExprScalar.cpp
clang/lib/Sema/SemaCast.cpp
clang/lib/Sema/SemaExpr.cpp
clang/test/CodeGenOpenCL/address-spaces-conversions.cl [new file with mode: 0644]
clang/test/SemaOpenCL/address-spaces-conversions-cl2.0.cl [new file with mode: 0644]