Sure, so feel free to check out and run the code (use -newgvn to run the pass), and send patches.
Compared to the paper, the following major differences exist:
1. We just keep the worklist in RPO order using a bitvector
2. We don't implement the predicate system they do. We use a variant of the one GVN used to, because it does not require a post-dominator tree
3. We don't implement phi inference.
4. All value inferencing is based on the predicate system we have
5. The algorithm marks things as touched uselessly in some cases given our predicate system. Our propagateChangeInEdge is muchbetter in this respect, we only mark downstream phi nodes.
If you want something larger to do, it'd be interesting to implement their predicate system and value inference and see if it is really worth the cost
(i suspect we would want post-dominance frontiers rather than their post-dominator-tree based touching, but we can fix that later)