================
@@ -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

Reply via email to