| 1 | //===- NewPMDriver.h - Function to drive llc with the new PM ----*- 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 | /// |
| 10 | /// A single function which is called to drive the llc behavior for the new |
| 11 | /// PassManager. |
| 12 | /// |
| 13 | /// This is only in a separate TU with a header to avoid including all of the |
| 14 | /// old pass manager headers and the new pass manager headers into the same |
| 15 | /// file. Eventually all of the routines here will get folded back into |
| 16 | /// llc.cpp. |
| 17 | /// |
| 18 | //===----------------------------------------------------------------------===// |
| 19 | #ifndef LLVM_TOOLS_LLC_NEWPMDRIVER_H |
| 20 | #define LLVM_TOOLS_LLC_NEWPMDRIVER_H |
| 21 | |
| 22 | #include "llvm/IR/DiagnosticHandler.h" |
| 23 | #include "llvm/Support/CodeGen.h" |
| 24 | #include <memory> |
| 25 | #include <vector> |
| 26 | |
| 27 | namespace llvm { |
| 28 | class Module; |
| 29 | class TargetLibraryInfoImpl; |
| 30 | class TargetMachine; |
| 31 | class ToolOutputFile; |
| 32 | class LLVMContext; |
| 33 | class MIRParser; |
| 34 | |
| 35 | enum class VerifierKind { None, InputOutput, EachPass }; |
| 36 | |
| 37 | struct LLCDiagnosticHandler : public DiagnosticHandler { |
| 38 | bool handleDiagnostics(const DiagnosticInfo &DI) override; |
| 39 | }; |
| 40 | |
| 41 | int compileModuleWithNewPM(StringRef Arg0, std::unique_ptr<Module> M, |
| 42 | std::unique_ptr<MIRParser> MIR, |
| 43 | std::unique_ptr<TargetMachine> Target, |
| 44 | std::unique_ptr<ToolOutputFile> Out, |
| 45 | std::unique_ptr<ToolOutputFile> DwoOut, |
| 46 | LLVMContext &Context, |
| 47 | const TargetLibraryInfoImpl &TLII, VerifierKind VK, |
| 48 | StringRef PassPipeline, CodeGenFileType FileType); |
| 49 | } // namespace llvm |
| 50 | |
| 51 | #endif |
| 52 | |