module Peephole:sig..end
typerewriting_rules =(Utils.u2 * Instruction.t) list -> (Utils.u2 * Instruction.t) list
val optimize_constants : rewriting_rulesval optimize_locals : rewriting_rulesval avoid_conv : rewriting_rulesval remove_nops_and_unused_pushed_values : rewriting_rulesval optimize_iinc : rewriting_rulesval remove_load_store : rewriting_rulesval remove_get_put : rewriting_rulesval rewrite_store_store : rewriting_rulesval rewrite_store_load : rewriting_rulesval rewrite_load_load : rewriting_rulesval constant_on_the_top : rewriting_rulesval remove_neutral_elements : rewriting_rulesval rewrite_absorbing_elements : rewriting_rulesval apply_stength_reduction : rewriting_rulesval remove_identity : rewriting_rulesval all_rules : rewriting_rules listoptimize_constants;optimize_locals;remove_nops_and_unused_pushed_values;optimize_iinc;remove_load_store;remove_get_put;rewrite_store_store;rewrite_store_load;rewrite_load_load;constant_on_the_top;remove_neutral_elements;rewrite_absorbing_elements;apply_stength_reduction;remove_identity.type position =
| |
Head |
(* | Insert rule at the list begin. | *) |
| |
Tail |
(* | Insert rule at the list end. | *) |
| |
Before of |
(* | Insert rule before specified one. | *) |
| |
After of |
(* | Insert rule before specified one. | *) |
val insert : rewriting_rules ->
position ->
rewriting_rules list -> rewriting_rules listinsert r p l inserts rule r into list l at position p,
using physical equality to compare rewriting rules.
Raises Not_found if p references rewriting rules not present in
the list.
val optimize_list : ?rules:rewriting_rules list ->
(Utils.u2 * Instruction.t) list -> (Utils.u2 * Instruction.t) listoptimize_list ~rules:l l2 optimizes l2 by applying the the list
of rewriting rules l until a fixpoint is reached.
WARNING: offset are not rewritten, meaning that l2 should not
contain any jump instruction.
val optimize_graph : ?rules:rewriting_rules list ->
('a * Utils.u2 list, 'b) ControlFlow.graph ->
('a * Utils.u2 list, 'b) ControlFlow.graphoptimize_graph ~rules:l g returns a graph similar to g, except
that every instruction list has been optimized, l being the list of
rewriting rules to apply to instruction lists (until a fixpoint is
reached).