[OpenCL] Do not generate "kernel_arg_type_qual" metadata for non-pointer args
authorEgor Churaev <egor.churaev@gmail.com>
Fri, 31 Mar 2017 10:14:52 +0000 (10:14 +0000)
committerEgor Churaev <egor.churaev@gmail.com>
Fri, 31 Mar 2017 10:14:52 +0000 (10:14 +0000)
commitba8b84d7fb9b5e8253386930a9fa464cbeef3d81
treed5089c681016640ec3b45839b6fea95b572aed89
parent2a7d39dfe8cf0681baa5b64effc641a9c04a2a71
[OpenCL] Do not generate "kernel_arg_type_qual" metadata for non-pointer args

Summary:
"kernel_arg_type_qual" metadata should contain const/volatile/restrict
tags only for pointer types to match the corresponding requirement of
the OpenCL specification.

OpenCL 2.0 spec 5.9.3 Kernel Object Queries:

CL_KERNEL_ARG_TYPE_VOLATILE is returned if the argument is a pointer
and the referenced type is declared with the volatile qualifier.
[...]
Similarly, CL_KERNEL_ARG_TYPE_CONST is returned if the argument is a
pointer and the referenced type is declared with the restrict or const
qualifier.
[...]
CL_KERNEL_ARG_TYPE_RESTRICT will be returned if the pointer type is
marked restrict.

Reviewers: Anastasia, cfe-commits

Reviewed By: Anastasia

Subscribers: bader, yaxunl

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

llvm-svn: 299192
clang/lib/CodeGen/CodeGenFunction.cpp
clang/test/CodeGenOpenCL/kernel-arg-info.cl