1 (**************************************************************************)
2 (* *)
3 (* OCaml *)
4 (* *)
5 (* Marcell Fischbach, University of Siegen *)
6 (* Benedikt Meurer, University of Siegen *)
7 (* *)
8 (* Copyright 2011 Lehrstuhl für Compilerbau und Softwareanalyse, *)
9 (* Universität Siegen. *)
10 (* *)
11 (* All rights reserved. This file is distributed under the terms of *)
12 (* the GNU Lesser General Public License version 2.1, with the *)
13 (* special exception on linking described in the file LICENSE. *)
14 (* *)
15 (**************************************************************************)
16
17 (* Live intervals for the linear scan register allocator. *)
18
19 type range =
20 {
21 mutable rbegin: int;
22 mutable rend: int;
23 }
24
25 type t =
26 {
27 mutable reg: Reg.t;
28 mutable ibegin: int;
29 mutable iend: int;
30 mutable ranges: range list;
31 }
32
33 val all_intervals: unit -> t list
34 val all_fixed_intervals: unit -> t list
35 val overlap: t -> t -> bool
36 val is_live: t -> int -> bool
37 val remove_expired_ranges: t -> int -> unit
38 val build_intervals: Mach.fundecl -> unit
39