|
41 | 41 | #include "llvm/MC/MCTargetOptions.h"
|
42 | 42 | #include "llvm/MC/TargetRegistry.h"
|
43 | 43 | #include "llvm/Pass.h"
|
| 44 | +#include "llvm/Passes/CodeGenPassBuilder.h" |
44 | 45 | #include "llvm/Passes/PassBuilder.h"
|
45 | 46 | #include "llvm/Support/CodeGen.h"
|
46 | 47 | #include "llvm/Support/CommandLine.h"
|
@@ -562,8 +563,39 @@ class AArch64PassConfig : public TargetPassConfig {
|
562 | 563 | std::unique_ptr<CSEConfigBase> getCSEConfig() const override;
|
563 | 564 | };
|
564 | 565 |
|
| 566 | +class AArch64CodeGenPassBuilder |
| 567 | + : public CodeGenPassBuilder<AArch64CodeGenPassBuilder, |
| 568 | + AArch64TargetMachine> { |
| 569 | + using Base = |
| 570 | + CodeGenPassBuilder<AArch64CodeGenPassBuilder, AArch64TargetMachine>; |
| 571 | + |
| 572 | +public: |
| 573 | + AArch64CodeGenPassBuilder(AArch64TargetMachine &TM, |
| 574 | + const CGPassBuilderOption &Opts, |
| 575 | + PassInstrumentationCallbacks *PIC) |
| 576 | + : CodeGenPassBuilder(TM, Opts, PIC) {} |
| 577 | + void addPreISel(AddIRPass &) const { |
| 578 | + // TODO: Add pre-isel passes |
| 579 | + } |
| 580 | + void addAsmPrinter(AddMachinePass &addPass, CreateMCStreamer) const { |
| 581 | + // TODO: Add asm printer passes |
| 582 | + } |
| 583 | + Error addInstSelector(AddMachinePass &) const { |
| 584 | + // TODO: Add instruction selector passes |
| 585 | + return Error::success(); |
| 586 | + } |
| 587 | +}; |
| 588 | + |
565 | 589 | } // end anonymous namespace
|
566 | 590 |
|
| 591 | +Error AArch64TargetMachine::buildCodeGenPipeline( |
| 592 | + ModulePassManager &MPM, raw_pwrite_stream &Out, raw_pwrite_stream *DwoOut, |
| 593 | + CodeGenFileType FileType, const CGPassBuilderOption &Opts, |
| 594 | + PassInstrumentationCallbacks *PIC) { |
| 595 | + AArch64CodeGenPassBuilder Builder(*this, Opts, PIC); |
| 596 | + return Builder.buildPipeline(MPM, Out, DwoOut, FileType); |
| 597 | +} |
| 598 | + |
567 | 599 | void AArch64TargetMachine::registerPassBuilderCallbacks(PassBuilder &PB) {
|
568 | 600 |
|
569 | 601 | PB.registerLateLoopOptimizationsEPCallback(
|
|
0 commit comments