summaryrefslogtreecommitdiff
path: root/src/pattern_completeness.mli
diff options
context:
space:
mode:
authorAlasdair Armstrong2019-05-09 19:37:56 +0100
committerAlasdair Armstrong2019-05-09 20:01:24 +0100
commit5fe14d1d13e4d6a3bc9a2a0390d645b383e56349 (patch)
treedc11a8f37a837c840a7dc45fb2dd3f73a293ea97 /src/pattern_completeness.mli
parent7280e7bcdcb56521482846af3282f6adbd277ce0 (diff)
SMT: Add explicit terminators to SSA graph
Makes the graph slightly cleaner, and means we can represent conditionals in a way that shoud allow computing path conditions much easier. Essentially rather than a basic block being a list of instructions where the last instruction is a jump (or other terminator) it is now a list of instructions combined with an explict terminator, i.e. CF_block (instrs @ I_jump (cval, label) ==> CF_block (instrs, T_jump (n, label)) Rather than storing the cval in the T_jump it just has a number that links to a mapping from numbers to cvals, and we represent the negation of any cval in that table by negating its number. Therefore at any join point in the CFG, we can efficiently check when the joining path conditionals contain both n and minus n and remove both.
Diffstat (limited to 'src/pattern_completeness.mli')
0 files changed, 0 insertions, 0 deletions