1-S.Key
The module Key
corresponds to the identifiers that define the ranges in Linear
instructions. Each instruction should have two sets of keys, available_before
and available_across
, with accessor functions of these names being provided to retrieve them. The notion of "availability" is not prescribed. The availability sets are used to compute subranges associated to each key.
module Set : sig ... end
val print : Format.formatter -> t -> unit
Print a representation (typically sexp) of the given key to the given formatter.
In some situations, for performance reasons, an "available" set may only contain a subset of all keys that need to be tracked. For example, when using a notion of availability that describes which lexical block a given instruction lies in, using a standard notion of nested lexical blocks, the innermost lexical block uniquely determines the chain of its parents. (This is exploited in Lexical_block_ranges
.) The all_parents
function must return, given an "available" key
, all those other keys that are also available and uniquely determined by key
.