[clang] [clang][CIR][doc] Add auto-generated ClangIR documentation (PR #190354)
Sirui Mu via cfe-commits
cfe-commits at lists.llvm.org
Sat Apr 11 08:56:55 PDT 2026
Lancern wrote:
I've updated this PR according to the feedback. Here are a brief summary of the changes:
- It turns out that `mlir-tblgen` could indeed generate a complete document page (in `.md` format) with `-gen-dialect-doc`. Thus, I removed that Markdown template file from the CIR document tree. Now we don't have extra `.md` files in the CIR document tree besides those two previously moved from `clang/docs`. I think it's fine to migrate these two Markdown documents to `.rst` format in a follow-up PR.
- I removed the suppression of the `misc.highlighting_failure` warning as required by Aaron. It turns out that all these problematic `mlir` Markdown code blocks come from CIR's TableGen definitions, so I updated our TableGen definition and replaced all `mlir` Markdown code blocks with plain-text code blocks.
<hr>
The post-processing script for auto-generated CIR documents is kept due to two reasons:
- `mlir-tblgen` output still contains Sphinx-incompatible contents that need to be fixed. Specifically, `mlir-tblgen` writes a placeholder `[TOC]` for table-of-contents, and we need to follow Sphinx's rule to replace it with something like:
```
```{contents}
---
local:
depth: 2
---
```
- Currently CIR is built behind a CMake flag, thus the post-processing script needs to tweak the clang document's toctree based on whether CIR documents are available.
<hr>
I made some attempts to teach `mlir-tblgen` to directly generate documents in `.rst` formats, but it turns out this is more difficult than I thought. The problem is that MLIR allows you to write documentation in TableGen:
https://github.com/llvm/llvm-project/blob/9ab2c5732642a85de8e218e81663d5e458744de0/clang/include/clang/CIR/Dialect/IR/CIROps.td#L279-L329
The `description` field as shown above holds a detailed documentation for the `cir.dyn_cast` op. Unfortunately, [MLIR's official document](https://mlir.llvm.org/docs/DefiningDialects/Operations/#operation-documentation) says this description should be written in Markdown format:
> description should be written in Markdown syntax.
So it seems like that it won't be an easy task to simply add `.rst` output support to `mlir-tblgen` without a more involved discussion and development with the MLIR team.
https://github.com/llvm/llvm-project/pull/190354
More information about the cfe-commits
mailing list