[Attributor] AAValueConstantRange: Value range analysis using constant range
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 when AAValueSimplify cannot
simplify the value.
- BinaryOperator(add, sub, ...)
- CmpInst(icmp eq, ...)
- !range metadata
AAValueConstantRange is not intended to extend to polyhedral range value analysis.
Reviewed By: jdoerfert
Differential Revision: https://reviews.llvm.org/D71620