4 ms·
Can't I check whether every instruction in every BasicBlock of the CFG is equal?
by senatorobama 9y ago
Can't I check whether every instruction in every BasicBlock of the CFG is equal?
- yorwba 9y agoSure, but how do you determine which basic blocks correspond to each other, when there have been changes to parts of the graph?
- senatorobama 9y agoDamn. Is this an unsolved problem in CS?
- raphlinus 9y agoGraph isomorphism is a known NP-hard problem, but the vast majority of subgraphs in programs are reducible, so I expect that aligning two control flow graphs admits a good heuristic solution.
- yorwba 9y agoActually, the complexity of Graph Isomorphism in general is still unknown, and any definite classification would have interesting consequences. https://en.wikipedia.org/wiki/Graph_isomorphism_problem https://en.wikipedia.org/wiki/Graph_isomorphism_problem I agree though that control flow graphs are probably easier to align than completely random graphs, although there might be pathological cases e.g. if you have lots of identical subgraphs like if err != nil { return nil, err }.