Lazy sem'checking has been discussed for years before that PR. Unfortunately it's inherently incompatible with separate compilation and modularity. Consider a module A offering two concrete procs p1, p2. Module B only uses p1. So when the compile order is B -> A only p1 would be compiled. Now a module C is added that uses p2. So now p2 needs to be compiled but if we assume that we want to compile A only once and save the result on disk in an intermediate format that's impossible. So we need to recompile A even though it didn't change at all.
Now there are ways to compensate for these problems, but the solution is hardly elegant nor particularly peformant -- and you pay for this complex logic even for programs that don't contain too much dead code.