I'll add to mcbit's excellent description that there's also advantages in verification. Passes on a simple, intermediate language can more easily be equivalence-checked by symbolic (eg KLEE) or formal (eg VeLLVM) methods to ensure the transformations didn't break the program somehow. So, you get piles of people contributing optimizations plus potential improvements in verifying they work.
https://klee.github.io/
http://www.pgbovine.net/PhD-memoir/ucklee-cav-2011.pdf
https://www.cis.upenn.edu/~stevez/vellvm/