[PATCH] D106136: [Analyzer][solver] Fix equivalence class invariant violation in removeDeadBindings

Valeriy Savchenko via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Jul 16 03:10:58 PDT 2021


vsavchenko added a comment.

Thanks for working on it, but it is a quite large change that I don't get the motivation for (it doesn't even fix the recently found bug).

Summary explains what the patch does, but for why it is done, it talks about an invariant that is not specified anywhere in the code.

When I was implementing it, trivial class is a symbol that was never ever equal to anything else.  The moment we make merge something into it, it stops being trivial, forever!  Representative is an implementation detail and shouldn't be required to represent the actual information.  What I'm saying is that representative can be long gone, but the class can still hold.  If we use representative symbol for something other than its pointer or type after it's gone, the mistake is using representative in the first place, not the motivation to make it more complex and change representatives.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D106136



More information about the cfe-commits mailing list