Skip to content

Commit 0ee9165

Browse files
kosarevgithub-actions[bot]
authored andcommitted
Automerge: [AMDGPU][NFC] Only include CodeGenPassBuilder.h where needed. (#154769)
Saves around 125-210 MB of compilation memory usage per source for roughly one third of our backend sources, ~60 MB on average.
2 parents c1f4a4a + faca8c9 commit 0ee9165

17 files changed

+75
-54
lines changed

llvm/lib/Target/AMDGPU/AMDGPUCodeGenPrepare.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#include "llvm/Analysis/AssumptionCache.h"
1919
#include "llvm/Analysis/ConstantFolding.h"
2020
#include "llvm/Analysis/TargetLibraryInfo.h"
21+
#include "llvm/Analysis/TargetTransformInfo.h"
2122
#include "llvm/Analysis/UniformityAnalysis.h"
2223
#include "llvm/Analysis/ValueTracking.h"
2324
#include "llvm/CodeGen/TargetPassConfig.h"
@@ -26,6 +27,7 @@
2627
#include "llvm/IR/InstVisitor.h"
2728
#include "llvm/IR/IntrinsicsAMDGPU.h"
2829
#include "llvm/IR/PatternMatch.h"
30+
#include "llvm/InitializePasses.h"
2931
#include "llvm/Pass.h"
3032
#include "llvm/Support/KnownBits.h"
3133
#include "llvm/Support/KnownFPClass.h"

llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
#include "llvm/CodeGen/SelectionDAGISel.h"
2828
#include "llvm/CodeGen/SelectionDAGNodes.h"
2929
#include "llvm/IR/IntrinsicsAMDGPU.h"
30+
#include "llvm/InitializePasses.h"
3031
#include "llvm/Support/ErrorHandling.h"
3132

3233
#ifdef EXPENSIVE_CHECKS

llvm/lib/Target/AMDGPU/AMDGPULateCodeGenPrepare.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
#include "llvm/IR/IRBuilder.h"
2222
#include "llvm/IR/InstVisitor.h"
2323
#include "llvm/IR/IntrinsicsAMDGPU.h"
24+
#include "llvm/InitializePasses.h"
2425
#include "llvm/Support/CommandLine.h"
2526
#include "llvm/Support/KnownBits.h"
2627
#include "llvm/Transforms/Utils/Local.h"

llvm/lib/Target/AMDGPU/AMDGPULowerBufferFatPointers.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,7 @@
225225
#include "llvm/ADT/SetOperations.h"
226226
#include "llvm/ADT/SmallVector.h"
227227
#include "llvm/Analysis/InstSimplifyFolder.h"
228+
#include "llvm/Analysis/TargetTransformInfo.h"
228229
#include "llvm/Analysis/Utils/Local.h"
229230
#include "llvm/CodeGen/TargetPassConfig.h"
230231
#include "llvm/IR/AttributeMask.h"
@@ -243,6 +244,7 @@
243244
#include "llvm/IR/PatternMatch.h"
244245
#include "llvm/IR/ReplaceConstant.h"
245246
#include "llvm/IR/ValueHandle.h"
247+
#include "llvm/InitializePasses.h"
246248
#include "llvm/Pass.h"
247249
#include "llvm/Support/AMDGPUAddrSpace.h"
248250
#include "llvm/Support/Alignment.h"

llvm/lib/Target/AMDGPU/AMDGPULowerModuleLDSPass.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,12 +190,14 @@
190190
#include "llvm/CodeGen/TargetPassConfig.h"
191191
#include "llvm/IR/Constants.h"
192192
#include "llvm/IR/DerivedTypes.h"
193+
#include "llvm/IR/Dominators.h"
193194
#include "llvm/IR/IRBuilder.h"
194195
#include "llvm/IR/InlineAsm.h"
195196
#include "llvm/IR/Instructions.h"
196197
#include "llvm/IR/IntrinsicsAMDGPU.h"
197198
#include "llvm/IR/MDBuilder.h"
198199
#include "llvm/IR/ReplaceConstant.h"
200+
#include "llvm/InitializePasses.h"
199201
#include "llvm/Pass.h"
200202
#include "llvm/Support/CommandLine.h"
201203
#include "llvm/Support/Debug.h"

llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@
9090
#include "llvm/IR/PatternMatch.h"
9191
#include "llvm/InitializePasses.h"
9292
#include "llvm/MC/TargetRegistry.h"
93+
#include "llvm/Passes/CodeGenPassBuilder.h"
9394
#include "llvm/Passes/PassBuilder.h"
9495
#include "llvm/Support/Compiler.h"
9596
#include "llvm/Support/FormatVariadic.h"
@@ -125,6 +126,44 @@ using namespace llvm;
125126
using namespace llvm::PatternMatch;
126127

127128
namespace {
129+
//===----------------------------------------------------------------------===//
130+
// AMDGPU CodeGen Pass Builder interface.
131+
//===----------------------------------------------------------------------===//
132+
133+
class AMDGPUCodeGenPassBuilder
134+
: public CodeGenPassBuilder<AMDGPUCodeGenPassBuilder, GCNTargetMachine> {
135+
using Base = CodeGenPassBuilder<AMDGPUCodeGenPassBuilder, GCNTargetMachine>;
136+
137+
public:
138+
AMDGPUCodeGenPassBuilder(GCNTargetMachine &TM,
139+
const CGPassBuilderOption &Opts,
140+
PassInstrumentationCallbacks *PIC);
141+
142+
void addIRPasses(AddIRPass &) const;
143+
void addCodeGenPrepare(AddIRPass &) const;
144+
void addPreISel(AddIRPass &addPass) const;
145+
void addILPOpts(AddMachinePass &) const;
146+
void addAsmPrinter(AddMachinePass &, CreateMCStreamer) const;
147+
Error addInstSelector(AddMachinePass &) const;
148+
void addPreRewrite(AddMachinePass &) const;
149+
void addMachineSSAOptimization(AddMachinePass &) const;
150+
void addPostRegAlloc(AddMachinePass &) const;
151+
void addPreEmitPass(AddMachinePass &) const;
152+
void addPreEmitRegAlloc(AddMachinePass &) const;
153+
Error addRegAssignmentOptimized(AddMachinePass &) const;
154+
void addPreRegAlloc(AddMachinePass &) const;
155+
void addOptimizedRegAlloc(AddMachinePass &) const;
156+
void addPreSched2(AddMachinePass &) const;
157+
158+
/// Check if a pass is enabled given \p Opt option. The option always
159+
/// overrides defaults if explicitly used. Otherwise its default will be used
160+
/// given that a pass shall work at an optimization \p Level minimum.
161+
bool isPassEnabled(const cl::opt<bool> &Opt,
162+
CodeGenOptLevel Level = CodeGenOptLevel::Default) const;
163+
void addEarlyCSEOrGVNPass(AddIRPass &) const;
164+
void addStraightLineScalarOptimizationPasses(AddIRPass &) const;
165+
};
166+
128167
class SGPRRegisterRegAlloc : public RegisterRegAllocBase<SGPRRegisterRegAlloc> {
129168
public:
130169
SGPRRegisterRegAlloc(const char *N, const char *D, FunctionPassCtor C)

llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.h

Lines changed: 0 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
#include "llvm/CodeGen/CodeGenTargetMachineImpl.h"
1919
#include "llvm/CodeGen/TargetPassConfig.h"
2020
#include "llvm/MC/MCStreamer.h"
21-
#include "llvm/Passes/CodeGenPassBuilder.h"
2221
#include <optional>
2322
#include <utility>
2423

@@ -158,44 +157,6 @@ class AMDGPUPassConfig : public TargetPassConfig {
158157
}
159158
};
160159

161-
//===----------------------------------------------------------------------===//
162-
// AMDGPU CodeGen Pass Builder interface.
163-
//===----------------------------------------------------------------------===//
164-
165-
class AMDGPUCodeGenPassBuilder
166-
: public CodeGenPassBuilder<AMDGPUCodeGenPassBuilder, GCNTargetMachine> {
167-
using Base = CodeGenPassBuilder<AMDGPUCodeGenPassBuilder, GCNTargetMachine>;
168-
169-
public:
170-
AMDGPUCodeGenPassBuilder(GCNTargetMachine &TM,
171-
const CGPassBuilderOption &Opts,
172-
PassInstrumentationCallbacks *PIC);
173-
174-
void addIRPasses(AddIRPass &) const;
175-
void addCodeGenPrepare(AddIRPass &) const;
176-
void addPreISel(AddIRPass &addPass) const;
177-
void addILPOpts(AddMachinePass &) const;
178-
void addAsmPrinter(AddMachinePass &, CreateMCStreamer) const;
179-
Error addInstSelector(AddMachinePass &) const;
180-
void addPreRewrite(AddMachinePass &) const;
181-
void addMachineSSAOptimization(AddMachinePass &) const;
182-
void addPostRegAlloc(AddMachinePass &) const;
183-
void addPreEmitPass(AddMachinePass &) const;
184-
void addPreEmitRegAlloc(AddMachinePass &) const;
185-
Error addRegAssignmentOptimized(AddMachinePass &) const;
186-
void addPreRegAlloc(AddMachinePass &) const;
187-
void addOptimizedRegAlloc(AddMachinePass &) const;
188-
void addPreSched2(AddMachinePass &) const;
189-
190-
/// Check if a pass is enabled given \p Opt option. The option always
191-
/// overrides defaults if explicitly used. Otherwise its default will be used
192-
/// given that a pass shall work at an optimization \p Level minimum.
193-
bool isPassEnabled(const cl::opt<bool> &Opt,
194-
CodeGenOptLevel Level = CodeGenOptLevel::Default) const;
195-
void addEarlyCSEOrGVNPass(AddIRPass &) const;
196-
void addStraightLineScalarOptimizationPasses(AddIRPass &) const;
197-
};
198-
199160
} // end namespace llvm
200161

201162
#endif // LLVM_LIB_TARGET_AMDGPU_AMDGPUTARGETMACHINE_H

llvm/lib/Target/AMDGPU/R600ISelLowering.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
#include "llvm/CodeGen/MachineFunction.h"
2222
#include "llvm/IR/IntrinsicsAMDGPU.h"
2323
#include "llvm/IR/IntrinsicsR600.h"
24+
#include "llvm/Passes/CodeGenPassBuilder.h"
2425

2526
using namespace llvm;
2627

llvm/lib/Target/AMDGPU/R600TargetMachine.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include "R600MachineFunctionInfo.h"
2020
#include "R600MachineScheduler.h"
2121
#include "R600TargetTransformInfo.h"
22+
#include "llvm/Passes/CodeGenPassBuilder.h"
2223
#include "llvm/Transforms/Scalar.h"
2324
#include <optional>
2425

@@ -46,6 +47,21 @@ static MachineSchedRegistry R600SchedRegistry("r600",
4647
"Run R600's custom scheduler",
4748
createR600MachineScheduler);
4849

50+
//===----------------------------------------------------------------------===//
51+
// R600 CodeGen Pass Builder interface.
52+
//===----------------------------------------------------------------------===//
53+
54+
class R600CodeGenPassBuilder
55+
: public CodeGenPassBuilder<R600CodeGenPassBuilder, R600TargetMachine> {
56+
public:
57+
R600CodeGenPassBuilder(R600TargetMachine &TM, const CGPassBuilderOption &Opts,
58+
PassInstrumentationCallbacks *PIC);
59+
60+
void addPreISel(AddIRPass &addPass) const;
61+
void addAsmPrinter(AddMachinePass &, CreateMCStreamer) const;
62+
Error addInstSelector(AddMachinePass &) const;
63+
};
64+
4965
//===----------------------------------------------------------------------===//
5066
// R600 Target Machine (R600 -> Cayman)
5167
//===----------------------------------------------------------------------===//

llvm/lib/Target/AMDGPU/R600TargetMachine.h

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -57,21 +57,6 @@ class R600TargetMachine final : public AMDGPUTargetMachine {
5757
createMachineScheduler(MachineSchedContext *C) const override;
5858
};
5959

60-
//===----------------------------------------------------------------------===//
61-
// R600 CodeGen Pass Builder interface.
62-
//===----------------------------------------------------------------------===//
63-
64-
class R600CodeGenPassBuilder
65-
: public CodeGenPassBuilder<R600CodeGenPassBuilder, R600TargetMachine> {
66-
public:
67-
R600CodeGenPassBuilder(R600TargetMachine &TM, const CGPassBuilderOption &Opts,
68-
PassInstrumentationCallbacks *PIC);
69-
70-
void addPreISel(AddIRPass &addPass) const;
71-
void addAsmPrinter(AddMachinePass &, CreateMCStreamer) const;
72-
Error addInstSelector(AddMachinePass &) const;
73-
};
74-
7560
} // end namespace llvm
7661

7762
#endif // LLVM_LIB_TARGET_AMDGPU_R600TARGETMACHINE_H

0 commit comments

Comments
 (0)