This is a very odd behavior I've been seeing for quite a while now with RDMD. DMD doesn't recreate this behavior.
Take this module: module test; template Foo(T) { pragma(msg, "test"); } alias Foo!int a; // alias Foo!double b; void main() { } Notice one of the instantiations is commented out. $ is my prompt, > are the printed results: $ rdmd test.d > test > test $ rdmd test.d > test The first time I run it, it instantiates (or evaluates) the template twice. The second time I run rdmd, with no changes to the module, it only evaluates the template once. Now I comment out the second instantiation in the module and try again: $ rdmd test.d > test > test > test > test $ rdmd test.d > test > test Quite weird. I'm thinking this could cause some kind of slowdown. Anyone have a clue what's going on here?