def check_cfg(function, expected_edges, expected_exits, expected_raises): statements = get_body(function) cfg = build_cfg(statements) assert_labels_equal(cfg, expected_edges, expected_exits, expected_raises) if RENDER_GRAPHS: render_cfg(cfg, "test_" + function.__name__ + ".pdf")
def fold(tree, constants): statements = tree.body cfg = build_cfg(statements) gen_sym = GenSym.for_tree(tree) new_nodes, temp_bindings = maximal_fixed_point(gen_sym, cfg.graph, cfg.enter, constants) constants = dict(constants) constants.update(temp_bindings) new_tree = replace_exprs(tree, new_nodes) return new_tree, constants