ldc icon indicating copy to clipboard operation
ldc copied to clipboard

Correct pass ordering for new pass manager

Open jamesragray opened this issue 3 years ago • 0 comments

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)

jamesragray avatar Sep 23 '22 14:09 jamesragray