Mercurial > projects > ldc
diff gen/optimizer.cpp @ 1507:f86fd3b77285
Eliminate comparisons between GC allocations and constants. This removes some
`assert(this !is null)`s when member functions get inlined.
Also tweak pass order a bit.
author | Frits van Bommel <fvbommel wxs.nl> |
---|---|
date | Sat, 20 Jun 2009 14:28:59 +0200 |
parents | 76936858d1c6 |
children | c88b16d4a13c |
line wrap: on
line diff
--- a/gen/optimizer.cpp Sat Jun 20 11:39:13 2009 +0200 +++ b/gen/optimizer.cpp Sat Jun 20 14:28:59 2009 +0200 @@ -154,28 +154,26 @@ // opApply's, etc. where the actual function being called // wasn't known during the first inliner pass. addPass(pm, createFunctionInliningPass()); - - // Run clean-up again. - addPass(pm, createScalarReplAggregatesPass()); - addPass(pm, createInstructionCombiningPass()); } } - if (optimizeLevel >= 2 && !disableLangSpecificPasses) { - if (!disableSimplifyRuntimeCalls) - addPass(pm, createSimplifyDRuntimeCalls()); - + if (optimizeLevel >= 2) { + if (!disableLangSpecificPasses) { + if (!disableSimplifyRuntimeCalls) + addPass(pm, createSimplifyDRuntimeCalls()); + #ifdef USE_METADATA - if (!disableGCToStack) { - addPass(pm, createGarbageCollect2Stack()); - // Run some clean-up - addPass(pm, createInstructionCombiningPass()); - addPass(pm, createScalarReplAggregatesPass()); - addPass(pm, createCFGSimplificationPass()); + if (!disableGCToStack) + addPass(pm, createGarbageCollect2Stack()); +#endif } -#endif + // Run some clean-up passes + addPass(pm, createInstructionCombiningPass()); + addPass(pm, createScalarReplAggregatesPass()); + addPass(pm, createCFGSimplificationPass()); + addPass(pm, createInstructionCombiningPass()); } - + // -O3 if (optimizeLevel >= 3) {