[clang] [clang][ssaf][docs] Document the Summary Extraction pipeline (PR #172876)

Yitzhak Mandelbaum via cfe-commits cfe-commits at lists.llvm.org
Fri Jan 2 05:30:52 PST 2026


================
@@ -0,0 +1,83 @@
+==================
+Summary Extraction
+==================
+
+.. WARNING:: The framework is rapidly evolving.
+  The documentation might be out-of-sync of the implementation.
+  The purpose of this documentation to give context for upcoming reviews.
+
+
+The simplest way to think about the lifetime of a summary extraction is by following the handlers of the ``FrontendAction`` implementing it.
+There are 3 APIs that are important for us, that are invoked in this order:
+
+  - ``BeingInvocation()``: Checks the command-line arguments related to summary extraction.
+  - ``CreateASTConsumer()``: Creates the ASTConsumers for the different summary extractors.
+  - ``EndSourceFile()``: Serializes and writes the extracted summaries.
+
+Implementation details
+**********************
+
+Global Registries
+=================
+
+The framework uses `llvm::Registry\<\> <https://llvm.org/doxygen/classllvm_1_1Registry.html>`_
+as an extension point for adding new summary analyses or serialization formats.
+In short, a static object constructor will insert a note into the linked-list of the *registry*.
+Each entry in the *registry* holds a name, a description and a pointer to a constructor.
+In plain terms, a *registry* is a list of *recipes* and the *registry* is the *cookbook* if you will.
----------------
ymand wrote:

FWIW, I'd delete lines 25 and 27 since I'd assume that anyone getting this far is familiar with the notion of global registries and/or can read the documentation you referenced. The key points are that you're using a registry and the particular form of the entries.

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


More information about the cfe-commits mailing list