1 //===- subzero/src/IceCompiler.h - Compiler driver --------------*- C++ -*-===//
2 //
3 //                        The Subzero Code Generator
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 ///
10 /// \file
11 /// \brief Declares the driver for translating bitcode to native code.
12 ///
13 //===----------------------------------------------------------------------===//
14 
15 #ifndef SUBZERO_SRC_ICECOMPILER_H
16 #define SUBZERO_SRC_ICECOMPILER_H
17 
18 #include "IceDefs.h"
19 
20 namespace llvm {
21 class DataStreamer;
22 }
23 
24 namespace Ice {
25 
26 class ClFlags;
27 
28 /// A compiler driver. It may be called to handle a single compile request.
29 class Compiler {
30   Compiler(const Compiler &) = delete;
31   Compiler &operator=(const Compiler &) = delete;
32 
33 public:
34   Compiler() = default;
35 
36   /// Run the compiler with the given GlobalContext for compilation state. Upon
37   /// error, the Context's error status will be set.
38   void run(const ClFlags &ExtraFlags, GlobalContext &Ctx,
39            std::unique_ptr<llvm::DataStreamer> &&InputStream);
40 };
41 
42 } // end of namespace Ice
43 
44 #endif // SUBZERO_SRC_ICECOMPILER_H
45