From abf1ce3c4ea167e16b88f4e9bf02cd161da3a6dd Mon Sep 17 00:00:00 2001 From: Reid Spencer Date: Tue, 10 Aug 2004 16:29:18 +0000 Subject: [PATCH] Move CompilerDriver.h here. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15609 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/llvmc/CompilerDriver.h | 75 ++++++++++++++++++++++++++++++++++++ tools/llvmc/llvmc.cpp | 2 +- 2 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 tools/llvmc/CompilerDriver.h diff --git a/tools/llvmc/CompilerDriver.h b/tools/llvmc/CompilerDriver.h new file mode 100644 index 00000000000..d56c9b5b6b4 --- /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 989a416ad82..75d37fb4f99 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