Browsers are, when you think about it, pretty damn amazing.
I think a compiler is different because you can't break it apart into separate projects like that. All the parts that go into a compiler are really only useful for that compiler, not as common pieces of "infrastructure" that can be used by many disparate larger projects.
[1] https://en.wikipedia.org/wiki/Hardware_description_language
Hope to see some real-world benchmarks soon!
When g++4.9 went out, our old mathematical/financial library was finally able to be built with LTO.
See, to be effective, devirtualisation requires LTO, it also requires profile-guided analysis to detect the right use-cases to devirtualise, and it requires that your functions can in effect be "hidden" from the outside, so that the compiler can tune the inlined functions.
As our codebase was also portable to Windows (and so, had all the right declspec (dllexport) lying around), we were able to use the -fvisibility=hidden flag. We just had to make sure that everything was within one big fat shared-lib.
On old CPUs (e.g: Nehalem class), our code ran 2 times faster than the same code compiled with -O3. On Haswell-E, it ran 50% faster.
There's also a very cheap way to force devirtualisation: use the C++11 "final" keyword on your methods. G++ can optimise and inline where applicable.
I was hoping this could automatically improve performance for existing projects but it seems it is a bit more complicated than that. Either way, 50-100% improvements sounds very nice.