module BTLtoRTLaux: sig
.. end
Translation from BTL to RTL and CFG factorization
val translate_function : BTL.iblock_info Maps.PTree.t -> 'a -> RTL.instruction Maps.PTree.t
module Mapnode: Stdlib.Map.Make
(
Stdlib.Int
)
val no_succ_inst : RTL.instruction -> RTL.instruction
module Instbl: Stdlib.Hashtbl.Make
(
sig
type
t = RTL.instruction
val equal : RTL.instruction -> RTL.instruction -> bool
val hash : RTL.instruction -> int
end
)
val find : Mapnode.key Mapnode.t ->
Mapnode.key -> Mapnode.key
val subst_inst : Mapnode.key Mapnode.t ->
RTL.instruction -> RTL.instruction
val label : 'a Mapnode.t Stdlib.ref -> Mapnode.key -> 'a -> unit
val minimize_output : RTL.instruction Mapnode.t ->
Mapnode.key Mapnode.t ->
RTL.instruction Mapnode.t
val init_rep : Mapnode.key Mapnode.t Stdlib.ref ->
Mapnode.key -> unit
val ord_add_rep : Mapnode.key Mapnode.t Stdlib.ref ->
Mapnode.key -> Mapnode.key -> unit
val get_succ : RTL.instruction -> int list
val first_approx : Instbl.key Mapnode.t ->
Mapnode.key Mapnode.t
val simplify_id : RTL.instruction Mapnode.t ->
RTL.instruction Mapnode.t *
Mapnode.key Mapnode.t
val preds : RTL.instruction Mapnode.t ->
(int, Mapnode.key) Stdlib.Hashtbl.t
type
eqclass = {
|
rep : int ; |
|
mutable others : int list ; |
}
val eqv_of : 'a ->
Mapnode.key Mapnode.t ->
eqclass Mapnode.t
type
state = {
|
cfg : RTL.instruction Mapnode.t ; |
|
preds : (int, int) Stdlib.Hashtbl.t ; |
|
old_repm : int Mapnode.t ; |
|
mutable repm : int Mapnode.t ; |
|
mutable eqv : eqclass Mapnode.t ; |
|
mutable queue : eqclass Mapnode.t ; |
}
val init_state : Instbl.key Mapnode.t -> state
val init_eqc : state -> Mapnode.key -> eqclass
val ord_add_eqc : state -> Mapnode.key -> eqclass -> unit
val get_succ_repr : state -> Mapnode.key -> Mapnode.key list
val init_succm : state ->
eqclass ->
(Mapnode.key list, eqclass) Stdlib.Hashtbl.t
val get_pred : state ->
eqclass -> eqclass Mapnode.t
val mark_to_visit : state ->
'a ->
eqclass Mapnode.t ->
eqclass Mapnode.t -> unit
val next_approx : state -> eqclass -> unit
val get_rep : Camlcoq.P.t ->
int Mapnode.t ->
Mapnode.key Mapnode.t -> Camlcoq.P.t
val factorize_cfg : Instbl.key Maps.PTree.t ->
Camlcoq.P.t ->
Camlcoq.P.t Maps.PTree.tree ->
(RTL.instruction Maps.PTree.t * Camlcoq.P.t) * Camlcoq.P.t Maps.PTree.tree
val btl2rtl : BTL.coq_function ->
(RTL.instruction Maps.PTree.t * Camlcoq.P.t) * Camlcoq.P.t Maps.PTree.t