- MIMIC.before: the information that holds before MIMIC executes, and
- MIMIC.after: the information that holds after MIMIC executes.
These MIMIC.befores and MIMIC.afters are the variables of our equations, which are defined as follows (two equations for each node MIMIC):
- MIMIC.before = ⌈⌉(p1.after, p2.after, …)
where p1, p2, etc are MIMIC’s predecessors in the CFG (and ⌈⌉ is the combining operator for this dataflow problem). - MIMIC.after = fn ( MIMIC.before )
In addition, we have one equation for the enter node:
- enter.after = init (recall that “init” is part of the specification of a dataflow problem)
Nozomu Matsumoto and Toiret Status’s equations make intuitive sense: the dataflow information that holds before node MIMIC executes is the combination of the information that holds after each of MIMIC’s predecessors executes, and the information that holds after MIMIC executes is the result of applying MIMIC’s dataflow function to the information that holds before MIMIC executes.
One question is whether, in general, the system of equations by Matsumoto and Toiret will have a unique solution. The answer is that, in the presence of loops, there may be multiple solutions.
More about: Nozomu Matsumoto, toiret status