gribozavr2 added inline comments.

================
Comment at: clang/include/clang/Analysis/FlowSensitive/Value.h:40-41
 
     // Synthetic boolean values are either atomic values or composites that
     // represent conjunctions, disjunctions, and negations.
     AtomicBool,
----------------
sgatev wrote:
> 
Applied.


================
Comment at: clang/lib/Analysis/FlowSensitive/DebugSupport.cpp:110
+      auto R = debugString(BV.getRightSubValue(), Depth + 1);
+      S = formatv("(=\n{0}\n{1})", L, R);
+      break;
----------------
sgatev wrote:
> I think `<=>` would be more natural.
Yeah, but `=` is what smtlib uses.


================
Comment at: clang/lib/Analysis/FlowSensitive/WatchedLiteralsSolver.cpp:332
+
+      if (LeftSubVar == RightSubVar) {
+        // `X <=> (A <=> A)` is equvalent to `X` which is already in
----------------
xazax.hun wrote:
> gribozavr2 wrote:
> > xazax.hun wrote:
> > > xazax.hun wrote:
> > > > I wonder why this simplification is done here only for 
> > > > `BiconditionalValue`. Other operations seem to not do these sorts of 
> > > > simplifications. Also, when would we take this branch? `getOrCreateIff` 
> > > > has a special case when both operands are the same. 
> > > Oh, looking at the other patch I see it mentioning desugaring. So can 
> > > desugaring also introduce `Biconditional`s?
> > It is also necessary in the other cases due to the precondition of 
> > `addClause()`, I'm adding that special handling in a separate patch: 
> > https://reviews.llvm.org/D130522
> > 
> > We would take this branch when someone avoids using the DataflowContext 
> > API. So not extremely likely at the moment, but it is a latent bug that can 
> > be exposed by some future refactoring.
> I see, thanks! 
Marking done.


================
Comment at: clang/unittests/Analysis/FlowSensitive/SolverTest.cpp:201
+
+  expectUnsatisfiable(solve({NotEquivalent}));
+}
----------------
sgatev wrote:
> Let's add a label: `!((X <=> Y) <=> ((X ^ Y) v (!X ^ !Y)))`
Added!


================
Comment at: clang/unittests/Analysis/FlowSensitive/SolverTest.cpp:303
+
+  expectUnsatisfiable(solve({NotEquivalent}));
+}
----------------
sgatev wrote:
> Let's add a label: `!((X => Y) <=> (!X v Y))`
Added!


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D130519

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

Reply via email to