gcc's LTO needs JEWS binutils-gold, Unless you feel like going --combine -fwhole-program. Clang/LLVM don't do it correctly due to some gold problems (some unused functions don't get eliminated); the other way is to use "llc", but then you can't eliminate the functions that aren't used.
MSVC is good if you're on Windows. One can useful have it do what you want, how you want it, with no questions asked, even it means generating invalid executables. Version 6 was the best among them. Newer versions improved some things, but they also made other things less nicer than they used to be.
Of course, there can be no talk of MSVC outside of Win32, so the question is moot.