def test(code_to_analyze): from pdb import set_trace # set_trace() #tac_blocks_cfg = tac_analysis.make_tacblock_cfg(code_to_analyze) tac_blocks_cfg = tac.make_tacblock_cfg(code_to_analyze) print("\n".join("# " + line for line in tac.cfg_to_lines(tac_blocks_cfg))) print() tac_to_ivy = TacToIvy() result = tac_to_ivy.tac_blocks_cfg_to_ivy(tac_blocks_cfg) open("ivy_file.ivy", 'w').write(result)
def make_tacblock_cfg(f, propagate_consts=True, liveness=True): cfg = tac.make_tacblock_cfg(f) if propagate_consts: dataflow(cfg, 0, {}, ConsProp) if liveness: for n in sorted(cfg.nodes()): block = cfg.node[n][BLOCKNAME] block = list(single_block_liveness(block)) block.reverse() cfg.node[n][BLOCKNAME] = block return cfg
def test_single_block(): import code_examples cfg = tac.make_tacblock_cfg(code_examples.RenderScene) for n in sorted(cfg.nodes()): block = cfg.node[n][BLOCKNAME] print('uses:', single_block_uses(block)) # print_block(n, block) # print('push up:') ConsProp.single_block_update(block) block = list(single_block_liveness(block)); block.reverse() ConsProp.single_block_update(block) block = list(single_block_liveness(block)); block.reverse() print_block(n, block)