[llvm] [CodeGen] Add code new pm code stubs for all backends (PR #78552)
via llvm-commits
llvm-commits at lists.llvm.org
Thu Jan 18 00:57:53 PST 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-directx
@llvm/pr-subscribers-backend-m68k
@llvm/pr-subscribers-backend-spir-v
@llvm/pr-subscribers-backend-risc-v
@llvm/pr-subscribers-backend-loongarch
Author: None (paperchalice)
<details>
<summary>Changes</summary>
Just add dummy methods here, so `llc` will not throw error when building codegen pipeline.
---
Patch is 96.06 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/78552.diff
76 Files Affected:
- (modified) llvm/include/llvm/Target/TargetMachine.h (+1-4)
- (added) llvm/lib/Target/AArch64/AArch64CodeGenPassBuilder.cpp (+57)
- (modified) llvm/lib/Target/AArch64/AArch64TargetMachine.h (+6)
- (modified) llvm/lib/Target/AArch64/CMakeLists.txt (+2)
- (added) llvm/lib/Target/AMDGPU/AMDGPUCodeGenPassBuilder.cpp (+56)
- (modified) llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.h (+6)
- (modified) llvm/lib/Target/AMDGPU/CMakeLists.txt (+2)
- (added) llvm/lib/Target/ARC/ARCCodeGenPassBuilder.cpp (+56)
- (modified) llvm/lib/Target/ARC/ARCTargetMachine.h (+6)
- (modified) llvm/lib/Target/ARC/CMakeLists.txt (+3)
- (added) llvm/lib/Target/ARM/ARMCodeGenPassBuilder.cpp (+56)
- (modified) llvm/lib/Target/ARM/ARMTargetMachine.h (+6)
- (modified) llvm/lib/Target/ARM/CMakeLists.txt (+2)
- (added) llvm/lib/Target/AVR/AVRCodeGenPassBuilder.cpp (+56)
- (modified) llvm/lib/Target/AVR/AVRTargetMachine.h (+6)
- (modified) llvm/lib/Target/AVR/CMakeLists.txt (+5)
- (added) llvm/lib/Target/BPF/BPFCodeGenPassBuilder.cpp (+56)
- (modified) llvm/lib/Target/BPF/BPFTargetMachine.h (+6)
- (modified) llvm/lib/Target/BPF/CMakeLists.txt (+2)
- (modified) llvm/lib/Target/CSKY/CMakeLists.txt (+4)
- (added) llvm/lib/Target/CSKY/CSKYCodeGenPassBuilder.cpp (+57)
- (modified) llvm/lib/Target/CSKY/CSKYTargetMachine.h (+6)
- (modified) llvm/lib/Target/DirectX/CMakeLists.txt (+3)
- (added) llvm/lib/Target/DirectX/DirectXCodeGenPassBuilder.cpp (+57)
- (modified) llvm/lib/Target/DirectX/DirectXTargetMachine.h (+6)
- (modified) llvm/lib/Target/Hexagon/CMakeLists.txt (+2)
- (added) llvm/lib/Target/Hexagon/HexagonCodeGenPassBuilder.cpp (+57)
- (modified) llvm/lib/Target/Hexagon/HexagonTargetMachine.h (+6)
- (modified) llvm/lib/Target/Lanai/CMakeLists.txt (+3)
- (added) llvm/lib/Target/Lanai/LanaiCodeGenPassBuilder.cpp (+57)
- (modified) llvm/lib/Target/Lanai/LanaiTargetMachine.h (+6)
- (modified) llvm/lib/Target/LoongArch/CMakeLists.txt (+3)
- (added) llvm/lib/Target/LoongArch/LoongArchCodeGenPassBuilder.cpp (+57)
- (modified) llvm/lib/Target/LoongArch/LoongArchTargetMachine.h (+6)
- (modified) llvm/lib/Target/M68k/CMakeLists.txt (+4)
- (added) llvm/lib/Target/M68k/M68kCodeGenPassBuilder.cpp (+57)
- (modified) llvm/lib/Target/M68k/M68kTargetMachine.h (+6)
- (modified) llvm/lib/Target/MSP430/CMakeLists.txt (+5)
- (added) llvm/lib/Target/MSP430/MSP430CodeGenPassBuilder.cpp (+57)
- (modified) llvm/lib/Target/MSP430/MSP430TargetMachine.h (+6)
- (modified) llvm/lib/Target/Mips/CMakeLists.txt (+4)
- (added) llvm/lib/Target/Mips/MipsCodeGenPassBuilder.cpp (+57)
- (modified) llvm/lib/Target/Mips/MipsTargetMachine.h (+6)
- (modified) llvm/lib/Target/NVPTX/CMakeLists.txt (+2)
- (added) llvm/lib/Target/NVPTX/NVPTXCodeGenPassBuilder.cpp (+57)
- (modified) llvm/lib/Target/NVPTX/NVPTXTargetMachine.h (+6)
- (modified) llvm/lib/Target/PowerPC/CMakeLists.txt (+2)
- (added) llvm/lib/Target/PowerPC/PPCCodeGenPassBuilder.cpp (+56)
- (modified) llvm/lib/Target/PowerPC/PPCTargetMachine.h (+6)
- (modified) llvm/lib/Target/RISCV/CMakeLists.txt (+2)
- (added) llvm/lib/Target/RISCV/RISCVCodeGenPassBuilder.cpp (+57)
- (modified) llvm/lib/Target/RISCV/RISCVTargetMachine.h (+6)
- (modified) llvm/lib/Target/SPIRV/CMakeLists.txt (+3)
- (added) llvm/lib/Target/SPIRV/SPIRVCodeGenPassBuilder.cpp (+57)
- (modified) llvm/lib/Target/SPIRV/SPIRVTargetMachine.h (+6)
- (modified) llvm/lib/Target/Sparc/CMakeLists.txt (+5)
- (added) llvm/lib/Target/Sparc/SparcCodeGenPassBuilder.cpp (+57)
- (modified) llvm/lib/Target/Sparc/SparcTargetMachine.h (+6)
- (modified) llvm/lib/Target/SystemZ/CMakeLists.txt (+3)
- (added) llvm/lib/Target/SystemZ/SystemZCodeGenPassBuilder.cpp (+57)
- (modified) llvm/lib/Target/SystemZ/SystemZTargetMachine.h (+6)
- (modified) llvm/lib/Target/VE/CMakeLists.txt (+4)
- (added) llvm/lib/Target/VE/VECodeGenPassBuilder.cpp (+55)
- (modified) llvm/lib/Target/VE/VETargetMachine.h (+6)
- (modified) llvm/lib/Target/WebAssembly/CMakeLists.txt (+2)
- (added) llvm/lib/Target/WebAssembly/WebAssemblyCodeGenPassBuilder.cpp (+57)
- (modified) llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.h (+6)
- (modified) llvm/lib/Target/X86/CMakeLists.txt (+3)
- (added) llvm/lib/Target/X86/X86CodeGenPassBuilder.cpp (+56)
- (modified) llvm/lib/Target/X86/X86TargetMachine.h (+6)
- (modified) llvm/lib/Target/XCore/CMakeLists.txt (+3)
- (added) llvm/lib/Target/XCore/XCoreCodeGenPassBuilder.cpp (+57)
- (modified) llvm/lib/Target/XCore/XCoreTargetMachine.h (+6)
- (modified) llvm/lib/Target/Xtensa/CMakeLists.txt (+5)
- (added) llvm/lib/Target/Xtensa/XtensaCodeGenPassBuilder.cpp (+57)
- (modified) llvm/lib/Target/Xtensa/XtensaTargetMachine.h (+6)
``````````diff
diff --git a/llvm/include/llvm/Target/TargetMachine.h b/llvm/include/llvm/Target/TargetMachine.h
index 1fe47dec70b1630..0d4444b484d690b 100644
--- a/llvm/include/llvm/Target/TargetMachine.h
+++ b/llvm/include/llvm/Target/TargetMachine.h
@@ -457,10 +457,7 @@ class LLVMTargetMachine : public TargetMachine {
MachineFunctionAnalysisManager &,
raw_pwrite_stream &, raw_pwrite_stream *,
CodeGenFileType, CGPassBuilderOption,
- PassInstrumentationCallbacks *) {
- return make_error<StringError>("buildCodeGenPipeline is not overridden",
- inconvertibleErrorCode());
- }
+ PassInstrumentationCallbacks *) = 0;
virtual std::pair<StringRef, bool> getPassNameFromLegacyName(StringRef) {
llvm_unreachable(
diff --git a/llvm/lib/Target/AArch64/AArch64CodeGenPassBuilder.cpp b/llvm/lib/Target/AArch64/AArch64CodeGenPassBuilder.cpp
new file mode 100644
index 000000000000000..ca916d43b8291f8
--- /dev/null
+++ b/llvm/lib/Target/AArch64/AArch64CodeGenPassBuilder.cpp
@@ -0,0 +1,57 @@
+//===-- AArch64CodeGenPassBuilder.cpp -----------------------------*- C++ -*-=//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+/// \file
+/// This file contains AArch64 CodeGen pipeline builder.
+/// TODO: Port CodeGen passes to new pass manager.
+//===----------------------------------------------------------------------===//
+
+#include "AArch64TargetMachine.h"
+
+#include "llvm/CodeGen/CodeGenPassBuilder.h"
+#include "llvm/MC/MCStreamer.h"
+
+using namespace llvm;
+
+namespace {
+
+class AArch64CodeGenPassBuilder
+ : public CodeGenPassBuilder<AArch64CodeGenPassBuilder> {
+public:
+ explicit AArch64CodeGenPassBuilder(LLVMTargetMachine &TM,
+ CGPassBuilderOption Opts,
+ PassInstrumentationCallbacks *PIC)
+ : CodeGenPassBuilder(TM, Opts, PIC) {}
+ void addPreISel(AddIRPass &addPass) const;
+ void addAsmPrinter(AddMachinePass &, CreateMCStreamer) const;
+ Error addInstSelector(AddMachinePass &) const;
+};
+
+void AArch64CodeGenPassBuilder::addPreISel(AddIRPass &addPass) const {
+ // TODO: Add passes pre instruction selection.
+}
+
+void AArch64CodeGenPassBuilder::addAsmPrinter(AddMachinePass &addPass,
+ CreateMCStreamer) const {
+ // TODO: Add AsmPrinter.
+}
+
+Error AArch64CodeGenPassBuilder::addInstSelector(AddMachinePass &) const {
+ // TODO: Add instruction selector.
+ return Error::success();
+}
+
+} // namespace
+
+Error AArch64TargetMachine::buildCodeGenPipeline(
+ ModulePassManager &MPM, MachineFunctionPassManager &MFPM,
+ MachineFunctionAnalysisManager &, raw_pwrite_stream &Out,
+ raw_pwrite_stream *DwoOut, CodeGenFileType FileType,
+ CGPassBuilderOption Opt, PassInstrumentationCallbacks *PIC) {
+ auto CGPB = AArch64CodeGenPassBuilder(*this, Opt, PIC);
+ return CGPB.buildPipeline(MPM, MFPM, Out, DwoOut, FileType);
+}
diff --git a/llvm/lib/Target/AArch64/AArch64TargetMachine.h b/llvm/lib/Target/AArch64/AArch64TargetMachine.h
index 8fb68b06f137803..55dc92f07f2d9dc 100644
--- a/llvm/lib/Target/AArch64/AArch64TargetMachine.h
+++ b/llvm/lib/Target/AArch64/AArch64TargetMachine.h
@@ -71,6 +71,12 @@ class AArch64TargetMachine : public LLVMTargetMachine {
return true;
}
+ Error buildCodeGenPipeline(ModulePassManager &, MachineFunctionPassManager &,
+ MachineFunctionAnalysisManager &,
+ raw_pwrite_stream &, raw_pwrite_stream *,
+ CodeGenFileType, CGPassBuilderOption,
+ PassInstrumentationCallbacks *) override;
+
private:
bool isLittle;
};
diff --git a/llvm/lib/Target/AArch64/CMakeLists.txt b/llvm/lib/Target/AArch64/CMakeLists.txt
index cb5f85801c65b7f..ab553454f1d4f8a 100644
--- a/llvm/lib/Target/AArch64/CMakeLists.txt
+++ b/llvm/lib/Target/AArch64/CMakeLists.txt
@@ -46,6 +46,7 @@ add_llvm_target(AArch64CodeGen
AArch64BranchTargets.cpp
AArch64CallingConvention.cpp
AArch64CleanupLocalDynamicTLSPass.cpp
+ AArch64CodeGenPassBuilder.cpp
AArch64CollectLOH.cpp
AArch64CondBrTuning.cpp
AArch64ConditionalCompares.cpp
@@ -103,6 +104,7 @@ add_llvm_target(AArch64CodeGen
CodeGenTypes
Core
GlobalISel
+ IRPrinter
MC
Scalar
SelectionDAG
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUCodeGenPassBuilder.cpp b/llvm/lib/Target/AMDGPU/AMDGPUCodeGenPassBuilder.cpp
new file mode 100644
index 000000000000000..1f7155c44c8c6a8
--- /dev/null
+++ b/llvm/lib/Target/AMDGPU/AMDGPUCodeGenPassBuilder.cpp
@@ -0,0 +1,56 @@
+//===-- AMDGPUCodeGenPassBuilder.cpp ------------------------------*- C++ -*-=//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+/// \file
+/// This file contains AMDGPU CodeGen pipeline builder.
+/// TODO: Port CodeGen passes to new pass manager.
+//===----------------------------------------------------------------------===//
+#include "AMDGPUTargetMachine.h"
+
+#include "llvm/CodeGen/CodeGenPassBuilder.h"
+#include "llvm/MC/MCStreamer.h"
+
+using namespace llvm;
+
+namespace {
+
+class AMDGPUCodeGenPassBuilder
+ : public CodeGenPassBuilder<AMDGPUCodeGenPassBuilder> {
+public:
+ explicit AMDGPUCodeGenPassBuilder(LLVMTargetMachine &TM,
+ CGPassBuilderOption Opts,
+ PassInstrumentationCallbacks *PIC)
+ : CodeGenPassBuilder(TM, Opts, PIC) {}
+ void addPreISel(AddIRPass &addPass) const;
+ void addAsmPrinter(AddMachinePass &, CreateMCStreamer) const;
+ Error addInstSelector(AddMachinePass &) const;
+};
+
+void AMDGPUCodeGenPassBuilder::addPreISel(AddIRPass &addPass) const {
+ // TODO: Add passes pre instruction selection.
+}
+
+void AMDGPUCodeGenPassBuilder::addAsmPrinter(AddMachinePass &addPass,
+ CreateMCStreamer) const {
+ // TODO: Add AsmPrinter.
+}
+
+Error AMDGPUCodeGenPassBuilder::addInstSelector(AddMachinePass &) const {
+ // TODO: Add instruction selector.
+ return Error::success();
+}
+
+} // namespace
+
+Error AMDGPUTargetMachine::buildCodeGenPipeline(
+ ModulePassManager &MPM, MachineFunctionPassManager &MFPM,
+ MachineFunctionAnalysisManager &, raw_pwrite_stream &Out,
+ raw_pwrite_stream *DwoOut, CodeGenFileType FileType,
+ CGPassBuilderOption Opt, PassInstrumentationCallbacks *PIC) {
+ auto CGPB = AMDGPUCodeGenPassBuilder(*this, Opt, PIC);
+ return CGPB.buildPipeline(MPM, MFPM, Out, DwoOut, FileType);
+}
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.h b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.h
index 99c9db3e654a64c..ae8576d7df998b9 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.h
+++ b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.h
@@ -66,6 +66,12 @@ class AMDGPUTargetMachine : public LLVMTargetMachine {
getPredicatedAddrSpace(const Value *V) const override;
unsigned getAddressSpaceForPseudoSourceKind(unsigned Kind) const override;
+
+ Error buildCodeGenPipeline(ModulePassManager &, MachineFunctionPassManager &,
+ MachineFunctionAnalysisManager &,
+ raw_pwrite_stream &, raw_pwrite_stream *,
+ CodeGenFileType, CGPassBuilderOption,
+ PassInstrumentationCallbacks *) override;
};
//===----------------------------------------------------------------------===//
diff --git a/llvm/lib/Target/AMDGPU/CMakeLists.txt b/llvm/lib/Target/AMDGPU/CMakeLists.txt
index 2c92e7a07388553..3bc67d31af474bc 100644
--- a/llvm/lib/Target/AMDGPU/CMakeLists.txt
+++ b/llvm/lib/Target/AMDGPU/CMakeLists.txt
@@ -50,6 +50,7 @@ add_llvm_target(AMDGPUCodeGen
AMDGPUAtomicOptimizer.cpp
AMDGPUAttributor.cpp
AMDGPUCallLowering.cpp
+ AMDGPUCodeGenPassBuilder.cpp
AMDGPUCodeGenPrepare.cpp
AMDGPUCombinerHelper.cpp
AMDGPUCtorDtorLowering.cpp
@@ -180,6 +181,7 @@ add_llvm_target(AMDGPUCodeGen
GlobalISel
HipStdPar
IPO
+ IRPrinter
MC
MIRParser
Passes
diff --git a/llvm/lib/Target/ARC/ARCCodeGenPassBuilder.cpp b/llvm/lib/Target/ARC/ARCCodeGenPassBuilder.cpp
new file mode 100644
index 000000000000000..bdec0148bd64867
--- /dev/null
+++ b/llvm/lib/Target/ARC/ARCCodeGenPassBuilder.cpp
@@ -0,0 +1,56 @@
+//===-- ARCCodeGenPassBuilder.cpp ---------------------------------*- C++ -*-=//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+/// \file
+/// This file contains ARC CodeGen pipeline builder.
+/// TODO: Port CodeGen passes to new pass manager.
+//===----------------------------------------------------------------------===//
+
+#include "ARCTargetMachine.h"
+
+#include "llvm/CodeGen/CodeGenPassBuilder.h"
+#include "llvm/MC/MCStreamer.h"
+
+using namespace llvm;
+
+namespace {
+
+class ARCCodeGenPassBuilder : public CodeGenPassBuilder<ARCCodeGenPassBuilder> {
+public:
+ explicit ARCCodeGenPassBuilder(LLVMTargetMachine &TM,
+ CGPassBuilderOption Opts,
+ PassInstrumentationCallbacks *PIC)
+ : CodeGenPassBuilder(TM, Opts, PIC) {}
+ void addPreISel(AddIRPass &addPass) const;
+ void addAsmPrinter(AddMachinePass &, CreateMCStreamer) const;
+ Error addInstSelector(AddMachinePass &) const;
+};
+
+void ARCCodeGenPassBuilder::addPreISel(AddIRPass &addPass) const {
+ // TODO: Add passes pre instruction selection.
+}
+
+void ARCCodeGenPassBuilder::addAsmPrinter(AddMachinePass &addPass,
+ CreateMCStreamer) const {
+ // TODO: Add AsmPrinter.
+}
+
+Error ARCCodeGenPassBuilder::addInstSelector(AddMachinePass &) const {
+ // TODO: Add instruction selector.
+ return Error::success();
+}
+
+} // namespace
+
+Error ARCTargetMachine::buildCodeGenPipeline(
+ ModulePassManager &MPM, MachineFunctionPassManager &MFPM,
+ MachineFunctionAnalysisManager &, raw_pwrite_stream &Out,
+ raw_pwrite_stream *DwoOut, CodeGenFileType FileType,
+ CGPassBuilderOption Opt, PassInstrumentationCallbacks *PIC) {
+ auto CGPB = ARCCodeGenPassBuilder(*this, Opt, PIC);
+ return CGPB.buildPipeline(MPM, MFPM, Out, DwoOut, FileType);
+}
diff --git a/llvm/lib/Target/ARC/ARCTargetMachine.h b/llvm/lib/Target/ARC/ARCTargetMachine.h
index 0fc4243ab44a72c..e2df4ef7fa6b6b7 100644
--- a/llvm/lib/Target/ARC/ARCTargetMachine.h
+++ b/llvm/lib/Target/ARC/ARCTargetMachine.h
@@ -49,6 +49,12 @@ class ARCTargetMachine : public LLVMTargetMachine {
MachineFunctionInfo *
createMachineFunctionInfo(BumpPtrAllocator &Allocator, const Function &F,
const TargetSubtargetInfo *STI) const override;
+
+ Error buildCodeGenPipeline(ModulePassManager &, MachineFunctionPassManager &,
+ MachineFunctionAnalysisManager &,
+ raw_pwrite_stream &, raw_pwrite_stream *,
+ CodeGenFileType, CGPassBuilderOption,
+ PassInstrumentationCallbacks *) override;
};
} // end namespace llvm
diff --git a/llvm/lib/Target/ARC/CMakeLists.txt b/llvm/lib/Target/ARC/CMakeLists.txt
index 9f3c1787c5635e3..3522df427b5ee56 100644
--- a/llvm/lib/Target/ARC/CMakeLists.txt
+++ b/llvm/lib/Target/ARC/CMakeLists.txt
@@ -15,6 +15,7 @@ add_public_tablegen_target(ARCCommonTableGen)
add_llvm_target(ARCCodeGen
ARCAsmPrinter.cpp
ARCBranchFinalize.cpp
+ ARCCodeGenPassBuilder.cpp
ARCExpandPseudos.cpp
ARCFrameLowering.cpp
ARCInstrInfo.cpp
@@ -35,7 +36,9 @@ add_llvm_target(ARCCodeGen
CodeGen
CodeGenTypes
Core
+ IRPrinter
MC
+ Scalar
SelectionDAG
Support
Target
diff --git a/llvm/lib/Target/ARM/ARMCodeGenPassBuilder.cpp b/llvm/lib/Target/ARM/ARMCodeGenPassBuilder.cpp
new file mode 100644
index 000000000000000..42134477e25d120
--- /dev/null
+++ b/llvm/lib/Target/ARM/ARMCodeGenPassBuilder.cpp
@@ -0,0 +1,56 @@
+//===-- ARMCodeGenPassBuilder.cpp ---------------------------------*- C++ -*-=//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+/// \file
+/// This file contains ARM CodeGen pipeline builder.
+/// TODO: Port CodeGen passes to new pass manager.
+//===----------------------------------------------------------------------===//
+
+#include "ARMTargetMachine.h"
+
+#include "llvm/CodeGen/CodeGenPassBuilder.h"
+#include "llvm/MC/MCStreamer.h"
+
+using namespace llvm;
+
+namespace {
+
+class ARMCodeGenPassBuilder : public CodeGenPassBuilder<ARMCodeGenPassBuilder> {
+public:
+ explicit ARMCodeGenPassBuilder(LLVMTargetMachine &TM,
+ CGPassBuilderOption Opts,
+ PassInstrumentationCallbacks *PIC)
+ : CodeGenPassBuilder(TM, Opts, PIC) {}
+ void addPreISel(AddIRPass &addPass) const;
+ void addAsmPrinter(AddMachinePass &, CreateMCStreamer) const;
+ Error addInstSelector(AddMachinePass &) const;
+};
+
+void ARMCodeGenPassBuilder::addPreISel(AddIRPass &addPass) const {
+ // TODO: Add passes pre instruction selection.
+}
+
+void ARMCodeGenPassBuilder::addAsmPrinter(AddMachinePass &addPass,
+ CreateMCStreamer) const {
+ // TODO: Add AsmPrinter.
+}
+
+Error ARMCodeGenPassBuilder::addInstSelector(AddMachinePass &) const {
+ // TODO: Add instruction selector.
+ return Error::success();
+}
+
+} // namespace
+
+Error ARMBaseTargetMachine::buildCodeGenPipeline(
+ ModulePassManager &MPM, MachineFunctionPassManager &MFPM,
+ MachineFunctionAnalysisManager &, raw_pwrite_stream &Out,
+ raw_pwrite_stream *DwoOut, CodeGenFileType FileType,
+ CGPassBuilderOption Opt, PassInstrumentationCallbacks *PIC) {
+ auto CGPB = ARMCodeGenPassBuilder(*this, Opt, PIC);
+ return CGPB.buildPipeline(MPM, MFPM, Out, DwoOut, FileType);
+}
diff --git a/llvm/lib/Target/ARM/ARMTargetMachine.h b/llvm/lib/Target/ARM/ARMTargetMachine.h
index 69d8fa8ada64983..07f044c25e9c09a 100644
--- a/llvm/lib/Target/ARM/ARMTargetMachine.h
+++ b/llvm/lib/Target/ARM/ARMTargetMachine.h
@@ -91,6 +91,12 @@ class ARMBaseTargetMachine : public LLVMTargetMachine {
PerFunctionMIParsingState &PFS,
SMDiagnostic &Error,
SMRange &SourceRange) const override;
+
+ Error buildCodeGenPipeline(ModulePassManager &, MachineFunctionPassManager &,
+ MachineFunctionAnalysisManager &,
+ raw_pwrite_stream &, raw_pwrite_stream *,
+ CodeGenFileType, CGPassBuilderOption,
+ PassInstrumentationCallbacks *) override;
};
/// ARM/Thumb little endian target machine.
diff --git a/llvm/lib/Target/ARM/CMakeLists.txt b/llvm/lib/Target/ARM/CMakeLists.txt
index 3d6af28b4375384..9f94963c1da56a5 100644
--- a/llvm/lib/Target/ARM/CMakeLists.txt
+++ b/llvm/lib/Target/ARM/CMakeLists.txt
@@ -28,6 +28,7 @@ add_llvm_target(ARMCodeGen
ARMBranchTargets.cpp
ARMCallingConv.cpp
ARMCallLowering.cpp
+ ARMCodeGenPassBuilder.cpp
ARMConstantIslandPass.cpp
ARMConstantPoolValue.cpp
ARMExpandPseudoInsts.cpp
@@ -81,6 +82,7 @@ add_llvm_target(ARMCodeGen
Core
GlobalISel
IPO
+ IRPrinter
MC
Scalar
SelectionDAG
diff --git a/llvm/lib/Target/AVR/AVRCodeGenPassBuilder.cpp b/llvm/lib/Target/AVR/AVRCodeGenPassBuilder.cpp
new file mode 100644
index 000000000000000..50dd940961994de
--- /dev/null
+++ b/llvm/lib/Target/AVR/AVRCodeGenPassBuilder.cpp
@@ -0,0 +1,56 @@
+//===-- AVRCodeGenPassBuilder.cpp ---------------------------------*- C++ -*-=//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+/// \file
+/// This file contains AVR CodeGen pipeline builder.
+/// TODO: Port CodeGen passes to new pass manager.
+//===----------------------------------------------------------------------===//
+
+#include "AVRTargetMachine.h"
+
+#include "llvm/CodeGen/CodeGenPassBuilder.h"
+#include "llvm/MC/MCStreamer.h"
+
+using namespace llvm;
+
+namespace {
+
+class AVRCodeGenPassBuilder : public CodeGenPassBuilder<AVRCodeGenPassBuilder> {
+public:
+ explicit AVRCodeGenPassBuilder(LLVMTargetMachine &TM,
+ CGPassBuilderOption Opts,
+ PassInstrumentationCallbacks *PIC)
+ : CodeGenPassBuilder(TM, Opts, PIC) {}
+ void addPreISel(AddIRPass &addPass) const;
+ void addAsmPrinter(AddMachinePass &, CreateMCStreamer) const;
+ Error addInstSelector(AddMachinePass &) const;
+};
+
+void AVRCodeGenPassBuilder::addPreISel(AddIRPass &addPass) const {
+ // TODO: Add passes pre instruction selection.
+}
+
+void AVRCodeGenPassBuilder::addAsmPrinter(AddMachinePass &addPass,
+ CreateMCStreamer) const {
+ // TODO: Add AsmPrinter.
+}
+
+Error AVRCodeGenPassBuilder::addInstSelector(AddMachinePass &) const {
+ // TODO: Add instruction selector.
+ return Error::success();
+}
+
+} // namespace
+
+Error AVRTargetMachine::buildCodeGenPipeline(
+ ModulePassManager &MPM, MachineFunctionPassManager &MFPM,
+ MachineFunctionAnalysisManager &, raw_pwrite_stream &Out,
+ raw_pwrite_stream *DwoOut, CodeGenFileType FileType,
+ CGPassBuilderOption Opt, PassInstrumentationCallbacks *PIC) {
+ auto CGPB = AVRCodeGenPassBuilder(*this, Opt, PIC);
+ return CGPB.buildPipeline(MPM, MFPM, Out, DwoOut, FileType);
+}
diff --git a/llvm/lib/Target/AVR/AVRTargetMachine.h b/llvm/lib/Target/AVR/AVRTargetMachine.h
index c19df2bc301ea4d..4e9c029f8547e6a 100644
--- a/llvm/lib/Target/AVR/AVRTargetMachine.h
+++ b/llvm/lib/Target/AVR/AVRTargetMachine.h
@@ -57,6 +57,12 @@ class AVRTargetMachine : public LLVMTargetMachine {
return getPointerSize(SrcAs) == getPointerSize(DestAs);
}
+ Error buildCodeGenPipeline(ModulePassManager &, MachineFunctionPassManager &,
+ MachineFunctionAnalysisManager &,
+ raw_pwrite_stream &, raw_pwrite_stream *,
+ CodeGenFileType, CGPassBuilderOption,
+ PassInstrumentationCallbacks *) override;
+
private:
std::unique_ptr<TargetLoweringObjectFile> TLOF;
AVRSubtarget SubTarget;
diff --git a/llvm/lib/Target/AVR/CMakeLists.txt b/llvm/lib/Target/AVR/CMakeLists.txt
index 817ba739d8418ac..678dd6575dafcce 100644
--- a/llvm/lib/Target/AVR/CMakeLists.txt
+++ b/llvm/lib/Target/AVR/CMakeLists.txt
@@ -16,6 +16,7 @@ add_public_tablegen_target(AVRCommonTableGen)
add_llvm_target(AVRCodeGen
AVRAsmPrinter.cpp
+ AVRCodeGenPassBuilder.cpp
AVRExpandPseudoInsts.cpp
AVRFrameLowering.cpp
AVRInstrInfo.cpp
@@ -34,14 +35,18 @@ add_llvm_target(AVRCodeGen
LINK_COMPONENTS
AVRDesc
AVRInfo
+ Analysis
AsmPrinter
CodeGen
CodeGenTypes
Core
+ IRPrinter
MC
+ Scalar
SelectionDAG
Support
Target
+ TransformUtils
ADD_TO_COMPONENT
AVR
diff --git a/llvm/lib/Target/BPF/BPFCodeGenPassBuilder.cpp b/llvm/lib/Target/BPF/BPFCodeGenPassBuilder.cpp
new file mode 100644
index 000000000000000..754ad4415cf4cd0
--- /dev/null
+++ b/llvm/lib/Target/BPF/BPFCodeGenPassBuilder.cpp
@@ -0,0 +1,56 @@
+//===-- BPFCodeGenPassBuilder.cpp ---------------------------------*- C++ -*-=//
+//
+// Part of the LLV...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/78552
More information about the llvm-commits
mailing list