1 //===-- X86CodeGenPassBuilder.cpp ---------------------------------*- C++ -*-=//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 /// \file
9 /// This file contains X86 CodeGen pipeline builder.
10 /// TODO: Port CodeGen passes to new pass manager.
11 //===----------------------------------------------------------------------===//
12
13 #include "X86TargetMachine.h"
14
15 #include "llvm/CodeGen/CodeGenPassBuilder.h"
16 #include "llvm/MC/MCStreamer.h"
17
18 using namespace llvm;
19
20 namespace {
21
22 class X86CodeGenPassBuilder : public CodeGenPassBuilder<X86CodeGenPassBuilder> {
23 public:
X86CodeGenPassBuilder(LLVMTargetMachine & TM,CGPassBuilderOption Opts,PassInstrumentationCallbacks * PIC)24 explicit X86CodeGenPassBuilder(LLVMTargetMachine &TM,
25 CGPassBuilderOption Opts,
26 PassInstrumentationCallbacks *PIC)
27 : CodeGenPassBuilder(TM, Opts, PIC) {}
28 void addPreISel(AddIRPass &addPass) const;
29 void addAsmPrinter(AddMachinePass &, CreateMCStreamer) const;
30 Error addInstSelector(AddMachinePass &) const;
31 };
32
addPreISel(AddIRPass & addPass) const33 void X86CodeGenPassBuilder::addPreISel(AddIRPass &addPass) const {
34 // TODO: Add passes pre instruction selection.
35 }
36
addAsmPrinter(AddMachinePass & addPass,CreateMCStreamer) const37 void X86CodeGenPassBuilder::addAsmPrinter(AddMachinePass &addPass,
38 CreateMCStreamer) const {
39 // TODO: Add AsmPrinter.
40 }
41
addInstSelector(AddMachinePass &) const42 Error X86CodeGenPassBuilder::addInstSelector(AddMachinePass &) const {
43 // TODO: Add instruction selector.
44 return Error::success();
45 }
46
47 } // namespace
48
buildCodeGenPipeline(ModulePassManager & MPM,MachineFunctionPassManager & MFPM,MachineFunctionAnalysisManager &,raw_pwrite_stream & Out,raw_pwrite_stream * DwoOut,CodeGenFileType FileType,CGPassBuilderOption Opt,PassInstrumentationCallbacks * PIC)49 Error X86TargetMachine::buildCodeGenPipeline(
50 ModulePassManager &MPM, MachineFunctionPassManager &MFPM,
51 MachineFunctionAnalysisManager &, raw_pwrite_stream &Out,
52 raw_pwrite_stream *DwoOut, CodeGenFileType FileType,
53 CGPassBuilderOption Opt, PassInstrumentationCallbacks *PIC) {
54 auto CGPB = X86CodeGenPassBuilder(*this, Opt, PIC);
55 return CGPB.buildPipeline(MPM, MFPM, Out, DwoOut, FileType);
56 }
57