Computing bounds on poly_ints (GNU Compiler Collection (GCC) Internals)

### 10.6 Computing bounds on `poly_int`s ¶

`poly_int` also provides routines for calculating lower and upper bounds:

‘`constant_lower_bound (a)`’

  Assert that a is nonnegative and return the smallest value it can have.

‘`constant_lower_bound_with_limit (a, b)`’

  Return the least value a can have, given that the context in which a appears guarantees that the answer is no less than b. In other words, the caller is asserting that a is greater than or equal to b even if ‘`known_ge (a, b)`’ doesn’t hold.

‘`constant_upper_bound_with_limit (a, b)`’

  Return the greatest value a can have, given that the context in which a appears guarantees that the answer is no greater than b. In other words, the caller is asserting that a is less than or equal to b even if ‘`known_le (a, b)`’ doesn’t hold.

‘`lower_bound (a, b)`’

  Return a value that is always less than or equal to both a and b. It will be the greatest such value for some indeterminate values but necessarily for all.

‘`upper_bound (a, b)`’

  Return a value that is always greater than or equal to both a and b. It will be the least such value for some indeterminate values but necessarily for all.