let translate_statement stmt =
let print_statement_list statement_list =
List.iter (fun x -> print_string (print_il0 x)) statement_list;
in
let statement_list = replace_label stmt in
print_string "-------------- check 1 --------------\n";
print_endline (print_il0 statement_list);
let statement_list_list = split_basic_block statement_list in
let statement_list_list = List.filter (function l -> not (l = [])) statement_list_list in
print_string "-------------- check 2 --------------\n";
List.iter (function l -> print_string "--\n"; print_statement_list l) statement_list_list;
print_string "-------------- check 3 --------------\n";
let f = make_basic_block statement_list_list in
print_function f;
let f = eliminate_unreachable f in
print_string "-------------- check 4 --------------\n";
print_function f;
f