[clang] [clang][dataflow] Add synthetic fields to `RecordStorageLocation` (PR #73860)

Gábor Horváth via cfe-commits cfe-commits at lists.llvm.org
Thu Nov 30 11:54:31 PST 2023


================
@@ -92,11 +96,39 @@ class DataflowAnalysisContext {
                               /*Logger=*/nullptr});
   ~DataflowAnalysisContext();
 
+  /// Sets a callback that returns the names and types of the synthetic fields
+  /// to add to a `RecordStorageLocation` of a given type.
+  /// Typically, this is called from the constructor of a `DataflowAnalysis`
+  ///
+  /// To maintain the invariant that all `RecordStorageLocation`s of a given
+  /// type have the same fields:
+  /// *  The callback must always return the same result for a given type
+  /// *  `setSyntheticFieldCallback()` must be called before any
+  //     `RecordStorageLocation`s are created.
----------------
Xazax-hun wrote:

I was wondering if having a single `SyntheticFieldCallback` will be too restrictive in the future. What if an ananlysis wants to use modeling both for optionals and some other data structure, both having its own callbacks?

Although this is mostly food for thought for the future, no need to address in this PR.  

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


More information about the cfe-commits mailing list