[llvm] bf0ccb4 - [Passes] Invoke CGSCCOptimizerLateEP callbacks in LTO pipeline (#203262)

via llvm-commits llvm-commits at lists.llvm.org
Sun Jun 14 18:32:16 PDT 2026


Author: Joseph Huber
Date: 2026-06-14T20:32:12-05:00
New Revision: bf0ccb40170c8cbf0e0510ca344b79ddc338b64b

URL: https://github.com/llvm/llvm-project/commit/bf0ccb40170c8cbf0e0510ca344b79ddc338b64b
DIFF: https://github.com/llvm/llvm-project/commit/bf0ccb40170c8cbf0e0510ca344b79ddc338b64b.diff

LOG: [Passes] Invoke CGSCCOptimizerLateEP callbacks in LTO pipeline (#203262)

The CGSCCOptimizerLateEP extension point was not being invoked in the
LTO pipeline. Right now only AMDGPU registers any passes during this
callback, but it was a real source of delta between the LTO and default
pipelines when targeting AMDGPU. This doesn't seem to be an intentional
omission given that it is instantiated in thinLTO as well. Just add it.

Added: 
    

Modified: 
    llvm/lib/Passes/PassBuilderPipelines.cpp
    llvm/test/Other/new-pm-lto-defaults.ll

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Passes/PassBuilderPipelines.cpp b/llvm/lib/Passes/PassBuilderPipelines.cpp
index 9eea552fd263e..1551ae2c682fc 100644
--- a/llvm/lib/Passes/PassBuilderPipelines.cpp
+++ b/llvm/lib/Passes/PassBuilderPipelines.cpp
@@ -2212,6 +2212,7 @@ PassBuilder::buildLTODefaultPipeline(OptimizationLevel Level,
   CGPM.addPass(ArgumentPromotionPass());
   CGPM.addPass(CoroSplitPass(Level != OptimizationLevel::O0));
   CGPM.addPass(CoroAnnotationElidePass());
+  invokeCGSCCOptimizerLateEPCallbacks(CGPM, Level);
   MPM.addPass(createModuleToPostOrderCGSCCPassAdaptor(std::move(CGPM)));
 
   FunctionPassManager FPM;

diff  --git a/llvm/test/Other/new-pm-lto-defaults.ll b/llvm/test/Other/new-pm-lto-defaults.ll
index 6d6d30298f7be..14f189194d0e3 100644
--- a/llvm/test/Other/new-pm-lto-defaults.ll
+++ b/llvm/test/Other/new-pm-lto-defaults.ll
@@ -26,6 +26,9 @@
 ; RUN: opt -disable-verify -verify-analysis-invalidation=0 -eagerly-invalidate-analyses=0 -debug-pass-manager \
 ; RUN:     -passes='lto<O3>' -S  %s -passes-ep-peephole='no-op-function' 2>&1 \
 ; RUN:     | FileCheck %s --check-prefixes=CHECK-O,CHECK-O23,CHECK-EP-PEEPHOLE
+; RUN: opt -disable-verify -verify-analysis-invalidation=0 -eagerly-invalidate-analyses=0 -debug-pass-manager \
+; RUN:     -passes='lto<O3>' -S  %s -passes-ep-cgscc-optimizer-late='no-op-cgscc' 2>&1 \
+; RUN:     | FileCheck %s --check-prefixes=CHECK-O,CHECK-O23,CHECK-EP-CGSCC-LATE
 
 ; CHECK-EP: Running pass: NoOpModulePass
 ; CHECK-O: Running pass: CrossDSOCFIPass
@@ -84,6 +87,7 @@
 ; CHECK-O23-NEXT: Running pass: ArgumentPromotionPass on (foo)
 ; CHECK-O23-NEXT: CoroSplitPass on (foo)
 ; CHECK-O23-NEXT: CoroAnnotationElidePass on (foo)
+; CHECK-EP-CGSCC-LATE-NEXT: Running pass: NoOpCGSCCPass on (foo)
 ; CHECK-O23-NEXT: Running pass: InstCombinePass
 ; CHECK-EP-PEEPHOLE-NEXT: Running pass: NoOpFunctionPass
 ; CHECK-O23-NEXT: Running pass: ConstraintEliminationPass


        


More information about the llvm-commits mailing list