- Given that in this IR, every value has a single definition, and every use must reference that value, I'd argue that this is already SSA form.
- In fact, the concept of 'variable' is mostly missing, there's only a repeated reference to the same value. I think that simplifies things a lot, but maybe too much.
- Optimizing across expression boundaries is in fact very much the point, if we can keep the semantics the same.
Thanks for your interest!
> 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.