tac_analysis.py 文件源码

python
阅读 31 收藏 0 点赞 0 评论 0

项目:pythia 作者: elazarg 项目源码 文件源码
def dataflow(g:'graph', start:'node', start_value, Analysis=ConsProp):
    import networkx as nx
    import graph_utils as gu
    gu.node_data_map_inplace(g,
            f=lambda n, d: Analysis.single_block_update,
            attr='transfer_function')

    nx.set_node_attributes(g, 'outb', {v: Analysis.initial() for v in g.nodes()})
    nx.set_node_attributes(g, 'inb', {v: Analysis.initial() for v in g.nodes()})
    g.node[start]['inb'] = Analysis.initial()
    wl = set(g.nodes())
    while wl:
        u = wl.pop()
        udata = g.node[u]
        inb = udata['inb']
        Analysis.join(inb, [g.node[x]['outb'] for x in g.predecessors(u)])
        outb = udata['transfer_function'](udata[BLOCKNAME], inb)
        if outb != udata['outb']:
            udata['outb'] = outb
            wl.update(g.successors(u))
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号