[PATCH] D53153: [OpenCL] Mark namespace scope variables and kernel functions with default visibility

Richard Smith - zygoloid via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Oct 12 13:15:43 PDT 2018


rsmith added a comment.

In https://reviews.llvm.org/D53153#1263848, @scott.linder wrote:

> Beyond constructors/destructors I believe an API which we implement through access to dynamic symbols for global variable is `clGetProgramBuildInfo(..., CL_PROGRAM_BUILD_GLOBAL_VARIABLE_TOTAL_SIZE, ...)` which is defined as "The total amount of storage, in bytes, used by program variables in the global address space."


Presumably this is looking at the size of a certain section / segment of the image. It's unclear to me why symbol visibility would affect this in any way.

> As for kernels, an example of an API which we implement through access to kernel symbols is `clGetProgramInfo(..., CL_PROGRAM_KERNEL_NAMES, ...)`

Sure. `kernel`, like `dllexport` or `visibility(default)`, seems to act as declaring a function to be part of the external interface of the code, and it makes sense for all of those to override a command-line `-fvisibility` flag.

But it's still unclear to me what effect someone would expect `-fvisibility=hidden` to have when compiling OpenCL code. What are these symbols being hidden-by-default *from*, if not the host-side OpenCL runtime? Is there ever actually have a device-side dynamic linker?


https://reviews.llvm.org/D53153





More information about the cfe-commits mailing list