Path: blob/main/contrib/llvm-project/llvm/lib/Target/X86/X86CodeGenPassBuilder.cpp
35266 views
//===-- X86CodeGenPassBuilder.cpp ---------------------------------*- C++ -*-=//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//7/// \file8/// This file contains X86 CodeGen pipeline builder.9/// TODO: Port CodeGen passes to new pass manager.10//===----------------------------------------------------------------------===//1112#include "X86ISelDAGToDAG.h"13#include "X86TargetMachine.h"1415#include "llvm/MC/MCStreamer.h"16#include "llvm/Passes/CodeGenPassBuilder.h"17#include "llvm/Passes/PassBuilder.h"1819using namespace llvm;2021namespace {2223class X86CodeGenPassBuilder24: public CodeGenPassBuilder<X86CodeGenPassBuilder, X86TargetMachine> {25public:26explicit X86CodeGenPassBuilder(X86TargetMachine &TM,27const CGPassBuilderOption &Opts,28PassInstrumentationCallbacks *PIC)29: CodeGenPassBuilder(TM, Opts, PIC) {}30void addPreISel(AddIRPass &addPass) const;31void addAsmPrinter(AddMachinePass &, CreateMCStreamer) const;32Error addInstSelector(AddMachinePass &) const;33};3435void X86CodeGenPassBuilder::addPreISel(AddIRPass &addPass) const {36// TODO: Add passes pre instruction selection.37}3839void X86CodeGenPassBuilder::addAsmPrinter(AddMachinePass &addPass,40CreateMCStreamer) const {41// TODO: Add AsmPrinter.42}4344Error X86CodeGenPassBuilder::addInstSelector(AddMachinePass &addPass) const {45// TODO: Add instruction selector related passes.46addPass(X86ISelDAGToDAGPass(TM));47return Error::success();48}4950} // namespace5152void X86TargetMachine::registerPassBuilderCallbacks(PassBuilder &PB) {53#define GET_PASS_REGISTRY "X86PassRegistry.def"54#include "llvm/Passes/TargetPassRegistry.inc"55}5657Error X86TargetMachine::buildCodeGenPipeline(58ModulePassManager &MPM, raw_pwrite_stream &Out, raw_pwrite_stream *DwoOut,59CodeGenFileType FileType, const CGPassBuilderOption &Opt,60PassInstrumentationCallbacks *PIC) {61auto CGPB = X86CodeGenPassBuilder(*this, Opt, PIC);62return CGPB.buildPipeline(MPM, Out, DwoOut, FileType);63}646566