[OpenCL][Sema] Improve address space support for blocks
authorMarco Antognini <marco.antognini@arm.com>
Tue, 9 Jul 2019 15:04:27 +0000 (15:04 +0000)
committerMarco Antognini <marco.antognini@arm.com>
Tue, 9 Jul 2019 15:04:27 +0000 (15:04 +0000)
commitd36e130a86d15715d8f1e4097333216f7f27ca5d
tree873a610f0f0a91025d465274c0e066c336b1b17a
parentb00d5f732cd3f6f8bd86d2c5f7ddb2ce5bca8740
[OpenCL][Sema] Improve address space support for blocks

Summary:
This patch ensures that the following code is compiled identically with
-cl-std=CL2.0 and -fblocks -cl-std=c++.

    kernel void test(void) {
      void (^const block_A)(void) = ^{
        return;
      };
    }

A new test is not added because cl20-device-side-enqueue.cl will cover
this once blocks are further improved for C++ for OpenCL.

The changes to Sema::PerformImplicitConversion are based on
the parts of Sema::CheckAssignmentConstraints on block pointer
conversions.

Reviewers: rjmccall, Anastasia

Subscribers: yaxunl, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D64083

llvm-svn: 365500
clang/lib/Sema/SemaExprCXX.cpp