From: Anastasia Stulova Date: Thu, 20 Nov 2014 19:25:00 +0000 (+0000) Subject: Extended list of valid frontend options with '-cl-std=CL2.0'. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f099cf5ce6c4d61f5bf2a97017ad631954e78d13;p=clang Extended list of valid frontend options with '-cl-std=CL2.0'. This option sets language mode for the compilation of a source file to be OpenCL v2.0. Example: clang -cc1 -cl-std=CL2.0 myfile.cl git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@222444 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Frontend/LangStandards.def b/include/clang/Frontend/LangStandards.def index 5bcabaad12..cac9c3c415 100644 --- a/include/clang/Frontend/LangStandards.def +++ b/include/clang/Frontend/LangStandards.def @@ -141,6 +141,9 @@ LANGSTANDARD(opencl11, "CL1.1", LANGSTANDARD(opencl12, "CL1.2", "OpenCL 1.2", LineComment | C99 | Digraphs | HexFloat) +LANGSTANDARD(opencl20, "CL2.0", + "OpenCL 2.0", + LineComment | C99 | Digraphs | HexFloat) // CUDA LANGSTANDARD(cuda, "cuda", diff --git a/lib/Frontend/CompilerInvocation.cpp b/lib/Frontend/CompilerInvocation.cpp index a57c8b508e..f261c6c733 100644 --- a/lib/Frontend/CompilerInvocation.cpp +++ b/lib/Frontend/CompilerInvocation.cpp @@ -1172,10 +1172,12 @@ void CompilerInvocation::setLangDefaults(LangOptions &Opts, InputKind IK, if (LangStd == LangStandard::lang_opencl) Opts.OpenCLVersion = 100; else if (LangStd == LangStandard::lang_opencl11) - Opts.OpenCLVersion = 110; + Opts.OpenCLVersion = 110; else if (LangStd == LangStandard::lang_opencl12) Opts.OpenCLVersion = 120; - + else if (LangStd == LangStandard::lang_opencl20) + Opts.OpenCLVersion = 200; + // OpenCL has some additional defaults. if (Opts.OpenCL) { Opts.AltiVec = 0; @@ -1323,6 +1325,7 @@ static void ParseLangArgs(LangOptions &Opts, ArgList &Args, InputKind IK, .Case("CL", LangStandard::lang_opencl) .Case("CL1.1", LangStandard::lang_opencl11) .Case("CL1.2", LangStandard::lang_opencl12) + .Case("CL2.0", LangStandard::lang_opencl20) .Default(LangStandard::lang_unspecified); if (OpenCLLangStd == LangStandard::lang_unspecified) { diff --git a/test/Frontend/std.cl b/test/Frontend/std.cl new file mode 100644 index 0000000000..b811b64dab --- /dev/null +++ b/test/Frontend/std.cl @@ -0,0 +1,9 @@ +// RUN: %clang_cc1 %s -fsyntax-only -cl-std=CL +// RUN: %clang_cc1 %s -fsyntax-only -cl-std=CL1.1 +// RUN: %clang_cc1 %s -fsyntax-only -cl-std=CL1.2 +// RUN: %clang_cc1 %s -fsyntax-only -cl-std=CL2.0 +// RUN: not %clang_cc1 %s -fsyntax-only -cl-std=invalid -DINVALID 2>&1 | FileCheck %s + +#ifdef INVALID +// CHECK: invalid value 'invalid' in '-cl-std=invalid' +#endif