ldc
ldc copied to clipboard
Correct pass ordering for new pass manager
It doesn't seem completely clear how to translate ordering of legacy pass manager to the new one. For instance the legacy pass manager does:
builder.addExtension(PassManagerBuilder::EP_LoopOptimizerEnd,
legacyAddGarbageCollect2StackPass);
but with the new pass manager the only options seem to be
void registerPipelineStartEPCallback (const std::function< void(ModulePassManager &, OptimizationLevel)> &C)
void registerPipelineEarlySimplificationEPCallback (const std::function< void(ModulePassManager &, OptimizationLevel)> &C)
void registerOptimizerEarlyEPCallback (const std::function< void(ModulePassManager &, OptimizationLevel)> &C)
void registerOptimizerLastEPCallback (const std::function< void(ModulePassManager &, OptimizationLevel)> &C)
void registerFullLinkTimeOptimizationEarlyEPCallback (const std::function< void(ModulePassManager &, OptimizationLevel)> &C)
void registerFullLinkTimeOptimizationLastEPCallback (const std::function< void(ModulePassManager &, OptimizationLevel)> &C)
or if we restructure
static void addGarbageCollect2StackPass(ModulePassManager &mpm,
OptimizationLevel level ) {
to become
static void addGarbageCollect2StackPass(FunctionPassManager &fpm,
OptimizationLevel level ) {
then the options seem to be:
void registerPeepholeEPCallback (const std::function< void(FunctionPassManager &, OptimizationLevel)> &C)
void registerScalarOptimizerLateEPCallback (const std::function< void(FunctionPassManager &, OptimizationLevel)> &C)
void registerVectorizerStartEPCallback (const std::function< void(FunctionPassManager &, OptimizationLevel)> &C)