[OpenCL] Declare builtin functions using TableGen
authorSven van Haastregt <sven.vanhaastregt@arm.com>
Mon, 3 Jun 2019 09:39:11 +0000 (09:39 +0000)
committerSven van Haastregt <sven.vanhaastregt@arm.com>
Mon, 3 Jun 2019 09:39:11 +0000 (09:39 +0000)
commit79a222fcf8c40a8a90e76118e2412e8697d02a89
tree37712489e82e193408f08b9c7558d1a09928adca
parent301f8fd6327932f0abc03da252aa294bdf6be6df
[OpenCL] Declare builtin functions using TableGen

This patch adds a `-fdeclare-opencl-builtins` command line option to
the clang frontend.  This enables clang to verify OpenCL C builtin
function declarations using a fast StringMatcher lookup, instead of
including the opencl-c.h file with the `-finclude-default-header`
option.  This avoids the large parse time penalty of the header file.

This commit only adds the basic infrastructure and some of the OpenCL
builtins.  It does not cover all builtins defined by the various OpenCL
specifications.  As such, it is not a replacement for
`-finclude-default-header` yet.

RFC: http://lists.llvm.org/pipermail/cfe-dev/2018-November/060041.html

Co-authored-by: Pierre Gondois
Co-authored-by: Joey Gouly
Co-authored-by: Sven van Haastregt
Differential Revision: https://reviews.llvm.org/D60763

llvm-svn: 362371
clang/include/clang/Basic/CMakeLists.txt
clang/include/clang/Basic/LangOptions.def
clang/include/clang/Basic/OpenCLBuiltins.td [new file with mode: 0644]
clang/include/clang/Driver/CC1Options.td
clang/lib/Frontend/CompilerInvocation.cpp
clang/lib/Sema/SemaLookup.cpp
clang/test/SemaOpenCL/fdeclare-opencl-builtins.cl [new file with mode: 0644]
clang/utils/TableGen/CMakeLists.txt
clang/utils/TableGen/ClangOpenCLBuiltinEmitter.cpp [new file with mode: 0644]
clang/utils/TableGen/TableGen.cpp
clang/utils/TableGen/TableGenBackends.h