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