heptagon/compiler/minils/main/mls_compiler.ml

60 lines
2 KiB
OCaml
Raw Normal View History

(**************************************************************************)
(* *)
(* Heptagon *)
(* *)
(* Author : Marc Pouzet *)
(* Organization : Demons, LRI, University of Paris-Sud, Orsay *)
(* *)
(**************************************************************************)
open Misc
open Location
open Compiler_utils
open Compiler_options
let pp p = if !verbose then Mls_printer.print stdout p
2010-11-23 17:13:33 +01:00
let compile_program p =
(* Clocking *)
2011-05-13 15:35:29 +02:00
let p =
try pass "Clocking" true Clocking.program p pp
with Errors.Error ->
comment ~sep:"" "\nInfered clocks :\n";
2011-05-13 15:35:29 +02:00
pp p;
comment ~sep:"*** " ("Clocking failed.");
if !print_types then Global_printer.print_interface Format.std_formatter;
raise Errors.Error
in
if !print_types then Global_printer.print_interface Format.std_formatter;
2011-05-12 17:40:23 +02:00
(* Level clocks *)
let p = pass "Level clock" true Level_clock.program p pp in
2011-07-04 11:25:01 +02:00
(* Dataglow minimization *)
2010-09-30 21:44:18 +02:00
let p =
let call_tomato = !tomato or (List.length !tomato_nodes > 0) in
2011-10-03 11:43:50 +02:00
let p = pass "Extended value inlining" call_tomato Inline_extvalues.program p pp in
2011-07-04 11:25:01 +02:00
pass "Data-flow minimization" call_tomato Tomato.program p pp in
(** TODO: re enable when ported to the new AST
2010-09-30 21:44:18 +02:00
let p =
pass "Automata minimization checks" true Tomato.tomato_checks p pp in
*)
(* Normalize memories*)
let p = pass "Normalize memories" true Normalize_mem.program p pp in
(* Scheduling *)
let p =
2011-10-23 17:41:50 +02:00
if not !Compiler_options.use_old_scheduler then
pass "Scheduling (with minimization of interferences)" true Schedule_interf.program p pp
else
pass "Scheduling" true Schedule.program p pp
in
2011-04-20 15:47:05 +02:00
(* Memory allocation *)
let p = pass "Memory allocation" !do_mem_alloc Interference.program p pp in
2011-04-20 15:47:05 +02:00
p