let print_basic_block b =
    let string_of_int_list = 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");
    print_string ("immediate dominator: "^(string_of_int b.immediate_dominator)^"\n");
    List.iter (fun x -> print_string (print_il1 x)) b.code