This patch introduces AAValueConstantRange, which answers a possible range for integer value in a specific program point.
One of the motivations is propagating existing range metadata. (I think we need to change the situation that range metadata cannot be put to Argument).
The state is a tuple of ConstantRange and it is initialized to (known, assumed) = ([-∞, +∞], empty).
Currently, AAValueConstantRange is created in getAssumedConstant method when AAValueSimplify returns nullptr(worst state).
- BinaryOperator(add, sub, ...)
- CmpInst(icmp eq, ...)
- !range metadata
AAValueConstantRange is not intended to extend to polyhedral range value analysis.