You don't need to compute dominators. A topological sort of the graph gives you a computation order where your definitions are computed before their use.
For an example, consider a three-node binary tree where R is the root, A is the left child, and B is the right child. A valid topological sort is R A B, but it is not the case that whenever B is computed, A has already been computed.
let $0 = f a b in
let $1 = g $0 c in
...
and instead leave some original structure in place and some tree-level simplifications available.