///
/// Internalize - Run the internalize pass.
/// RunInliner - Use a function inlining pass.
- /// RunSecondGlobalOpt - Run the global optimizer pass twice.
/// VerifyEach - Run the verifier after each pass.
- //
- // FIXME: RunSecondGlobalOpt should go away once we resolve which of LTO or
- // llvm-ld is better.
static inline void createStandardLTOPasses(PassManager *PM,
bool Internalize,
bool RunInliner,
- bool RunSecondGlobalOpt,
bool VerifyEach);
// Implementations
static inline void createStandardLTOPasses(PassManager *PM,
bool Internalize,
bool RunInliner,
- bool RunSecondGlobalOpt,
bool VerifyEach) {
// Now that composite has been compiled, scan through the module, looking
// for a main function. If main is defined, mark all other functions
addOnePass(PM, createFunctionInliningPass(), VerifyEach);
addOnePass(PM, createPruneEHPass(), VerifyEach); // Remove dead EH info.
- // Optimize globals again.
- if (RunSecondGlobalOpt)
+ // Optimize globals again if we ran the inliner.
+ if (RunInliner)
addOnePass(PM, createGlobalOptimizerPass(), VerifyEach);
addOnePass(PM, createGlobalDCEPass(), VerifyEach); // Remove dead functions.
if (!DisableOptimizations)
createStandardLTOPasses(&Passes, !DisableInternalize, !DisableInline,
- /*RunSecondGlobalOpt=*/true, VerifyEach);
+ VerifyEach);
// If the -s or -S command line options were specified, strip the symbols out
// of the resulting program to make it smaller. -s and -S are GNU ld options
passes.add(new TargetData(*_target->getTargetData()));
createStandardLTOPasses(&passes, /*Internalize=*/ false, !DisableInline,
- /*RunSecondGlobalOpt=*/ false,
/*VerifyEach=*/ false);
// Make sure everything is still good.