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 struct LLCDiagnosticHandler : public DiagnosticHandler {
36   bool handleDiagnostics(const DiagnosticInfo &DI) override;
37 };
38 
39 int compileModuleWithNewPM(StringRef Arg0, std::unique_ptr<Module> M,
40                            std::unique_ptr<MIRParser> MIR,
41                            std::unique_ptr<TargetMachine> Target,
42                            std::unique_ptr<ToolOutputFile> Out,
43                            std::unique_ptr<ToolOutputFile> DwoOut,
44                            LLVMContext &Context,
45                            const TargetLibraryInfoImpl &TLII, bool NoVerify,
46                            StringRef PassPipeline, CodeGenFileType FileType);
47 } // namespace llvm
48 
49 #endif
50