diff --git a/clang/include/clang/Basic/LangStandards.def b/clang/include/clang/Basic/LangStandards.def --- a/clang/include/clang/Basic/LangStandards.def +++ b/clang/include/clang/Basic/LangStandards.def @@ -200,6 +200,8 @@ LANGSTANDARD_ALIAS_DEPR(openclcpp10, "CLC++") LANGSTANDARD_ALIAS_DEPR(openclcpp10, "CLC++1.0") LANGSTANDARD_ALIAS_DEPR(openclcpp2021, "CLC++2021") +LANGSTANDARD_ALIAS_DEPR(openclcpp2021, "clc++21") +LANGSTANDARD_ALIAS_DEPR(openclcpp2021, "CLC++21") // CUDA LANGSTANDARD(cuda, "cuda", CUDA, "NVIDIA CUDA(tm)", diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -866,7 +866,7 @@ MarshallingInfoFlag>; def cl_std_EQ : Joined<["-"], "cl-std=">, Group, Flags<[CC1Option]>, HelpText<"OpenCL language standard to compile for.">, - Values<"cl,CL,cl1.0,CL1.0,cl1.1,CL1.1,cl1.2,CL1.2,cl2.0,CL2.0,cl3.0,CL3.0,clc++,CLC++,clc++1.0,CLC++1.0,clc++2021,CLC++2021">; + Values<"cl,CL,cl1.0,CL1.0,cl1.1,CL1.1,cl1.2,CL1.2,cl2.0,CL2.0,cl3.0,CL3.0,clc++,CLC++,clc++1.0,CLC++1.0,clc++2021,CLC++2021,clc++21,CLC++21">; def cl_denorms_are_zero : Flag<["-"], "cl-denorms-are-zero">, Group, HelpText<"OpenCL only. Allow denormals to be flushed to zero.">; def cl_fp32_correctly_rounded_divide_sqrt : Flag<["-"], "cl-fp32-correctly-rounded-divide-sqrt">, Group, Flags<[CC1Option]>, diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -3616,6 +3616,7 @@ .Cases("clc++", "CLC++", LangStandard::lang_openclcpp10) .Cases("clc++1.0", "CLC++1.0", LangStandard::lang_openclcpp10) .Cases("clc++2021", "CLC++2021", LangStandard::lang_openclcpp2021) + .Cases("clc++21", "CLC++21", LangStandard::lang_openclcpp2021) .Default(LangStandard::lang_unspecified); if (OpenCLLangStd == LangStandard::lang_unspecified) { diff --git a/clang/test/Driver/autocomplete.c b/clang/test/Driver/autocomplete.c --- a/clang/test/Driver/autocomplete.c +++ b/clang/test/Driver/autocomplete.c @@ -53,6 +53,8 @@ // CLSTDALL-NEXT: CLC++1.0 // CLSTDALL-NEXT: clc++2021 // CLSTDALL-NEXT: CLC++2021 +// CLSTDALL-NEXT: clc++21 +// CLSTDALL-NEXT: CLC++21 // RUN: %clang --autocomplete=-fno-sanitize-coverage=,f | FileCheck %s -check-prefix=FNOSANICOVER // FNOSANICOVER: func // RUN: %clang --autocomplete=-fno-sanitize-coverage= | FileCheck %s -check-prefix=FNOSANICOVERALL diff --git a/clang/test/Frontend/stdlang.c b/clang/test/Frontend/stdlang.c --- a/clang/test/Frontend/stdlang.c +++ b/clang/test/Frontend/stdlang.c @@ -9,6 +9,7 @@ // RUN: %clang_cc1 -x cl -cl-std=clc++ -DOPENCL %s // RUN: %clang_cc1 -x cl -cl-std=clc++1.0 -DOPENCL %s // RUN: %clang_cc1 -x cl -cl-std=clc++2021 -DOPENCL %s +// RUN: %clang_cc1 -x cl -cl-std=clc++21 -DOPENCL %s // RUN: %clang_cc1 -x cl -cl-std=CL -DOPENCL %s // RUN: %clang_cc1 -x cl -cl-std=CL1.1 -DOPENCL %s // RUN: %clang_cc1 -x cl -cl-std=CL1.2 -DOPENCL %s @@ -17,6 +18,7 @@ // RUN: %clang_cc1 -x cl -cl-std=CLC++ -DOPENCL %s // RUN: %clang_cc1 -x cl -cl-std=CLC++1.0 -DOPENCL %s // RUN: %clang_cc1 -x cl -cl-std=CLC++2021 -DOPENCL %s +// RUN: %clang_cc1 -x cl -cl-std=CLC++21 -DOPENCL %s // RUN: not %clang_cc1 -x cl -std=c99 -DOPENCL %s 2>&1 | FileCheck --check-prefix=CHECK-C99 %s // RUN: not %clang_cc1 -x cl -cl-std=invalid -DOPENCL %s 2>&1 | FileCheck --check-prefix=CHECK-INVALID %s // CHECK-C99: error: invalid argument '-std=c99' not allowed with 'OpenCL'