Compute_ranges_intf.SThis module type is the result type of the Compute_ranges.Make functor.
The _ranges_ being computed are composed of contiguous _subranges_ delimited by two labels (of type Linear.label). These labels will be added by this pass to the code being inspected, which is why the create function in the result of the functor returns not only the ranges but also the updated function with the labels added. The start_pos_offset and end_pos_offset components of the subranges are there to allow a distinction between ranges starting (or ending) right at the start of the corresponding instruction (offset of zero), and ranges starting or ending one byte after the actual instruction (offset of one).
module Index : Identifiable.SCorresponds to Index in the S_functor module type.
module Key : sig ... endCorresponds to Key in the S_functor module type.
module Subrange_state : S_subrange_stateCorresponds 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.tCorresponds to Subrange_info in the S_functor module type.
module Range_info : S_range_info with type key := Key.t with type index := Index.tCorresponds to Range_info in the S_functor module type.
module Subrange : sig ... endmodule Range : sig ... endval empty : tA value of type t that holds no range information.
val create : Linear.fundecl -> t * Linear.fundeclCompute 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.tAll 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 -> tAn internal function used by Coalesce_labels. The env should come from Coalesce_labels.fundecl.