[llvm-dev] RFC Storing BB order in llvm::Instruction for faster local dominance

Reid Kleckner via llvm-dev llvm-dev at lists.llvm.org
Fri Feb 14 13:49:44 PST 2020


Hello again. :)

There has been renewed interest in having instructions track their own
order in basic blocks to help make dominance queries fast. I have a very
simple naive implementation of this here:
https://reviews.llvm.org/D51664

Essentially, every instruction will carry an integer order number, and
inserting new instructions invalidates the ordering. I know there are
better algorithms for maintaining the ordering in the face of random
insertions, but I wanted to focus on the simple case of making dominance
queries amortized O(1) when no insertion is occuring. My personal belief is
that most transforms are 80% analysis, 20% transformation, so most of the
benefits can be delivered with simple heuristics.

MLIR already uses this technique:
https://github.com/llvm/llvm-project/blob/master/mlir/include/mlir/IR/Operation.h#L615

With the renewed interest in the patch, I believe there is broad consensus
that we should do this, but I wanted to re-open this RFC that I started
back in 2018 to give anyone a chance to say "no".
http://lists.llvm.org/pipermail/llvm-dev/2018-September/126249.html

Thanks,
Reid
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200214/5428af8e/attachment.html>


More information about the llvm-dev mailing list