This feature allows using non-portable types as kernel parameters. This allows bypassing the portability guarantees from the restrictions specified
in C++ for OpenCL v1.0 s2.4.
Currently this only disables the restrictions related to layout, as a programmer using the same compiler for host and device should get the same representation.
This could be extended to other things (like size_t) if desired in the future, but I think it's unlikely that someone would want that.
Previous discussion about the extension in https://bugs.llvm.org/show_bug.cgi?id=50081
How about __cl_clang_unsafe_kernel_parameters to match the other extension naming scheme? Or we could use __cl_clang_non_portable_kernel_parameters, __cl_clang_non_portable_kernel_parameter_types to be more specific regarding the kind of safety that we allow to break?