[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 {
class LVILatticeVal {
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,
/// This Value has a specific constant value.
/// This Value has a specific constant value. (For integers, constantrange
/// is used instead.)
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,
/// The Value falls within this range.
/// The Value falls within this range. (Used only for integer typed values.)
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
};