let print_il_basic_block b =
    let string_of_int_list = Ctt_printer.print_list string_of_int "," in
    print_string ("predecessor: "^(string_of_int_list b.predecessor)^"\n");
    print_string ("successor: "^(string_of_int_list b.successor)^"\n");
    Printf.printf "immediate dominator: %d\n" b.immediate_dominator;
    Printf.printf "nest level : %d\n" b.nest_level;
    let print_phi_function( n, t, a ) =
        let l = Ctt_printer.print_list print_id "," (Array.to_list a) in
        print_string ((print_id n)^" : "^(print_c_type t)^" = phi("^l^")\n")
    in
    List.iter print_phi_function b.phi_function;
    List.iter (function insn -> print_string (print_il insn)) b.code