For some background info on how LLVM does this, see <a href="https://kristerw.blogspot.com/2019/04/how-llvm-optimizes-geometric-sums.html" rel="nofollow">https://kristerw.blogspot.com/2019/04/how-llvm-optimizes-geo...</a>