Kernel function names have to be preserved as in the original source to be able to access them from the host API side.
This patch adds restriction to kernels that prevents them to be used in overloading, templates, etc. This is implemented by enclosing the kernels implicitly into C linkage clause. Therefore all C linkage restrictions will apply to the kernels.
Both of these changes should be unnecessary because they ultimately defer to isInExternCContext.
I assume that OpenCL bans making a class member function a kernel?