[OpenCL] Stop opencl-c-base.h leaking extension enabling
authorSven van Haastregt <sven.vanhaastregt@arm.com>
Tue, 17 Nov 2020 12:07:40 +0000 (12:07 +0000)
committerSven van Haastregt <sven.vanhaastregt@arm.com>
Tue, 17 Nov 2020 12:07:40 +0000 (12:07 +0000)
commitf0c690018ad1fb4746da3aca26a443c0f96530fa
treea7e4ff0995205d3beb32e151763b04f076ddca0a
parent6795984a47dfd2da4f451ad86a99021d6c9f85b5
[OpenCL] Stop opencl-c-base.h leaking extension enabling

opencl-c.h disables all extensions at its end, but opencl-c-base.h
does not, and that causes any inclusion of only opencl-c-base.h to
leave some extensions (such as cl_khr_fp16) enabled.  This affects the
-fdeclare-opencl-builtins option for example.

This violates the OpenCL Extension Specification which specifies that
"The initial state of the compiler is as if the directive #pragma
OPENCL EXTENSION all : disable was issued".

Fix by disabling all extensions at the end of opencl-c-base.h and
enable extensions inside opencl.h which relied on opencl-c-base.h
enabling the cl_khr_fp16/64 extensions.

Differential Revision: https://reviews.llvm.org/D91429
clang/lib/Headers/opencl-c-base.h
clang/lib/Headers/opencl-c.h
clang/test/SemaOpenCL/half.cl