LLVM 19.0.0git
X86CodeGenPassBuilder.cpp
Go to the documentation of this file.
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/MC/MCStreamer.h"
17
18using namespace llvm;
19
20namespace {
21
22class X86CodeGenPassBuilder
23 : public CodeGenPassBuilder<X86CodeGenPassBuilder, X86TargetMachine> {
24public:
25 explicit X86CodeGenPassBuilder(X86TargetMachine &TM,
26 const CGPassBuilderOption &Opts,
28 : CodeGenPassBuilder(TM, Opts, PIC) {}
29 void addPreISel(AddIRPass &addPass) const;
30 void addAsmPrinter(AddMachinePass &, CreateMCStreamer) const;
31 Error addInstSelector(AddMachinePass &) const;
32};
33
34void X86CodeGenPassBuilder::addPreISel(AddIRPass &addPass) const {
35 // TODO: Add passes pre instruction selection.
36}
37
38void X86CodeGenPassBuilder::addAsmPrinter(AddMachinePass &addPass,
39 CreateMCStreamer) const {
40 // TODO: Add AsmPrinter.
41}
42
43Error X86CodeGenPassBuilder::addInstSelector(AddMachinePass &) const {
44 // TODO: Add instruction selector.
45 return Error::success();
46}
47
48} // namespace
49
52 CodeGenFileType FileType, const CGPassBuilderOption &Opt,
54 auto CGPB = X86CodeGenPassBuilder(*this, Opt, PIC);
55 return CGPB.buildPipeline(MPM, Out, DwoOut, FileType);
56}
Interfaces for producing common pass manager configurations.
ModulePassManager MPM
const char LLVMTargetMachineRef TM
PassInstrumentationCallbacks PIC
This class provides access to building LLVM's passes.
Error addInstSelector(AddMachinePass &) const
addInstSelector - This method should install an instruction selector pass, which converts from LLVM c...
void addPreISel(AddIRPass &) const
{{@ For GlobalISel
void addAsmPrinter(AddMachinePass &, CreateMCStreamer) const
Lightweight error class with error context and mandatory checking.
Definition: Error.h:160
static ErrorSuccess success()
Create a success value.
Definition: Error.h:334
This class manages callbacks registration, as well as provides a way for PassInstrumentation to pass ...
Error buildCodeGenPipeline(ModulePassManager &, raw_pwrite_stream &, raw_pwrite_stream *, CodeGenFileType, const CGPassBuilderOption &, PassInstrumentationCallbacks *) override
An abstract base class for streams implementations that also support a pwrite operation.
Definition: raw_ostream.h:444
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18
CodeGenFileType
These enums are meant to be passed into addPassesToEmitFile to indicate what type of file to emit,...
Definition: CodeGen.h:83