https://github.com/erichkeane updated https://github.com/llvm/llvm-project/pull/221291
>From e3116fa653a9dac54d2a58932130f2ec2d175c0c Mon Sep 17 00:00:00 2001 From: erichkeane <[email protected]> Date: Fri, 4 Sep 2026 09:23:26 -0700 Subject: [PATCH 01/11] Enable ClangIR Build By Default- This is subject to an RFC: https://discourse.llvm.org/t/rfc-enable-clangir-build-by-default/91730 This patch enables building ClangIR (and thus MLIR) by default in clang builds. The project has hit a maturity level where we believe this is a good time to do it. See the RFC for details. --- clang/CMakeLists.txt | 6 ++---- clang/docs/ReleaseNotes.md | 5 +++++ llvm/CMakeLists.txt | 11 +++++++++++ 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/clang/CMakeLists.txt b/clang/CMakeLists.txt index fc71cf45dbb34c..3416e67eb79910 100644 --- a/clang/CMakeLists.txt +++ b/clang/CMakeLists.txt @@ -190,15 +190,13 @@ if(CLANG_ENABLE_LIBXML2) endif() endif() +cmake_dependent_option(CLANG_ENABLE_CIR "Build ClangIR support into the compiler" ON "NOT CLANG_BUILT_STANDALONE" OFF) + if(CLANG_ENABLE_CIR) if (CLANG_BUILT_STANDALONE) message(FATAL_ERROR "ClangIR is not yet supported in the standalone build.") endif() - if (NOT "${LLVM_ENABLE_PROJECTS}" MATCHES "MLIR|mlir") - message(FATAL_ERROR - "Cannot build ClangIR without MLIR in LLVM_ENABLE_PROJECTS") - endif() endif() include(CheckIncludeFile) diff --git a/clang/docs/ReleaseNotes.md b/clang/docs/ReleaseNotes.md index ca5c63fbaa17d7..ce458ce2e0ecc7 100644 --- a/clang/docs/ReleaseNotes.md +++ b/clang/docs/ReleaseNotes.md @@ -837,6 +837,11 @@ The `alpha.cplusplus.UseAfterLifetimeEnd` checker was renamed to `alpha.core.Use #### Improvements +### Clang IR Improvements + +- Clang IR has now been enabled in builds by default, and should work with most workloads. However this is still an experimental flag and a work-in-progress. + + ## Additional Information A wide variety of additional information is available on the [Clang web diff --git a/llvm/CMakeLists.txt b/llvm/CMakeLists.txt index 44299d51d784a1..7f0e8fc7a9915e 100644 --- a/llvm/CMakeLists.txt +++ b/llvm/CMakeLists.txt @@ -201,6 +201,17 @@ if ("flang" IN_LIST LLVM_ENABLE_PROJECTS) endif () endif() +# Clang defaults to CLANG_ENABLE_CIR now, so we need to auto-add MLIR unless it +# was explicitly disabled. +if ("clang" IN_LIST LLVM_ENABLE_PROJECTS) + if (NOT DEFINED CLANG_ENABLE_CIR OR CLANG_ENABLE_CIR) + if (NOT "mlir" IN_LIST LLVM_ENABLE_PROJECTS) + message(STATUS "Enabling MLIR as a dependency of ClangIR") + list(APPEND LLVM_ENABLE_PROJECTS "mlir") + endif() + endif() +endif() + if ("lldb" IN_LIST LLVM_ENABLE_PROJECTS) if (NOT "clang" IN_LIST LLVM_ENABLE_PROJECTS) message(STATUS "Enabling clang as a dependency of lldb") >From 33e5ee57b3112cd62890b36419c22156ec338247 Mon Sep 17 00:00:00 2001 From: erichkeane <[email protected]> Date: Mon, 14 Sep 2026 10:21:37 -0700 Subject: [PATCH 02/11] Add to release-notes-template, plus clarify release notes --- clang/docs/ReleaseNotes.md | 2 +- clang/docs/ReleaseNotesTemplate.txt | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/clang/docs/ReleaseNotes.md b/clang/docs/ReleaseNotes.md index cbe99b9a22b603..21d3be7313dcde 100644 --- a/clang/docs/ReleaseNotes.md +++ b/clang/docs/ReleaseNotes.md @@ -908,7 +908,7 @@ The `alpha.cplusplus.UseAfterLifetimeEnd` checker was renamed to `alpha.core.Use ### Clang IR Improvements -- Clang IR has now been enabled in builds by default, and should work with most workloads. However this is still an experimental flag and a work-in-progress. +- Clang builds now build Clang IR support by default. Clang IR is expected to work with most Linux/X86-64 workloads. Normal builds are unchanged, however those who wish to test out the experimental `-fclangir` flag can now do so with a Clang build. ## Additional Information diff --git a/clang/docs/ReleaseNotesTemplate.txt b/clang/docs/ReleaseNotesTemplate.txt index df98f9adc03387..b7920ab029d0ea 100644 --- a/clang/docs/ReleaseNotesTemplate.txt +++ b/clang/docs/ReleaseNotesTemplate.txt @@ -193,6 +193,8 @@ latest release, please see the [Clang Web Site](https://clang.llvm.org) or the #### Improvements +### Clang IR Improvements + ## Additional Information A wide variety of additional information is available on the [Clang web >From d6344487005c162f41859312b2be59dd5c412b86 Mon Sep 17 00:00:00 2001 From: erichkeane <[email protected]> Date: Thu, 8 Oct 2026 13:59:35 -0700 Subject: [PATCH 03/11] add triple to test that failed due to lack of windows ABI --- clang/test/Driver/openacc-no-cir.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/clang/test/Driver/openacc-no-cir.c b/clang/test/Driver/openacc-no-cir.c index 891f175a001bb6..15d357330c582e 100644 --- a/clang/test/Driver/openacc-no-cir.c +++ b/clang/test/Driver/openacc-no-cir.c @@ -1,6 +1,6 @@ // RUN: %clang -fopenacc -S %s -o /dev/null 2>&1 | FileCheck %s -check-prefix=ERROR -// RUN: %clang -fclangir -fopenacc -S %s -o /dev/null 2>&1 | FileCheck %s --allow-empty -check-prefix=NOERROR -// RUN: %clang -fopenacc -fclangir -S %s -o /dev/null 2>&1 | FileCheck %s --allow-empty -check-prefix=NOERROR +// RUN: %clang -fclangir -fopenacc -S -triple x86_64-linux-gnu %s -o /dev/null 2>&1 | FileCheck %s --allow-empty -check-prefix=NOERROR +// RUN: %clang -fopenacc -fclangir -S -triple x86_64-linux-gnu %s -o /dev/null 2>&1 | FileCheck %s --allow-empty -check-prefix=NOERROR // ERROR: OpenACC directives will result in no runtime behavior; use -fclangir to enable runtime effect // NOERROR-NOT: OpenACC directives >From c4729e4274060a2c3f08ccc536cff8510703f4d5 Mon Sep 17 00:00:00 2001 From: erichkeane <[email protected]> Date: Thu, 8 Oct 2026 15:24:16 -0700 Subject: [PATCH 04/11] Fixup review comments frm Bruno --- clang/CMakeLists.txt | 12 +++++++++++- clang/docs/ReleaseNotes.md | 2 +- clang/test/Driver/openacc-no-cir.c | 4 ++-- llvm/CMakeLists.txt | 11 ----------- 4 files changed, 14 insertions(+), 15 deletions(-) diff --git a/clang/CMakeLists.txt b/clang/CMakeLists.txt index 95ead02ddb9ce3..4b9015542b4004 100644 --- a/clang/CMakeLists.txt +++ b/clang/CMakeLists.txt @@ -190,7 +190,17 @@ if(CLANG_ENABLE_LIBXML2) endif() endif() -cmake_dependent_option(CLANG_ENABLE_CIR "Build ClangIR support into the compiler" ON "NOT CLANG_BUILT_STANDALONE" OFF) +# ClangIR is on by default, except in standalone builds where it is unsupported. +# Use a plain option (rather than cmake_dependent_option) so an explicit +# -DCLANG_ENABLE_CIR=ON in a standalone build reaches the error below instead of +# being silently forced to OFF. +if(CLANG_BUILT_STANDALONE) + set(CLANG_ENABLE_CIR_DEFAULT OFF) +else() + set(CLANG_ENABLE_CIR_DEFAULT ON) +endif() +option(CLANG_ENABLE_CIR "Build ClangIR support into the compiler" + ${CLANG_ENABLE_CIR_DEFAULT}) if(CLANG_ENABLE_CIR) if (CLANG_BUILT_STANDALONE) diff --git a/clang/docs/ReleaseNotes.md b/clang/docs/ReleaseNotes.md index 444e87f2485146..07a78193b391e5 100644 --- a/clang/docs/ReleaseNotes.md +++ b/clang/docs/ReleaseNotes.md @@ -1209,7 +1209,7 @@ The `alpha.cplusplus.UseAfterLifetimeEnd` checker was renamed to `alpha.core.Use ### Clang IR Improvements -- Clang builds now build Clang IR support by default. Clang IR is expected to work with most Linux/X86-64 workloads. Normal builds are unchanged, however those who wish to test out the experimental `-fclangir` flag can now do so with a Clang build. +- Clang builds now build ClangIR support by default. Clang IR is expected to work with most Linux/X86-64 workloads. Normal builds are unchanged, however those who wish to test out the experimental `-fclangir` flag can now do so with a Clang build. ## Additional Information diff --git a/clang/test/Driver/openacc-no-cir.c b/clang/test/Driver/openacc-no-cir.c index 15d357330c582e..ddf1bf6d97c3f2 100644 --- a/clang/test/Driver/openacc-no-cir.c +++ b/clang/test/Driver/openacc-no-cir.c @@ -1,6 +1,6 @@ // RUN: %clang -fopenacc -S %s -o /dev/null 2>&1 | FileCheck %s -check-prefix=ERROR -// RUN: %clang -fclangir -fopenacc -S -triple x86_64-linux-gnu %s -o /dev/null 2>&1 | FileCheck %s --allow-empty -check-prefix=NOERROR -// RUN: %clang -fopenacc -fclangir -S -triple x86_64-linux-gnu %s -o /dev/null 2>&1 | FileCheck %s --allow-empty -check-prefix=NOERROR +// RUN: %clang -fclangir -fopenacc -S -target=x86_64-linux-gnu %s -o /dev/null 2>&1 | FileCheck %s --allow-empty -check-prefix=NOERROR +// RUN: %clang -fopenacc -fclangir -S -target=x86_64-linux-gnu %s -o /dev/null 2>&1 | FileCheck %s --allow-empty -check-prefix=NOERROR // ERROR: OpenACC directives will result in no runtime behavior; use -fclangir to enable runtime effect // NOERROR-NOT: OpenACC directives diff --git a/llvm/CMakeLists.txt b/llvm/CMakeLists.txt index 33443f89a3ef45..28e96fc28b5aa6 100644 --- a/llvm/CMakeLists.txt +++ b/llvm/CMakeLists.txt @@ -212,17 +212,6 @@ if ("flang" IN_LIST LLVM_ENABLE_PROJECTS) endif () endif() -# Clang defaults to CLANG_ENABLE_CIR now, so we need to auto-add MLIR unless it -# was explicitly disabled. -if ("clang" IN_LIST LLVM_ENABLE_PROJECTS) - if (NOT DEFINED CLANG_ENABLE_CIR OR CLANG_ENABLE_CIR) - if (NOT "mlir" IN_LIST LLVM_ENABLE_PROJECTS) - message(STATUS "Enabling MLIR as a dependency of ClangIR") - list(APPEND LLVM_ENABLE_PROJECTS "mlir") - endif() - endif() -endif() - if ("lldb" IN_LIST LLVM_ENABLE_PROJECTS) if (NOT "clang" IN_LIST LLVM_ENABLE_PROJECTS) message(STATUS "Enabling clang as a dependency of lldb") >From 0a8188f07ab65241c478b43f68e0a99a55227221 Mon Sep 17 00:00:00 2001 From: erichkeane <[email protected]> Date: Fri, 9 Oct 2026 07:06:08 -0700 Subject: [PATCH 05/11] Move around the ENABLE_CIR_DEFAULT flag to before the MLIR dependencies are set so that we get the build right... I hope? --- clang/CMakeLists.txt | 12 +++--------- llvm/CMakeLists.txt | 1 + 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/clang/CMakeLists.txt b/clang/CMakeLists.txt index 4b9015542b4004..a516c7a72ff060 100644 --- a/clang/CMakeLists.txt +++ b/clang/CMakeLists.txt @@ -190,17 +190,11 @@ if(CLANG_ENABLE_LIBXML2) endif() endif() -# ClangIR is on by default, except in standalone builds where it is unsupported. -# Use a plain option (rather than cmake_dependent_option) so an explicit -# -DCLANG_ENABLE_CIR=ON in a standalone build reaches the error below instead of -# being silently forced to OFF. +# Standalone builds don't inherit this flag from the llvm/CMakeLists, so set it +# here. if(CLANG_BUILT_STANDALONE) - set(CLANG_ENABLE_CIR_DEFAULT OFF) -else() - set(CLANG_ENABLE_CIR_DEFAULT ON) + option(CLANG_ENABLE_CIR "Build ClangIR support into the compiler" OFF) endif() -option(CLANG_ENABLE_CIR "Build ClangIR support into the compiler" - ${CLANG_ENABLE_CIR_DEFAULT}) if(CLANG_ENABLE_CIR) if (CLANG_BUILT_STANDALONE) diff --git a/llvm/CMakeLists.txt b/llvm/CMakeLists.txt index 28e96fc28b5aa6..2e45b9d8a5e606 100644 --- a/llvm/CMakeLists.txt +++ b/llvm/CMakeLists.txt @@ -219,6 +219,7 @@ if ("lldb" IN_LIST LLVM_ENABLE_PROJECTS) endif() endif () +option(CLANG_ENABLE_CIR "Build ClangIR support into the compiler" ON) if (CLANG_ENABLE_CIR AND "clang" IN_LIST LLVM_ENABLE_PROJECTS AND NOT "mlir" IN_LIST LLVM_ENABLE_PROJECTS) message(STATUS "Enabling MLIR as a dependency of ClangIR") >From 0fbe7d2201f0e472ba23674bdb0fee78ccb95087 Mon Sep 17 00:00:00 2001 From: erichkeane <[email protected]> Date: Fri, 9 Oct 2026 07:13:48 -0700 Subject: [PATCH 06/11] Update release note to add additional information at the 'top' as suggested --- clang/docs/ReleaseNotes.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/clang/docs/ReleaseNotes.md b/clang/docs/ReleaseNotes.md index 07a78193b391e5..d65feb68f5ac95 100644 --- a/clang/docs/ReleaseNotes.md +++ b/clang/docs/ReleaseNotes.md @@ -48,6 +48,13 @@ The previous behavior can be restored with `-Wno-error=unicode-whitespace`. Clang will stop accepting non-ascii whitespaces as token separators in a future version of Clang. +- The experimental ClangIR code generator is now built into Clang by default, so +`-fclangir` can be used without any additional CMake options. While ClangIR will +work for many workloads in some narrow configurations (ie, Itanium only), it +should prove useful for MLIR experimentation in Clang. This does however have a +measureable and significant impact on the build-time of clang itself. It can be +disabled with the CMake option `-DCLANG_ENABLE_CIR=Off`. + ### C++ Specific Potentially Breaking Changes - The `[[carries_dependency]]` attribute is no longer recognized, in any language >From 4d717d7a36795affbc08bd89ae1a9ae17ab5aeda Mon Sep 17 00:00:00 2001 From: erichkeane <[email protected]> Date: Fri, 9 Oct 2026 07:26:32 -0700 Subject: [PATCH 07/11] Fix to be --target vs -target in the openacc-cir test --- clang/test/Driver/openacc-no-cir.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/clang/test/Driver/openacc-no-cir.c b/clang/test/Driver/openacc-no-cir.c index ddf1bf6d97c3f2..9f1a66204261f3 100644 --- a/clang/test/Driver/openacc-no-cir.c +++ b/clang/test/Driver/openacc-no-cir.c @@ -1,6 +1,6 @@ // RUN: %clang -fopenacc -S %s -o /dev/null 2>&1 | FileCheck %s -check-prefix=ERROR -// RUN: %clang -fclangir -fopenacc -S -target=x86_64-linux-gnu %s -o /dev/null 2>&1 | FileCheck %s --allow-empty -check-prefix=NOERROR -// RUN: %clang -fopenacc -fclangir -S -target=x86_64-linux-gnu %s -o /dev/null 2>&1 | FileCheck %s --allow-empty -check-prefix=NOERROR +// RUN: %clang -fclangir -fopenacc -S --target=x86_64-linux-gnu %s -o /dev/null 2>&1 | FileCheck %s --allow-empty -check-prefix=NOERROR +// RUN: %clang -fopenacc -fclangir -S --target=x86_64-linux-gnu %s -o /dev/null 2>&1 | FileCheck %s --allow-empty -check-prefix=NOERROR // ERROR: OpenACC directives will result in no runtime behavior; use -fclangir to enable runtime effect // NOERROR-NOT: OpenACC directives >From de57f83006852d218ace9dcb548eb199e27542af Mon Sep 17 00:00:00 2001 From: erichkeane <[email protected]> Date: Wed, 14 Oct 2026 07:10:52 -0700 Subject: [PATCH 08/11] Add to the LLVM release notes (previously missed comment), add to the CMake options list, move docs to the "Whats new in Clang" section --- clang/docs/ReleaseNotes.md | 16 +++++++++------- llvm/docs/CMake.md | 7 +++++++ llvm/docs/ReleaseNotes.md | 5 +++++ 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/clang/docs/ReleaseNotes.md b/clang/docs/ReleaseNotes.md index d386071ddfa0ff..bb0cbe44de1a8d 100644 --- a/clang/docs/ReleaseNotes.md +++ b/clang/docs/ReleaseNotes.md @@ -48,13 +48,6 @@ The previous behavior can be restored with `-Wno-error=unicode-whitespace`. Clang will stop accepting non-ascii whitespaces as token separators in a future version of Clang. -- The experimental ClangIR code generator is now built into Clang by default, so -`-fclangir` can be used without any additional CMake options. While ClangIR will -work for many workloads in some narrow configurations (ie, Itanium only), it -should prove useful for MLIR experimentation in Clang. This does however have a -measureable and significant impact on the build-time of clang itself. It can be -disabled with the CMake option `-DCLANG_ENABLE_CIR=Off`. - ### C++ Specific Potentially Breaking Changes - The `[[carries_dependency]]` attribute is no longer recognized, in any language @@ -173,6 +166,15 @@ features cannot lower the translation-unit ABI level; ## What's New in Clang {{env.config.release}}? +- The experimental ClangIR code generator is now built into Clang by default, so +`-fclangir` can be used without any additional CMake options. While ClangIR will +work for many workloads in some narrow configurations (ie, Itanium only), it +should prove useful for MLIR experimentation in Clang. This does however have a +measureable and significant impact on the build-time of clang itself. It can be +disabled with the CMake option `-DCLANG_ENABLE_CIR=Off`. See [the CIR +documentation](https://clang.llvm.org/docs/CIR/index.html) for more information +regarding ClangIR's status and design. + ### C++ Language Changes - Clang now supports friend declarations with a dependent nested name specifier. (#GH104057) diff --git a/llvm/docs/CMake.md b/llvm/docs/CMake.md index 97b26e50b58645..26214a32a087b1 100644 --- a/llvm/docs/CMake.md +++ b/llvm/docs/CMake.md @@ -318,6 +318,13 @@ sub-projects. Nearly all of these variable names begin with `LLVM_`. `BUILD_SHARED_LIBS` is only recommended for use by LLVM developers. If you want to build LLVM as a shared library, you should use the `LLVM_BUILD_LLVM_DYLIB` option. ::: +**CLANG_ENABLE_CIR**:BOOL + +: Used to disable building the experimental MLIR Code Generator, ClangIR when + build ing Clang. The ClangIR build automatically includes a significant amount + of the MLIR project as well, and results in a significant increase in the time + required to build Clang. Defaults to ON. + **LLVM_ABI_BREAKING_CHECKS**:STRING : Used to decide if LLVM should be built with ABI breaking checks or not. diff --git a/llvm/docs/ReleaseNotes.md b/llvm/docs/ReleaseNotes.md index 751b806590bf33..552a2e72752a94 100644 --- a/llvm/docs/ReleaseNotes.md +++ b/llvm/docs/ReleaseNotes.md @@ -219,6 +219,11 @@ Makes programs 10x faster by doing Special New Thing. found with an explanatory message instead of succeeding with no targets; such a build never provided a usable MLIR SDK. +* When Clang is in the `LLVM_ENABLE_PROJECTS` list, it now compiles the + experimental MLIR-Generator ClangIR by default. This functionality can + increase the compile time of Clang significantly. This can be disabled with + `CLANG_ENABLE_CIR=OFF`, which wil disable the `-fclangir` flag in Clang. + * LLVM's documentation has largely been rewritten from [reStructuredText] to Markdown, and our Sphinx documentation build now has a hard dependency on the [`myst-parser` package]. Vendors packaging LLVM will need to install >From ab293e219ca90540c8184ece598c42913190feed Mon Sep 17 00:00:00 2001 From: erichkeane <[email protected]> Date: Wed, 14 Oct 2026 07:20:24 -0700 Subject: [PATCH 09/11] Remove warning from CIR doc site --- clang/docs/CIR/index.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/clang/docs/CIR/index.md b/clang/docs/CIR/index.md index a418c4ae5caa91..6212964662906e 100644 --- a/clang/docs/CIR/index.md +++ b/clang/docs/CIR/index.md @@ -1,11 +1,5 @@ # ClangIR -:::{warning} -The project of upstreaming ClangIR support from the incubator repository is -still in progress, and ClangIR is not included in a default clang build. The -documentation may be incomplete and out-of-date. -::: - ClangIR is a high-level representation in Clang that reflects aspects of the C/C++ languages and their extensions. It is implemented using MLIR and occupies a position between Clang's AST and LLVM IR. >From 653c021b26c99c24e958c1872be97757b625cef4 Mon Sep 17 00:00:00 2001 From: erichkeane <[email protected]> Date: Wed, 14 Oct 2026 07:36:29 -0700 Subject: [PATCH 10/11] Switch to relative link? --- clang/docs/ReleaseNotes.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/clang/docs/ReleaseNotes.md b/clang/docs/ReleaseNotes.md index bb0cbe44de1a8d..cf8989cc8acd42 100644 --- a/clang/docs/ReleaseNotes.md +++ b/clang/docs/ReleaseNotes.md @@ -172,8 +172,7 @@ work for many workloads in some narrow configurations (ie, Itanium only), it should prove useful for MLIR experimentation in Clang. This does however have a measureable and significant impact on the build-time of clang itself. It can be disabled with the CMake option `-DCLANG_ENABLE_CIR=Off`. See [the CIR -documentation](https://clang.llvm.org/docs/CIR/index.html) for more information -regarding ClangIR's status and design. +documentation](CIR/index.html) for more information regarding ClangIR's status and design. ### C++ Language Changes - Clang now supports friend declarations with a dependent nested name specifier. (#GH104057) >From 42c4adc2e03c6afa1f63d76dd1a977205030051f Mon Sep 17 00:00:00 2001 From: erichkeane <[email protected]> Date: Wed, 14 Oct 2026 07:50:59 -0700 Subject: [PATCH 11/11] Correctly? refer to index.md instead of index.html... sphinx was mad about that --- clang/docs/ReleaseNotes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang/docs/ReleaseNotes.md b/clang/docs/ReleaseNotes.md index cf8989cc8acd42..be35562cdd3159 100644 --- a/clang/docs/ReleaseNotes.md +++ b/clang/docs/ReleaseNotes.md @@ -172,7 +172,7 @@ work for many workloads in some narrow configurations (ie, Itanium only), it should prove useful for MLIR experimentation in Clang. This does however have a measureable and significant impact on the build-time of clang itself. It can be disabled with the CMake option `-DCLANG_ENABLE_CIR=Off`. See [the CIR -documentation](CIR/index.html) for more information regarding ClangIR's status and design. +documentation](CIR/index.md) for more information regarding ClangIR's status and design. ### C++ Language Changes - Clang now supports friend declarations with a dependent nested name specifier. (#GH104057) _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
