LLVM  4.0.0
MIRParser.h
Go to the documentation of this file.
1 //===- MIRParser.h - MIR serialization format parser ------------*- C++ -*-===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This MIR serialization library is currently a work in progress. It can't
11 // serialize machine functions at this time.
12 //
13 // This file declares the functions that parse the MIR serialization format
14 // files.
15 //
16 //===----------------------------------------------------------------------===//
17 
18 #ifndef LLVM_CODEGEN_MIRPARSER_MIRPARSER_H
19 #define LLVM_CODEGEN_MIRPARSER_MIRPARSER_H
20 
22 #include "llvm/IR/Module.h"
24 #include <memory>
25 
26 namespace llvm {
27 
28 class StringRef;
29 class MIRParserImpl;
30 class SMDiagnostic;
31 
32 /// This class initializes machine functions by applying the state loaded from
33 /// a MIR file.
35  std::unique_ptr<MIRParserImpl> Impl;
36 
37 public:
38  MIRParser(std::unique_ptr<MIRParserImpl> Impl);
39  MIRParser(const MIRParser &) = delete;
40  ~MIRParser() override;
41 
42  /// Parse the optional LLVM IR module that's embedded in the MIR file.
43  ///
44  /// A new, empty module is created if the LLVM IR isn't present.
45  /// Returns null if a parsing error occurred.
46  std::unique_ptr<Module> parseLLVMModule();
47 
48  /// Initialize the machine function to the state that's described in the MIR
49  /// file.
50  ///
51  /// Return true if error occurred.
52  bool initializeMachineFunction(MachineFunction &MF) override;
53 };
54 
55 /// This function is the main interface to the MIR serialization format parser.
56 ///
57 /// It reads in a MIR file and returns a MIR parser that can parse the embedded
58 /// LLVM IR module and initialize the machine functions by parsing the machine
59 /// function's state.
60 ///
61 /// \param Filename - The name of the file to parse.
62 /// \param Error - Error result info.
63 /// \param Context - Context which will be used for the parsed LLVM IR module.
64 std::unique_ptr<MIRParser> createMIRParserFromFile(StringRef Filename,
67 
68 /// This function is another interface to the MIR serialization format parser.
69 ///
70 /// It returns a MIR parser that works with the given memory buffer and that can
71 /// parse the embedded LLVM IR module and initialize the machine functions by
72 /// parsing the machine function's state.
73 ///
74 /// \param Contents - The MemoryBuffer containing the machine level IR.
75 /// \param Context - Context which will be used for the parsed LLVM IR module.
76 std::unique_ptr<MIRParser>
77 createMIRParser(std::unique_ptr<MemoryBuffer> Contents, LLVMContext &Context);
78 
79 } // end namespace llvm
80 
81 #endif // LLVM_CODEGEN_MIRPARSER_MIRPARSER_H
LLVMContext & Context
This class initializes machine functions by applying the state loaded from a MIR file.
Definition: MIRParser.h:34
std::unique_ptr< MIRParser > createMIRParser(std::unique_ptr< MemoryBuffer > Contents, LLVMContext &Context)
This function is another interface to the MIR serialization format parser.
Definition: MIRParser.cpp:861
This is an important class for using LLVM in a threaded context.
Definition: LLVMContext.h:48
std::unique_ptr< Module > parseLLVMModule()
Parse the optional LLVM IR module that's embedded in the MIR file.
Definition: MIRParser.cpp:842
Module.h This file contains the declarations for the Module class.
~MIRParser() override
Definition: MIRParser.cpp:840
bool initializeMachineFunction(MachineFunction &MF) override
Initialize the machine function to the state that's described in the MIR file.
Definition: MIRParser.cpp:844
MIRParser(std::unique_ptr< MIRParserImpl > Impl)
Definition: MIRParser.cpp:837
Lightweight error class with error context and mandatory checking.
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:47
This interface provides a way to initialize machine functions after they are created by the machine f...
std::unique_ptr< MIRParser > createMIRParserFromFile(StringRef Filename, SMDiagnostic &Error, LLVMContext &Context)
This function is the main interface to the MIR serialization format parser.
Definition: MIRParser.cpp:848
Instances of this class encapsulate one diagnostic report, allowing printing to a raw_ostream as a ca...
Definition: SourceMgr.h:228