aboutsummaryrefslogtreecommitdiff
path: root/tools/llvmc
diff options
context:
space:
mode:
Diffstat (limited to 'tools/llvmc')
-rw-r--r--tools/llvmc/CompilerDriver.h75
-rw-r--r--tools/llvmc/llvmc.cpp2
2 files changed, 76 insertions, 1 deletions
diff --git a/tools/llvmc/CompilerDriver.h b/tools/llvmc/CompilerDriver.h
new file mode 100644
index 0000000000..d56c9b5b6b
--- /dev/null
+++ b/tools/llvmc/CompilerDriver.h
@@ -0,0 +1,75 @@
+//===- CompilerDriver.h - Compiler Driver ---------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file was developed by Reid Spencer and is distributed under the
+// University of Illinois Open Source License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file declares the CompilerDriver class which implements the bulk of the
+// LLVM Compiler Driver program (llvmc).
+//
+//===------------------------------------------------------------------------===
+
+namespace llvm {
+ /// This class provides the high level interface to the LLVM Compiler Driver.
+ /// The driver's purpose is to make it easier for compiler writers and users
+ /// of LLVM to utilize the compiler toolkits and LLVM toolset by learning only
+ /// the interface of one program (llvmc).
+ ///
+ /// @see llvmc.cpp
+ /// @brief The interface to the LLVM Compiler Driver.
+ class CompilerDriver {
+ /// @name Types
+ /// @{
+ public:
+ typedef unsigned OptimizationLevel;
+ enum Phases {
+ PREPROCESSING, ///< Source language combining, filtering, substitution
+ TRANSLATION, ///< Translate source -> LLVM bytecode/assembly
+ OPTIMIZATION, ///< Optimize translation result
+ LINKING, ///< Link bytecode and native code
+ ASSEMBLY, ///< Convert program to executable
+ };
+
+ enum OptimizationLevels {
+ OPT_NONE,
+ OPT_FAST_COMPILE,
+ OPT_SIMPLE,
+ OPT_AGGRESSIVE,
+ OPT_LINK_TIME,
+ OPT_AGGRESSIVE_LINK_TIME
+ };
+
+ /// @}
+ /// @name Constructors
+ /// @{
+ public:
+ CompilerDriver();
+
+ /// @}
+ /// @name Accessors
+ /// @{
+ public:
+ void execute(); ///< Execute the actions requested
+
+ /// @}
+ /// @name Mutators
+ /// @{
+ public:
+ /// @brief Set the optimization level for the compilation
+ void setOptimization( OptimizationLevel level );
+ void setFinalPhase( Phases phase );
+
+ /// @}
+ /// @name Data
+ /// @{
+ public:
+ Phases finalPhase;
+ OptimizationLevel optLevel;
+
+ /// @}
+
+ };
+}
diff --git a/tools/llvmc/llvmc.cpp b/tools/llvmc/llvmc.cpp
index 989a416ad8..75d37fb4f9 100644
--- a/tools/llvmc/llvmc.cpp
+++ b/tools/llvmc/llvmc.cpp
@@ -14,7 +14,7 @@
//
//===------------------------------------------------------------------------===
-#include "llvm/Driver/CompilerDriver.h"
+#include "CompilerDriver.h"
#include "llvm/System/Signals.h"
#include "Support/CommandLine.h"
#include <iostream>