[OpenCL] Allow disabling types and declarations associated with extensions
authorYaxun Liu <Yaxun.Liu@amd.com>
Fri, 16 Dec 2016 19:22:08 +0000 (19:22 +0000)
committerYaxun Liu <Yaxun.Liu@amd.com>
Fri, 16 Dec 2016 19:22:08 +0000 (19:22 +0000)
commit2e8331cab61615d3831f4eb497a38171eaccc9e7
tree9d77b116da67230781caacc4fd5d82c9260b17d8
parenta4e7dfbc16e6e9c786f01a325a3663e8028b4cc0
[OpenCL] Allow disabling types and declarations associated with extensions

Added a map to associate types and declarations with extensions.

Refactored existing diagnostic for disabled types associated with extensions and extended it to declarations for generic situation.

Fixed some bugs for types associated with extensions.

Allow users to use pragma to declare types and functions for supported extensions, e.g.

#pragma OPENCL EXTENSION the_new_extension_name : begin
// declare types and functions associated with the extension here
#pragma OPENCL EXTENSION the_new_extension_name : end

Differential Revision: https://reviews.llvm.org/D21698

llvm-svn: 289979
29 files changed:
clang/include/clang/Basic/DiagnosticParseKinds.td
clang/include/clang/Basic/DiagnosticSemaKinds.td
clang/include/clang/Basic/OpenCLImageTypes.def
clang/include/clang/Basic/OpenCLOptions.h
clang/include/clang/Basic/TargetInfo.h
clang/include/clang/Sema/Overload.h
clang/include/clang/Sema/Sema.h
clang/include/clang/Serialization/ASTBitCodes.h
clang/include/clang/Serialization/ASTReader.h
clang/include/clang/Serialization/ASTWriter.h
clang/lib/Basic/Targets.cpp
clang/lib/Frontend/InitPreprocessor.cpp
clang/lib/Headers/opencl-c.h
clang/lib/Parse/ParsePragma.cpp
clang/lib/Parse/Parser.cpp
clang/lib/Sema/DeclSpec.cpp
clang/lib/Sema/Sema.cpp
clang/lib/Sema/SemaCast.cpp
clang/lib/Sema/SemaDecl.cpp
clang/lib/Sema/SemaExpr.cpp
clang/lib/Sema/SemaOverload.cpp
clang/lib/Sema/SemaType.cpp
clang/lib/Serialization/ASTReader.cpp
clang/lib/Serialization/ASTWriter.cpp
clang/test/CodeGenOpenCL/extension-begin.cl [new file with mode: 0644]
clang/test/Parser/opencl-atomics-cl20.cl
clang/test/Parser/opencl-pragma.cl
clang/test/SemaOpenCL/extension-begin.cl [new file with mode: 0644]
clang/test/SemaOpenCL/extensions.cl