Struct llvm_plugin::PassBuilder
source · pub struct PassBuilder { /* private fields */ }
Expand description
Main struct for registering callbacks.
Implementations§
source§impl PassBuilder
impl PassBuilder
sourcepub fn add_module_pipeline_parsing_callback<T>(&mut self, cb: T)where
T: Fn(&str, &mut ModulePassManager) -> PipelineParsing,
pub fn add_module_pipeline_parsing_callback<T>(&mut self, cb: T)where
T: Fn(&str, &mut ModulePassManager) -> PipelineParsing,
Register a new pipeline parsing callback.
These callbacks can be used to parse a single pass name, and populate the given ModulePassManager accordingly.
sourcepub fn add_function_pipeline_parsing_callback<T>(&mut self, cb: T)where
T: Fn(&str, &mut FunctionPassManager) -> PipelineParsing,
pub fn add_function_pipeline_parsing_callback<T>(&mut self, cb: T)where
T: Fn(&str, &mut FunctionPassManager) -> PipelineParsing,
Register a new pipeline parsing callback.
These callbacks can be used to parse a single pass name, and populate the given FunctionPassManager accordingly.
sourcepub fn add_module_analysis_registration_callback<T>(&mut self, cb: T)where
T: Fn(&mut ModuleAnalysisManager),
pub fn add_module_analysis_registration_callback<T>(&mut self, cb: T)where
T: Fn(&mut ModuleAnalysisManager),
Register a new callback for analysis registration.
These callbacks can be used to register custom analyses with the given ModuleAnalysisManager.
sourcepub fn add_function_analysis_registration_callback<T>(&mut self, cb: T)where
T: Fn(&mut FunctionAnalysisManager),
pub fn add_function_analysis_registration_callback<T>(&mut self, cb: T)where
T: Fn(&mut FunctionAnalysisManager),
Register a new callback for analysis registration.
These callbacks can be used to register custom analyses with the given FunctionAnalysisManager.
sourcepub fn add_peephole_ep_callback<T>(&mut self, cb: T)where
T: Fn(&mut FunctionPassManager, OptimizationLevel),
pub fn add_peephole_ep_callback<T>(&mut self, cb: T)where
T: Fn(&mut FunctionPassManager, OptimizationLevel),
Register a new callback to be triggered at the peephole extension point.
From the LLVM documentation
This extension point allows adding passes that perform peephole optimizations similar to the instruction combiner.
These passes will be inserted after each instance of the instruction combiner pass.
sourcepub fn add_scalar_optimizer_late_ep_callback<T>(&mut self, cb: T)where
T: Fn(&mut FunctionPassManager, OptimizationLevel),
pub fn add_scalar_optimizer_late_ep_callback<T>(&mut self, cb: T)where
T: Fn(&mut FunctionPassManager, OptimizationLevel),
Register a new callback to be triggered at the optimizer late extension point.
From the LLVM documentation
This extension point allows adding optimization passes after most of the main optimizations, but before the last cleanup-ish optimizations.
sourcepub fn add_vectorizer_start_ep_callback<T>(&mut self, cb: T)where
T: Fn(&mut FunctionPassManager, OptimizationLevel),
pub fn add_vectorizer_start_ep_callback<T>(&mut self, cb: T)where
T: Fn(&mut FunctionPassManager, OptimizationLevel),
Register a new callback to be triggered at the vectorizer start extension point.
From the LLVM documentation
This extension point allows adding optimization passes before the vectorizer and other highly target specific optimization passes are executed.
sourcepub fn add_pipeline_start_ep_callback<T>(&mut self, cb: T)where
T: Fn(&mut ModulePassManager, OptimizationLevel),
Available on crate features llvm12-0
or llvm13-0
or llvm14-0
or llvm15-0
only.
pub fn add_pipeline_start_ep_callback<T>(&mut self, cb: T)where
T: Fn(&mut ModulePassManager, OptimizationLevel),
llvm12-0
or llvm13-0
or llvm14-0
or llvm15-0
only.Register a new callback to be triggered at the pipeline start extension point.
From the LLVM documentation
This extension point allows adding optimization once at the start of the pipeline. This does not apply to ‘backend’ compiles (LTO and ThinLTO link-time pipelines).
sourcepub fn add_pipeline_early_simplification_ep_callback<T>(&mut self, cb: T)where
T: Fn(&mut ModulePassManager, OptimizationLevel),
Available on crate features llvm12-0
or llvm13-0
or llvm14-0
or llvm15-0
only.
pub fn add_pipeline_early_simplification_ep_callback<T>(&mut self, cb: T)where
T: Fn(&mut ModulePassManager, OptimizationLevel),
llvm12-0
or llvm13-0
or llvm14-0
or llvm15-0
only.Register a new callback to be triggered at the pipeline early simplification extension point.
From the LLVM documentation
This extension point allows adding optimization right after passes that do basic simplification of the input IR.
sourcepub fn add_optimizer_last_ep_callback<T>(&mut self, cb: T)where
T: Fn(&mut ModulePassManager, OptimizationLevel),
Available on crate features llvm11-0
or llvm12-0
or llvm13-0
or llvm14-0
or llvm15-0
only.
pub fn add_optimizer_last_ep_callback<T>(&mut self, cb: T)where
T: Fn(&mut ModulePassManager, OptimizationLevel),
llvm11-0
or llvm12-0
or llvm13-0
or llvm14-0
or llvm15-0
only.Register a new callback to be triggered at the optimizer last extension point.
From the LLVM documentation
This extension point allows adding passes that run after everything else.
sourcepub fn add_full_lto_early_ep_callback<T>(&mut self, cb: T)where
T: Fn(&mut ModulePassManager, OptimizationLevel),
Available on crate feature llvm15-0
only.
pub fn add_full_lto_early_ep_callback<T>(&mut self, cb: T)where
T: Fn(&mut ModulePassManager, OptimizationLevel),
llvm15-0
only.Register a new callback to be triggered at the full LTO early extension point.
From the LLVM documentation
This extension point allow adding passes that run at Link Time, before Full Link Time Optimization.
sourcepub fn add_full_lto_last_ep_callback<T>(&mut self, cb: T)where
T: Fn(&mut ModulePassManager, OptimizationLevel),
Available on crate feature llvm15-0
only.
pub fn add_full_lto_last_ep_callback<T>(&mut self, cb: T)where
T: Fn(&mut ModulePassManager, OptimizationLevel),
llvm15-0
only.Register a new callback to be triggered at the full LTO last extension point.
From the LLVM documentation
This extensions point allow adding passes that run at Link Time, after Full Link Time Optimization.
sourcepub fn add_optimizer_early_ep_callback<T>(&mut self, cb: T)where
T: Fn(&mut ModulePassManager, OptimizationLevel),
Available on crate feature llvm15-0
only.
pub fn add_optimizer_early_ep_callback<T>(&mut self, cb: T)where
T: Fn(&mut ModulePassManager, OptimizationLevel),
llvm15-0
only.Register a new callback to be triggered at the optimizer early extension point.
From the LLVM documentation
This extension point allows adding passes just before the main module-level optimization passes.