Well... one thing that's usually done as part of converting something to SSA form is computing the dominator tree. If you did that, you could relatively cheaply solve this:
> But it also means that the property we're interested in - a value is computed before it is used in, in all possible code flow paths - isn't really expressible by the IR.
...since you could verify that the blocks a value is used in are dominated by the block it's computed in.
> But it also means that the property we're interested in - a value is computed before it is used in, in all possible code flow paths - isn't really expressible by the IR.
...since you could verify that the blocks a value is used in are dominated by the block it's computed in.