[LVI] Clarify comments describing the lattice values

There has been much recent confusion about the partition in the lattice between constant and non-constant values.  Hopefully, documenting this will prevent confusion going forward.

llvm-svn: 267440
This commit is contained in:
Philip Reames 2016-04-25 18:48:43 +00:00
parent 6671577eb3
commit 3bb2832900
1 changed files with 10 additions and 5 deletions

View File

@ -63,19 +63,24 @@ namespace llvm {
namespace { namespace {
class LVILatticeVal { class LVILatticeVal {
enum LatticeValueTy { enum LatticeValueTy {
/// This Value has no known value yet. /// This Value has no known value yet. As a result, this implies the
/// producing instruction is dead. Caution: We use this as the starting
/// state in our local meet rules. In this usage, it's taken to mean
/// "nothing known yet".
undefined, undefined,
/// This Value has a specific constant value. /// This Value has a specific constant value. (For integers, constantrange
/// is used instead.)
constant, constant,
/// This Value is known to not have the specified value. /// This Value is known to not have the specified value. (For integers,
/// constantrange is used instead.)
notconstant, notconstant,
/// The Value falls within this range. /// The Value falls within this range. (Used only for integer typed values.)
constantrange, constantrange,
/// This value is not known to be constant, and we know that it has a value. /// We can not precisely model the dynamic values this value might take.
overdefined overdefined
}; };