sgatev marked an inline comment as done.
sgatev added a comment.

In D124395#3472974 <https://reviews.llvm.org/D124395#3472974>, @xazax.hun wrote:

> Nice! Did you do some measurements? Does this improve the performance or 
> decrease the memory consumption?

I didn't do any measurements :( I implemented this as I'd like to add 
context-aware join (what we do for booleans, preserving flow condition context) 
to `UncheckedOptionalAccessModel` and don't really want to make the current 
approach a pattern. I suspect this could also be useful when modeling other 
language constructs.



================
Comment at: 
clang/include/clang/Analysis/FlowSensitive/DataflowAnalysisContext.h:160
+  void addFlowConditionConstraint(AtomicBoolValue &Token,
+                                  BoolValue &Constraint);
+
----------------
xazax.hun wrote:
> Could this be const?
I think no because we need to pass it to `getOrCreateDisjunctionValue` and 
`getOrCreateNegationValue`, and their sub-values are not `const` currently.


================
Comment at: 
clang/include/clang/Analysis/FlowSensitive/DataflowAnalysisContext.h:213
+  //
+  // Flow conditions can depend on other flow conditions (constraints can refer
+  // to flow condition tokens). The graph of flow condition dependencies is
----------------
xazax.hun wrote:
> I think an example would be nice what "depending on" a flow condition means. 
> A simplistic example with a nested if would probably be the easiest to 
> understand.
> 
I didn't add an example, but I rephrased this section after adding the 
`forkFlowCondition` and `joinFlowConditions` methods. Let me know what you 
think.


================
Comment at: clang/lib/Analysis/FlowSensitive/DataflowEnvironment.cpp:184-185
+  FlowConditionToken = &DACtx->makeFlowConditionToken();
+  DACtx->addFlowConditionDependency(*FlowConditionToken,
+                                    *Other.FlowConditionToken);
+  DACtx->addFlowConditionConstraint(*FlowConditionToken,
----------------
xazax.hun wrote:
> Do we ever expect to call these functions independently of each other? If no, 
> maybe `addFlowConditionDependency` should add the constraint as well.
I added `forkFlowCondition` and `joinFlowConditions` methods so dependencies 
are an implementation detail now.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D124395/new/

https://reviews.llvm.org/D124395

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to