@@ -934,25 +934,16 @@ LLVMRustOptimize(
934934 } else {
935935 for (const auto &C : PipelineStartEPCallbacks)
936936 PB .registerPipelineStartEPCallback (C);
937- if (OptStage != LLVMRustOptStage::PreLinkThinLTO) {
938- for (const auto &C : OptimizerLastEPCallbacks)
939- PB .registerOptimizerLastEPCallback (C);
940- }
937+ for (const auto &C : OptimizerLastEPCallbacks)
938+ PB .registerOptimizerLastEPCallback (C);
941939
942940 switch (OptStage) {
943941 case LLVMRustOptStage::PreLinkNoLTO:
944942 MPM = PB .buildPerModuleDefaultPipeline (OptLevel, DebugPassManager);
945943 break ;
946944 case LLVMRustOptStage::PreLinkThinLTO:
947945 MPM = PB .buildThinLTOPreLinkDefaultPipeline (OptLevel);
948- // The ThinLTOPreLink pipeline already includes ThinLTOBuffer passes. However, callback
949- // passes may still run afterwards. This means we need to run the buffer passes again.
950- // FIXME: In LLVM 13, the ThinLTOPreLink pipeline also runs OptimizerLastEPCallbacks
951- // before the RequiredLTOPreLinkPasses, in which case we can remove these hacks.
952- if (OptimizerLastEPCallbacks.empty ())
953- NeedThinLTOBufferPasses = false ;
954- for (const auto &C : OptimizerLastEPCallbacks)
955- C (MPM , OptLevel);
946+ NeedThinLTOBufferPasses = false ;
956947 break ;
957948 case LLVMRustOptStage::PreLinkFatLTO:
958949 MPM = PB .buildLTOPreLinkDefaultPipeline (OptLevel);
0 commit comments