================ @@ -492,6 +492,56 @@ transferCFGBlock(const CFGBlock &Block, AnalysisContext &AC, return State; } +static Environment initializeEnvironment(const Environment &InitEnv) { + Environment ResultEnv = InitEnv.fork(); ---------------- martinboehme wrote:
Now that this code has been moved to `Environment::initialize()`, the initialization happens in place there, and that function doesn't contain a `fork()`. However, `runTypeErasedDataflowAnalysis()` now does a `fork()`, and I wanted to comment briefly on this. `runTypeErasedDataflowAnalysis()` takes a const reference to the `Environment`, so it can't initialize this existing `Environment` in place and instead has to fork it. (Previously, when the `Environment` constructor did all the initialization, this wasn't necessary because `runTypeErasedDataflowAnalysis()` received a fully initialized environment.) I had considered changing the interface of `runTypeErasedDataflowAnalysis()` to take the `Environment` either by non-const reference or by value (as the caller typically no longer needs the `Environment` it has), but I decided against this because it would require changes in multiple analyses. If we want to, we can always make this change in a followup patch. https://github.com/llvm/llvm-project/pull/73860 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits