[llvm] [AMDGPU][Passes] Invoke CGSCCOptimizerLateEP callbacks in LTO pipeline (PR #203262)
Joseph Huber via llvm-commits
llvm-commits at lists.llvm.org
Thu Jun 11 06:24:18 PDT 2026
https://github.com/jhuber6 created https://github.com/llvm/llvm-project/pull/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.
>From 448361707c76b65173ee4c0ac08b98c922fb3d6c Mon Sep 17 00:00:00 2001
From: Joseph Huber <huberjn at outlook.com>
Date: Thu, 11 Jun 2026 07:59:56 -0500
Subject: [PATCH] [AMDGPU][Passes] Invoke CGSCCOptimizerLateEP callbacks in LTO
pipeline
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.
---
llvm/lib/Passes/PassBuilderPipelines.cpp | 1 +
llvm/test/Other/new-pm-lto-defaults.ll | 4 ++++
2 files changed, 5 insertions(+)
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