HomePhabricator

[Attributor] AAValueConstantRange: Value range analysis using constant range

Authored by uenoku on Dec 31 2019, 10:25 PM.

Description

[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.

Supported

  • 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