[OpenCL] Disallow negative attribute arguments
authorAndrew Savonichev <andrew.savonichev@intel.com>
Thu, 6 Sep 2018 11:54:09 +0000 (11:54 +0000)
committerAndrew Savonichev <andrew.savonichev@intel.com>
Thu, 6 Sep 2018 11:54:09 +0000 (11:54 +0000)
commitd353e6d748e0c151884345f2c08f1b988c5e7b94
tree4ddbb0e8d14ff14b249d4ac72378caee28378fe2
parent5c4d6e66f0caa4b6deb8d7008372efbd1c0aae49
[OpenCL] Disallow negative attribute arguments

Summary:
Negative arguments in kernel attributes are silently bitcast'ed to
unsigned, for example:

    __attribute__((reqd_work_group_size(1, -1, 1)))
    __kernel void k() {}

is a complete equivalent of:

    __attribute__((reqd_work_group_size(1, 4294967294, 1)))
    __kernel void k() {}

This is likely an error, so the patch forbids negative arguments in
several OpenCL attributes. Users who really want 4294967294 can still
use it as an unsigned representation.

Reviewers: Anastasia, yaxunl, bader

Reviewed By: Anastasia, yaxunl, bader

Subscribers: bader, cfe-commits

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

llvm-svn: 341539
clang/include/clang/Basic/DiagnosticSemaKinds.td
clang/lib/Sema/SemaDeclAttr.cpp
clang/test/SemaOpenCL/invalid-kernel-attrs.cl