`module Index : Identifiable.S`

Corresponds to `Index`

in the `S_functor`

module type.

`module Key : sig ... end`

Corresponds to `Key`

in the `S_functor`

module type.

`module Subrange_state : S_subrange_state`

Corresponds to `Subrange_state`

in the `S_functor`

module type.

`module Subrange_info : S_subrange_info with type key := Key.t with type subrange_state := Subrange_state.t`

Corresponds to `Subrange_info`

in the `S_functor`

module type.

`module Range_info : S_range_info with type key := Key.t with type index := Index.t`

Corresponds to `Range_info`

in the `S_functor`

module type.

`module Subrange : sig ... end`

`module Range : sig ... end`

`val empty : t`

A value of type `t`

that holds no range information.

`val create : Linear.fundecl -> t * Linear.fundecl`

Compute ranges for the code in the given linearized function declaration, returning the ranges as a value of type `t`

and the rewritten code that must go forward for emission.

Iterate through ranges. Each range is associated with an index.

`val all_indexes : t -> Index.Set.t`

All indexes for which the given value of type `t`

contains ranges.

`val rewrite_labels_and_remove_empty_subranges_and_ranges : t -> env:int Numbers.Int.Map.t -> t`

An internal function used by `Coalesce_labels`

. The `env`

should come from `Coalesce_labels.fundecl`

.