wyt marked 3 inline comments as done.
wyt added a comment.

@xazax.hun

> Could you elaborate on why do we need this?

We are currently working on a pointer nullability analysis here: 
https://github.com/google/crubit/tree/main/nullability_verification.
One of the things we are trying to do is to check if the flow condition is 
independent of a variable, done by checking if the formula regardless if the 
variable is substituted to true or false - requiring 
`buildAndSubstituteFlowCondition`.

> Why do we care about how flow condition constraints are represented? We 
> should use the solver to ask questions and as far as I understand the solver 
> should work with both representations.

The first approach of representing flow conditions as an atomic boolean token, 
places the responsibility on the user to handle adding the constraints of the 
flow condition when checking with the solver. 
The second approach of representing flow conditions as a direct conjunction of 
its constraints, has performance implications as any boolean values with the 
flow condition appearing in it may grow in size, and the entire conjunction of 
the flow condition has to be added repeatedly if the flow condition appears in 
multiple places.

> Also this function feels like doing two things, building the flow condition 
> from the tokens and doing substitutions. Any reason why those two are not 
> separate functions? Is this for performance reasons?

You'd build the flow condition by passing in an empty substitutions set. Also, 
just building the flow condition does not see any use currently.



================
Comment at: clang/lib/Analysis/FlowSensitive/DataflowAnalysisContext.cpp:177
+    auto &Sub = substituteBoolVal(Negation.getSubVal(), SubstitutionsCache);
+    Result = &getOrCreateNegationValue(Sub);
+    break;
----------------
@gribozavr2 
> Could you refactor it into a free function? It does not use 'this', seems 
> like.
We store and retrieve BoolVals in DataflowAnalysisContext. Example as 
highlighted.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D128363

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

Reply via email to