[clang] [clang-cl] Support the /std:c++23 option (PR #232659)

via cfe-commits cfe-commits at lists.llvm.org
Fri Oct 16 03:01:32 PDT 2026


llvmorg-github-actions[bot] wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang-driver

Author: Hans Wennborg (zmodem)

<details>
<summary>Changes</summary>

The latest MSVC build tools release candidate [1] supports /std:c++23 in addition to the old /std:c++23preview option (which they have now deprecated).

[1] https://devblogs.microsoft.com/cppblog/msvc-build-tools-version-14-52-release-candidate-now-available/

---
Full diff: https://github.com/llvm/llvm-project/pull/232659.diff


2 Files Affected:

- (modified) clang/lib/Driver/ToolChains/Clang.cpp (+2-1) 
- (modified) clang/test/Driver/cl-options.c (+3-2) 


``````````diff
diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp
index 26218d85e05e3..45aede7568110 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -7794,12 +7794,13 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
                              .Case("c++14", "-std=c++14")
                              .Case("c++17", "-std=c++17")
                              .Case("c++20", "-std=c++20")
+                             .Case("c++23", "-std=c++23")
                              // If you add cases below for spellings that are
                              // not in LangStandards.def, update
                              // TransferableCommand::tryParseStdArg() in
                              // lib/Tooling/InterpolatingCompilationDatabase.cpp
                              // to match.
-                             // TODO add c++23, c++26, c++29 when MSVC supports
+                             // TODO add c++26, c++29 when MSVC supports
                              // it.
                              .Case("c++23preview", "-std=c++23")
                              .Case("c++26preview", "-std=c++26")
diff --git a/clang/test/Driver/cl-options.c b/clang/test/Driver/cl-options.c
index 2b4d887b027a9..7a71924c3189f 100644
--- a/clang/test/Driver/cl-options.c
+++ b/clang/test/Driver/cl-options.c
@@ -622,8 +622,9 @@
 // RUN: %clang_cl -fmsc-version=1900 -TP -std:c++20 -### -- %s 2>&1 | FileCheck -check-prefix=STDCXX20 %s
 // STDCXX20: -std=c++20
 
-// RUN: %clang_cl -fmsc-version=1900 -TP -std:c++23preview -### -- %s 2>&1 | FileCheck -check-prefix=STDCXX23PREVIEW %s
-// STDCXX23PREVIEW: -std=c++23
+// RUN: %clang_cl -fmsc-version=1900 -TP -std:c++23        -### -- %s 2>&1 | FileCheck -check-prefix=STDCXX23 %s
+// RUN: %clang_cl -fmsc-version=1900 -TP -std:c++23preview -### -- %s 2>&1 | FileCheck -check-prefix=STDCXX23 %s
+// STDCXX23: -std=c++23
 
 // RUN: %clang_cl -fmsc-version=1900 -TP -std:c++26preview -### -- %s 2>&1 | FileCheck -check-prefix=STDCXX26PREVIEW %s
 // STDCXX26PREVIEW: -std=c++26

``````````

</details>


https://github.com/llvm/llvm-project/pull/232659


More information about the cfe-commits mailing list