I have never heard of a compiler/linker that actually recompiles anything during linking. All LTO systems that I know instead compile the code to some intermediate representation and dump that to the object files instead of real object code, and have the linker only do optimization and final code generation during the linking.
But that capability is actually quite common. Intel's and Microsoft's proprietary compilers can do it, of course, but so can GCC (when used with the gold linker) and LLVM (with the gold or Darwin linker, or LLVM's prelinker).
But LTO is not something you enable during development.