package ocaml-base-compiler
The module Index
is used to filter and group the generated subranges. Inclusion of a computed subrange in the result is conditional upon the existence of an index that can be associated to it. To give a concrete example, the keys associated to ranges might be pseudoregisters, and the indexes variable names (c.f. Available_ranges_vars
). Every register that is not known to hold the value of some variable is dropped from the result.
As the name suggests, values of type Index.t
also serve as indices for accessing ranges in the result. The result may actually contain no reference to keys (only Subrange_info.t
may reliably contain it), and subranges with different keys will be coalesced into a single range if all their keys are associated to the same index.
module T : Identifiable.Thing with type t = t
include Identifiable.Thing with type t := T.t
include Hashtbl.HashedType with type t := T.t
val hash : T.t -> int
A hashing function on keys. It must be such that if two keys are equal according to equal
, then they have identical hash values as computed by hash
. Examples: suitable (equal
, hash
) pairs for arbitrary key types include
- (
(=)
,Hashtbl.hash
) for comparing objects by structure (provided objects do not contain floats) - (
(fun x y -> compare x y = 0)
,Hashtbl.hash
) for comparing objects by structure and handlingStdlib.nan
correctly - (
(==)
,Hashtbl.hash
) for comparing objects by physical equality (e.g. for mutable or cyclic objects).
include Map.OrderedType with type t := T.t
A total ordering function over the keys. This is a two-argument function f
such that f e1 e2
is zero if the keys e1
and e2
are equal, f e1 e2
is strictly negative if e1
is smaller than e2
, and f e1 e2
is strictly positive if e1
is greater than e2
. Example: a suitable ordering function is the generic structural comparison function Stdlib.compare
.
val output : out_channel -> T.t -> unit
val print : Format.formatter -> T.t -> unit
module Set : Identifiable.Set with module T := T
module Map : Identifiable.Map with module T := T
module Tbl : Identifiable.Tbl with module T := T