@@ -209,11 +209,12 @@ template <typename DerivedT, typename TargetMachineT> class CodeGenPassBuilder {
209
209
}
210
210
211
211
template <typename PassT>
212
- void operator ()(PassT &&Pass, StringRef Name = PassT::name()) {
212
+ void operator ()(PassT &&Pass, bool Force = false ,
213
+ StringRef Name = PassT::name()) {
213
214
static_assert ((is_detected<is_function_pass_t , PassT>::value ||
214
215
is_detected<is_module_pass_t , PassT>::value) &&
215
216
" Only module pass and function pass are supported." );
216
- if (!PB.runBeforeAdding (Name))
217
+ if (!Force && ! PB.runBeforeAdding (Name))
217
218
return ;
218
219
219
220
// Add Function Pass
@@ -561,9 +562,12 @@ Error CodeGenPassBuilder<Derived, TargetMachineT>::buildPipeline(
561
562
562
563
{
563
564
AddIRPass addIRPass (MPM, derived ());
564
- addIRPass (RequireAnalysisPass<MachineModuleAnalysis, Module>());
565
- addIRPass (RequireAnalysisPass<ProfileSummaryAnalysis, Module>());
566
- addIRPass (RequireAnalysisPass<CollectorMetadataAnalysis, Module>());
565
+ addIRPass (RequireAnalysisPass<MachineModuleAnalysis, Module>(),
566
+ /* Force=*/ true );
567
+ addIRPass (RequireAnalysisPass<ProfileSummaryAnalysis, Module>(),
568
+ /* Force=*/ true );
569
+ addIRPass (RequireAnalysisPass<CollectorMetadataAnalysis, Module>(),
570
+ /* Force=*/ true );
567
571
addISelPasses (addIRPass);
568
572
}
569
573
0 commit comments