Link time optimization in D

dsimcha dsimcha at
Mon May 31 16:09:06 PDT 2010

== Quote from Walter Bright (newshound1 at's article
> retard wrote:
> > Mon, 31 May 2010 18:23:18 +0200, Pelle wrote:
> >
> >> On 05/31/2010 05:43 PM, retard wrote:
> >>> DMD is much slower than Sun Javac/Jvm 7, GNU GCC 4.5, and LLVM.
> >> For very special values of much, I suppose.
> >
> > Polymorphic method calls, auto-vectorization, link-time optimization,
> > floating point performance, etc.
> Link time optimization? Let's examine it:
> "When source files are compiled and linked using -flto, GCC applies
> optimizations as if all the source code were in a single file. This allows GCC
> to perform more aggressive optimizations across files, such as inlining the body
> of a function from one file that is called from a different file, and
> propagating constants across files. In general, the LTO framework enables all
> the usual optimizations that work at a higher level than a single function to
> also work across files that are independently compiled."
> D has had that for 8 years now, it's just done in the compiler instead of the
> linker. You can specify as many D source modules as you want on the command line
> to the compiler, and it will compile & optimizer & inline them all together and
> generate one object file.
> Essentially, link time optimization is a hack to get around the language problem
> C/C++ have with their separate compilation model.
> To say D code is slower because it lacks link-time optimization is a false
> supposition.

I was not aware that specifying multiple files at the same time affects
optimization.  This feature needs to be better integrated into IDEs.  For small
but computationally intensive scientific computing programs, I would rather ditch
separate compilation entirely and just compile the entire program in one go.
Nonetheless, CodeBlocks compiles each file separately by default, and if this is
customizable I don't how how.

More information about the Digitalmars-d mailing list