- Adds API support for widening of lattice elements and environments,
- Updates the algorithm to apply widening where appropriate,
- Implements widening for boolean values. In the process, moves the unsoundness of comparison from the default implementation of Environment::ValueModel::compare to model-specific handling inside DataflowEnvironment::equivalentTo. This change is intended to clarify the source and location of unsoundess.
This patch is a replacement for, and was based substantially on, https://reviews.llvm.org/D131645.
We should document what is the return value for. Also I see LatticeJoinEffect instead of bool in the code, but I might be confused.