@@ -209,11 +209,12 @@ template <typename DerivedT, typename TargetMachineT> class CodeGenPassBuilder {
209209 }
210210
211211 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()) {
213214 static_assert ((is_detected<is_function_pass_t , PassT>::value ||
214215 is_detected<is_module_pass_t , PassT>::value) &&
215216 " Only module pass and function pass are supported." );
216- if (!PB.runBeforeAdding (Name))
217+ if (!Force && ! PB.runBeforeAdding (Name))
217218 return ;
218219
219220 // Add Function Pass
@@ -561,9 +562,12 @@ Error CodeGenPassBuilder<Derived, TargetMachineT>::buildPipeline(
561562
562563 {
563564 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 );
567571 addISelPasses (addIRPass);
568572 }
569573
@@ -679,7 +683,7 @@ void CodeGenPassBuilder<Derived, TargetMachineT>::addIRPasses(
679683 // Before running any passes, run the verifier to determine if the input
680684 // coming from the front-end and/or optimizer is valid.
681685 if (!Opt.DisableVerify )
682- addPass (VerifierPass ());
686+ addPass (VerifierPass (), /* Force= */ true );
683687
684688 // Run loop strength reduction before anything else.
685689 if (getOptLevel () != CodeGenOptLevel::None && !Opt.DisableLSR ) {
@@ -816,7 +820,7 @@ void CodeGenPassBuilder<Derived, TargetMachineT>::addISelPrepare(
816820 // All passes which modify the LLVM IR are now complete; run the verifier
817821 // to ensure that the IR is valid.
818822 if (!Opt.DisableVerify )
819- addPass (VerifierPass ());
823+ addPass (VerifierPass (), /* Force= */ true );
820824}
821825
822826template <typename Derived, typename TargetMachineT>
0 commit comments