Test case:
int dataflow(int b) { int a; if (b==4) a = 3*b; // fully optimized when a is simplified to a constant; else a = 5; if (a == 4) return 0; else return 1; }
As an example, we can replace the use of 'b' in 'a = 3 * b' with '4', which then allows the function to simplify to just 'return 1'.
This is just something I quickly threw together. If anyone has interest in this I can add test cases and submit for formal review.
Chad