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

Hans Wennborg via cfe-commits cfe-commits at lists.llvm.org
Fri Oct 16 03:00:48 PDT 2026


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

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/

>From c01ab82c32d83e21f6937477176987ae5956b60a Mon Sep 17 00:00:00 2001
From: Hans Wennborg <hans at chromium.org>
Date: Fri, 16 Oct 2026 11:58:20 +0200
Subject: [PATCH] [clang-cl] Support the /std:c++23 option

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/
---
 clang/lib/Driver/ToolChains/Clang.cpp | 3 ++-
 clang/test/Driver/cl-options.c        | 5 +++--
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp
index 26218d85e05e35..45aede75681103 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 2b4d887b027a99..7a71924c3189fb 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



More information about the cfe-commits mailing list