[PATCH] D118480: [clang][dataflow] Merge distinct pointer values in Environment::join

Gábor Horváth via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Sat Jan 29 03:06:46 PST 2022


xazax.hun added inline comments.


================
Comment at: clang/lib/Analysis/FlowSensitive/DataflowEnvironment.cpp:114
 
+    if (auto *FirstVal = dyn_cast<PointerValue>(Val)) {
+      auto *SecondVal = cast<PointerValue>(It->second);
----------------
sgatev wrote:
> xazax.hun wrote:
> > xazax.hun wrote:
> > > xazax.hun wrote:
> > > > Shouldn't we ensure that `operator==` return true when we have two `PointerValue`s with the same pointee above? That would make this piece of code redundant.
> > > Never mind, just realized the above is comparing pointers. But I still think we might want to have a separate `operator==` for `Value`s as we might want to compare values in many separate places.
> > Or alternatively, Values could be internalized, and all `PointerValue`s with the same pointee could have the same address.
> Right. Currently, all tests that assign values in loops (including the test introduced in this patch) are hitting the maximum iterations limit because we don't have a way to tell the framework how to compare distinct values (e.g. there's no need to continue iterating if the `has_value` properties of distinct optional values are the same). This will be the focus of my next patch.
Oh, I see. In this case let's merge this and looking forward to the next one :)


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D118480



More information about the cfe-commits mailing list