gribozavr2 accepted this revision.
gribozavr2 added inline comments.

================
Comment at: 
clang/include/clang/Analysis/FlowSensitive/DataflowAnalysisContext.h:157
+  TopValue &createTop() {
+    return takeOwnership(std::make_unique<TopValue>());
+  }
----------------
ymandel wrote:
> xazax.hun wrote:
> > gribozavr2 wrote:
> > > Should we be creating a new top every time, or should it be a singleton 
> > > like true and false?
> > > 
> > > It seems like we explicitly don't care about its identity (or else it 
> > > would be isomorphic to AtomicBool).
> > Good point, a singleton Top might actually simplify some parts of the code.
> Good question. That was my initial implementation, but it ran into the 
> problem that the solver (in `buildBooleanFormula`) maps each unique (by 
> pointer) subexpression into a fresh SAT variable in . If we use a singleton 
> Top, we need to modify that algorithm appropriately. I'm open to suggestions, 
> though, because of the advantages of a singleton Top.
> 
> If we assume that a given `Top` is never actually shared in a boolean formula 
> (unlike other subexpressions, which may be shared), then we can use a 
> singleton and special case it in `buildBooleanFormula`. I think that's a good 
> assumption, but am not sure. Thoughts?
I see. Could you add some direct tests for the SAT solver with formulas that 
include Top to check the behavior we care about?



Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D135397

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

Reply via email to