open Gen open Ass open Smallset type 'a flowinfo = { instr : 'a; def : temp set; use : temp set; mutable live_in : temp set; mutable live_out : temp set; mutable succ : 'a flowinfo list; };; val flow : instr list -> instr flowinfo list;; val move_flow : instr list -> instr flowinfo list;; type interference = { temp : temp; mutable color : temp option; mutable adj : interference list } (* les noeuds du graphe d'interférnce *) type move = { move : instr; left : interference; right : interference } (* les noeuds move: ce sont des arcs supplémentaire au graphe d'interférence *) val interference : temp list (* precolored nodes *) -> instr flowinfo list -> interference list * move list (* retourne le graphe d'interférence *) val print : out_channel -> (temp -> string) -> instr flowinfo list -> unit (* "print namer flowcode" imprime le code de "flowcode" avec "namer" pour l'impression des temporaires en mettant les informations de flux en commentaire *)