ymandel marked an inline comment as done.
ymandel added inline comments.

================
Comment at: clang/lib/Analysis/FlowSensitive/Transfer.cpp:56
+            Env.getValue(*RHSNorm, SkipPast::Reference)))
+      return Env.makeIff(*LHSValue, *RHSValue);
+
----------------
xazax.hun wrote:
> I think a possible alternative way to handle this is to do some sort of 
> "unification" for the two values. The current approach is superior in the 
> sense that solving and generating constraints are clearly separate. Also this 
> might be better for generating useful error messages. In case the solver ever 
> becomes a bottleneck, I wonder whether replacing this with a unification step 
> would speed things up a bit. 
> Although that would only work for the equality case.
That's a good point. Although I wonder if we could get the best of both worlds 
by adding a unification pre-step to the solver itself, basically looking for 
`iff` patterns of this sort. Then, the solver could keep a record of such 
unifications which it could export for diagnostic purposes.

On a related note, another potential use of unification is in equivalence 
testing of environments. Instead of strict equality of flow conditions, for 
example, I could imagine equivalence up to unification (aka. renaming of atoms).


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D122830

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

Reply via email to