Next: Sorting `poly_int`

s, Previous: Checking for a `poly_int`

marker value, Up: Comparisons involving `poly_int`

[Contents][Index]

`poly_int`

sAs well as the core comparisons
(see Comparison functions for `poly_int`

), `poly_int`

provides
utilities for various kinds of range check. In each case the range
is represented by a start position and a size rather than a start
position and an end position; this is because the former is used
much more often than the latter in GCC. Also, the sizes can be
-1 (or all ones for unsigned sizes) to indicate a range with a known
start position but an unknown size. All other sizes must be nonnegative.
A range of size 0 does not contain anything or overlap anything.

- ‘
`known_size_p (`’`size`) Return true if

`size`represents a known range size, false if it is -1 or all ones (for signed and unsigned types respectively).- ‘
`ranges_maybe_overlap_p (`’`pos1`,`size1`,`pos2`,`size2`) Return true if the range described by

`pos1`and`size1`*might*overlap the range described by`pos2`and`size2`(in other words, return true if we cannot prove that the ranges are disjoint).- ‘
`ranges_known_overlap_p (`’`pos1`,`size1`,`pos2`,`size2`) Return true if the range described by

`pos1`and`size1`is known to overlap the range described by`pos2`and`size2`.- ‘
`known_subrange_p (`’`pos1`,`size1`,`pos2`,`size2`) Return true if the range described by

`pos1`and`size1`is known to be contained in the range described by`pos2`and`size2`.- ‘
`maybe_in_range_p (`’`value`,`pos`,`size`) Return true if

`value`*might*be in the range described by`pos`and`size`(in other words, return true if we cannot prove that`value`is outside that range).- ‘
`known_in_range_p (`’`value`,`pos`,`size`) Return true if

`value`is known to be in the range described by`pos`and`size`.- ‘
`endpoint_representable_p (`’`pos`,`size`) Return true if the range described by

`pos`and`size`is open-ended or if the endpoint (`pos`+`size`) is representable in the same type as`pos`and`size`. The function returns false if adding`size`to`pos`makes conceptual sense but could overflow.

There is also a `poly_int`

version of the `IN_RANGE_P`

macro:

- ‘
`coeffs_in_range_p (`’`x`,`lower`,`upper`) Return true if every coefficient of

`x`is in the inclusive range [`lower`,`upper`]. This function can be useful when testing whether an operation would cause the values of coefficients to overflow.Note that the function does not indicate whether

`x`itself is in the given range.`x`can be either a constant or a`poly_int`

.

`poly_int`

s, Previous: Checking for a `poly_int`

marker value, Up: Comparisons involving `poly_int`

[Contents][Index]